From 3bdee8f1feb131f308a208dfd73f4f4569d0dc94 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 3 Feb 2025 17:19:06 -0500 Subject: [PATCH 001/106] feat: wip add animatable components + add generic slot component + start with accordion for v2 of primitives --- .../app/(components)/accordion.tsx | 16 +- .../components/ui/accordion.tsx | 146 ++++--- apps/expo-nativewind/components/ui/button.tsx | 2 +- apps/expo-nativewind/package.json | 1 + package.json | 4 +- packages/accordion-new/package.json | 91 +++++ .../accordion-new/src/accordion-native.tsx | 279 +++++++++++++ packages/accordion-new/src/accordion-web.tsx | 49 +++ packages/accordion-new/src/accordion.tsx | 47 +++ packages/accordion-new/src/accordion.web.tsx | 367 ++++++++++++++++++ .../src/convert-style-for-web.ts | 296 ++++++++++++++ packages/accordion-new/src/index.ts | 1 + packages/accordion-new/src/types/base.ts | 52 +++ .../accordion-new/src/types/native-only.ts | 30 ++ packages/accordion-new/src/types/universal.ts | 71 ++++ packages/accordion-new/src/types/web-only.ts | 52 +++ packages/accordion-new/tsconfig.json | 29 ++ packages/accordion-new/tsup.config.ts | 22 ++ packages/animatable/index.ts | 4 + packages/animatable/package.json | 53 +++ packages/animatable/src/animatable-image.tsx | 27 ++ .../animatable/src/animatable-pressable.tsx | 33 ++ packages/animatable/src/animatable-text.tsx | 30 ++ packages/animatable/src/animatable-view.tsx | 29 ++ packages/animatable/tsconfig.json | 29 ++ packages/animatable/tsup.config.ts | 18 + packages/avatar/src/types.ts | 5 +- packages/hooks/src/useAugmentedRef.tsx | 14 +- packages/slot/src/slot.tsx | 33 +- packages/types/src/index.ts | 83 +++- pnpm-lock.yaml | 84 ++++ 31 files changed, 1903 insertions(+), 94 deletions(-) create mode 100644 packages/accordion-new/package.json create mode 100644 packages/accordion-new/src/accordion-native.tsx create mode 100644 packages/accordion-new/src/accordion-web.tsx create mode 100644 packages/accordion-new/src/accordion.tsx create mode 100644 packages/accordion-new/src/accordion.web.tsx create mode 100644 packages/accordion-new/src/convert-style-for-web.ts create mode 100644 packages/accordion-new/src/index.ts create mode 100644 packages/accordion-new/src/types/base.ts create mode 100644 packages/accordion-new/src/types/native-only.ts create mode 100644 packages/accordion-new/src/types/universal.ts create mode 100644 packages/accordion-new/src/types/web-only.ts create mode 100644 packages/accordion-new/tsconfig.json create mode 100644 packages/accordion-new/tsup.config.ts create mode 100644 packages/animatable/index.ts create mode 100644 packages/animatable/package.json create mode 100644 packages/animatable/src/animatable-image.tsx create mode 100644 packages/animatable/src/animatable-pressable.tsx create mode 100644 packages/animatable/src/animatable-text.tsx create mode 100644 packages/animatable/src/animatable-view.tsx create mode 100644 packages/animatable/tsconfig.json create mode 100644 packages/animatable/tsup.config.ts diff --git a/apps/expo-nativewind/app/(components)/accordion.tsx b/apps/expo-nativewind/app/(components)/accordion.tsx index b40d288b..56c9fa3a 100644 --- a/apps/expo-nativewind/app/(components)/accordion.tsx +++ b/apps/expo-nativewind/app/(components)/accordion.tsx @@ -1,15 +1,27 @@ +import * as React from 'react'; import { View } from 'react-native'; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, + AccordionTriggerRef, } from '~/components/ui/accordion'; +import { Button } from '~/components/ui/button'; import { Text } from '~/components/ui/text'; export default function AccordionScreen() { + const ref = React.useRef(null); return ( + - - Is it accessible? + + {({ pressed }) => Is it accessible? {pressed ? 'pressed' : 'not pressed'}} Yes. It adheres to the WAI-ARIA design pattern. diff --git a/apps/expo-nativewind/components/ui/accordion.tsx b/apps/expo-nativewind/components/ui/accordion.tsx index 6d214765..ce3be2ea 100644 --- a/apps/expo-nativewind/components/ui/accordion.tsx +++ b/apps/expo-nativewind/components/ui/accordion.tsx @@ -1,6 +1,6 @@ -import * as AccordionPrimitive from '@rn-primitives/accordion'; +import * as AccordionPrimitive from '@rn-primitives/accordion-new'; import * as React from 'react'; -import { Platform, Pressable, View } from 'react-native'; +import { Platform, PressableProps, PressableStateCallbackType, View } from 'react-native'; import Animated, { Extrapolation, FadeIn, @@ -12,100 +12,122 @@ import Animated, { useDerivedValue, withTiming, } from 'react-native-reanimated'; +import { TextClassContext } from '~/components/ui/text'; import { ChevronDown } from '~/lib/icons/ChevronDown'; import { cn } from '~/lib/utils'; -import { TextClassContext } from '~/components/ui/text'; +import { Slot } from '@rn-primitives/slot'; + +type AccordionTriggerRef = AccordionPrimitive.TriggerRef; -const Accordion = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ children, ...props }, ref) => { +function Accordion({ children, ...props }: AccordionPrimitive.RootProps) { + const Inner = Platform.OS === 'web' ? Slot : Animated.View; return ( - - {children} + + + <>{children} + ); -}); - -Accordion.displayName = AccordionPrimitive.Root.displayName; +} -const AccordionItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, value, ...props }, ref) => { +function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemProps) { return ( - - - + ); -}); -AccordionItem.displayName = AccordionPrimitive.Item.displayName; - -const Trigger = Platform.OS === 'web' ? View : Pressable; +} const AccordionTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + AccordionPrimitive.TriggerRef, + AccordionPrimitive.TriggerProps >(({ className, children, ...props }, ref) => { const { isExpanded } = AccordionPrimitive.useItemContext(); - const progress = useDerivedValue(() => - isExpanded ? withTiming(1, { duration: 250 }) : withTiming(0, { duration: 200 }) + const progress = useDerivedValue( + () => (isExpanded ? withTiming(1, { duration: 250 }) : withTiming(0, { duration: 200 })), + [isExpanded] + ); + const chevronStyle = useAnimatedStyle( + () => ({ + transform: [{ rotate: `${progress.value * 180}deg` }], + opacity: interpolate(progress.value, [0, 1], [1, 0.8], Extrapolation.CLAMP), + }), + [progress] ); - const chevronStyle = useAnimatedStyle(() => ({ - transform: [{ rotate: `${progress.value * 180}deg` }], - opacity: interpolate(progress.value, [0, 1], [1, 0.8], Extrapolation.CLAMP), - })); + const IconWrapper = Platform.OS === 'web' ? Slot : Animated.View; return ( - - - <>{children} - - - - + svg]:rotate-180' }), + className + )} + {...props} + > + {renderPressableChildren(children, (children) => { + return ( + <> + {children} + + + + + ); + })} ); }); -AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; -const AccordionContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { - const { isExpanded } = AccordionPrimitive.useItemContext(); +// TODO: move this to nr-primitives +function renderPressableChildren( + children: PressableProps['children'], + render: (children: React.ReactNode) => React.ReactNode +) { + return typeof children === 'function' + ? (state: PressableStateCallbackType) => render(children(state)) + : render(children); +} + +function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( {children} ); -}); +} function InnerContent({ children, className }: { children: React.ReactNode; className?: string }) { if (Platform.OS === 'web') { @@ -122,6 +144,6 @@ function InnerContent({ children, className }: { children: React.ReactNode; clas ); } -AccordionContent.displayName = AccordionPrimitive.Content.displayName; - export { Accordion, AccordionContent, AccordionItem, AccordionTrigger }; + +export type { AccordionTriggerRef }; diff --git a/apps/expo-nativewind/components/ui/button.tsx b/apps/expo-nativewind/components/ui/button.tsx index 5e0e4a09..699c3b98 100644 --- a/apps/expo-nativewind/components/ui/button.tsx +++ b/apps/expo-nativewind/components/ui/button.tsx @@ -32,7 +32,7 @@ const buttonVariants = cva( ); const buttonTextVariants = cva( - 'web:whitespace-nowrap text-sm native:text-base font-medium text-foreground web:transition-colors', + 'web:whitespace-nowrap web:select-none text-sm native:text-base font-medium text-foreground web:transition-colors', { variants: { variant: { diff --git a/apps/expo-nativewind/package.json b/apps/expo-nativewind/package.json index 35e8a943..2c00d8ae 100644 --- a/apps/expo-nativewind/package.json +++ b/apps/expo-nativewind/package.json @@ -14,6 +14,7 @@ "dependencies": { "@react-native-async-storage/async-storage": "1.23.1", "@react-navigation/native": "^7.0.0", + "@rn-primitives/accordion-new": "workspace:*", "@rn-primitives/accordion": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", diff --git a/package.json b/package.json index 7f3cdfe3..5aa15349 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,8 @@ "name": "@rn-primitives/monorepo", "private": true, "scripts": { - "dev": "turbo dev --concurrency=34", - "dev:primitives": "turbo dev --filter=./packages/* --concurrency=33", + "dev": "turbo dev --concurrency=38", + "dev:primitives": "turbo dev --filter=./packages/* --concurrency=35", "dev:expo-nativewind": "turbo dev --filter=./apps/expo-nativewind", "dev:nextjs-nativewind": "turbo dev --filter=./apps/nextjs-nativewind", "dev:docs": "turbo dev --filter=./apps/docs", diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json new file mode 100644 index 00000000..684c805b --- /dev/null +++ b/packages/accordion-new/package.json @@ -0,0 +1,91 @@ +{ + "name": "@rn-primitives/accordion-new", + "version": "1.1.0", + "description": "Primitive accordion", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.js", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./accordion-native": { + "import": "./dist/accordion-native.mjs", + "require": "./dist/accordion-native.js", + "types": "./dist/accordion-native.d.ts", + "default": "./dist/accordion-native.js" + }, + "./accordion-web": { + "import": "./dist/accordion-web.mjs", + "require": "./dist/accordion-web.js", + "types": "./dist/accordion-web.d.ts", + "default": "./dist/accordion-web.js" + }, + "./dist/accordion": { + "import": "./dist/accordion.mjs", + "require": "./dist/accordion.js", + "types": "./dist/accordion.d.ts", + "default": "./dist/accordion.js" + }, + "./dist/accordion-native": { + "import": "./dist/accordion-native.mjs", + "require": "./dist/accordion-native.js", + "types": "./dist/accordion-native.d.ts", + "default": "./dist/accordion-native.js" + }, + "./dist/accordion-web": { + "import": "./dist/accordion-web.mjs", + "require": "./dist/accordion-web.js", + "types": "./dist/accordion-web.d.ts", + "default": "./dist/accordion-web.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "clean": "rm -rf dist", + "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", + "pub:next": "pnpm publish --no-git-checks --access public --tag next", + "pub:release": "pnpm publish --access public" + }, + "dependencies": { + "@radix-ui/react-accordion": "^1.2.0", + "@react-native/normalize-colors": "^0.77.0", + "@rn-primitives/animatable": "workspace:*", + "@rn-primitives/hooks": "workspace:*", + "@rn-primitives/slot": "workspace:*", + "@rn-primitives/types": "workspace:*" + }, + "devDependencies": { + "@tsconfig/react-native": "^1.0.1", + "@types/react": "~18.3.12", + "react": "18.3.1", + "react-native": "0.76.3", + "react-native-reanimated": "~3.16.2", + "tsup": "^8.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-reanimated": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + } + } +} diff --git a/packages/accordion-new/src/accordion-native.tsx b/packages/accordion-new/src/accordion-native.tsx new file mode 100644 index 00000000..a91f0e1e --- /dev/null +++ b/packages/accordion-new/src/accordion-native.tsx @@ -0,0 +1,279 @@ +import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; +import { Slot } from '@rn-primitives/slot'; +import * as React from 'react'; +import { type GestureResponderEvent } from 'react-native'; +import { AnimatablePressable, AnimatableView } from '@rn-primitives/animatable'; +import type { + BaseAccordionContentProps, + BaseAccordionHeaderProps, + BaseAccordionItemProps, + BaseAccordionRootProps, + BaseAccordionTriggerProps, + BaseAccordionTriggerRef, +} from './types/base'; +import type { + AccordionContentNativeOnlyProps, + AccordionContentNativeOnlyRef, + AccordionHeaderNativeOnlyProps, + AccordionHeaderNativeOnlyRef, + AccordionItemNativeOnlyProps, + AccordionItemNativeOnlyRef, + AccordionRootNativeOnlyProps, + AccordionRootNativeOnlyRef, + AccordionTriggerNativeOnlyProps, + AccordionTriggerNativeOnlyRef, +} from './types/native-only'; + +const AccordionContext = React.createContext | null>(null); + +type AccordionRootNativeProps = AccordionRootNativeOnlyProps & BaseAccordionRootProps; +type AccordionRootNativeRef = AccordionRootNativeOnlyRef; + +const Root = React.forwardRef( + ( + { + asChild, + type, + disabled = false, + collapsible = true, + value: valueProp, + onValueChange: onValueChangeProps, + defaultValue, + orientation, + dir, + ...viewProps + }, + ref + ) => { + const [value = type === 'multiple' ? [] : undefined, onValueChange] = useControllableState< + (string | undefined) | string[] + >({ + prop: valueProp, + defaultProp: defaultValue, + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + + const Component = asChild ? Slot : AnimatableView; + return ( + + + + ); + } +); + +Root.displayName = 'AccordionRootNative'; + +function useRootContext() { + const context = React.useContext(AccordionContext); + if (!context) { + throw new Error( + 'Accordion compound components cannot be rendered outside the Accordion component' + ); + } + return context; +} + +type AccordionItemContextType = Omit & { + nativeID: string; + isExpanded: boolean; +}; + +const AccordionItemContext = React.createContext(null); + +type AccordionItemNativeProps = AccordionItemNativeOnlyProps & BaseAccordionItemProps; +type AccordionItemNativeRef = AccordionItemNativeOnlyRef; + +const Item = React.forwardRef( + ({ asChild, value, disabled, ...viewProps }, ref) => { + const { value: rootValue } = useRootContext(); + const nativeID = React.useId(); + + const Component = asChild ? Slot : AnimatableView; + return ( + + + + ); + } +); + +Item.displayName = 'AccordionItemNative'; + +function useItemContext() { + const context = React.useContext(AccordionItemContext); + if (!context) { + throw new Error( + 'AccordionItem compound components cannot be rendered outside the AccordionItem component' + ); + } + return context; +} + +type AccordionHeaderNativeProps = AccordionHeaderNativeOnlyProps & BaseAccordionHeaderProps; +type AccordionHeaderNativeRef = AccordionHeaderNativeOnlyRef; + +const Header = React.forwardRef( + ({ asChild, ...props }, ref) => { + const { disabled: rootDisabled } = useRootContext(); + const { disabled: itemDisabled, isExpanded } = useItemContext(); + + const Component = asChild ? Slot : AnimatableView; + return ( + + ); + } +); + +Header.displayName = 'AccordionHeaderNative'; + +type AccordionTriggerNativeProps = AccordionTriggerNativeOnlyProps & BaseAccordionTriggerProps; +type AccordionTriggerNativeRef = AccordionTriggerNativeOnlyRef & BaseAccordionTriggerRef; + +const Trigger = React.forwardRef( + ({ asChild, onPress: onPressProp, disabled: disabledProp, ...props }, ref) => { + const { + disabled: rootDisabled, + type, + onValueChange, + value: rootValue, + collapsible, + } = useRootContext(); + const { nativeID, disabled: itemDisabled, value, isExpanded } = useItemContext(); + + const methods = React.useMemo(() => { + return { + trigger: () => { + if (type === 'single') { + const newValue = collapsible ? (value === rootValue ? undefined : value) : value; + onValueChange?.(newValue as string[] & string); + } + if (type === 'multiple') { + const rootToArray = toStringArray(rootValue); + const newValue = collapsible + ? rootToArray.includes(value) + ? rootToArray.filter((val) => val !== value) + : rootToArray.concat(value) + : [...new Set(rootToArray.concat(value))]; + onValueChange?.(newValue as string[] & string); + } + }, + }; + }, [collapsible, onValueChange, rootValue, type, value]); + + const triggerRef = useAugmentedRef({ ref, methods }); + + const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); + + const accessibilityState = React.useMemo(() => { + return { + expanded: isExpanded, + disabled: isDisabled, + }; + }, [isDisabled, isExpanded]); + + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + methods.trigger(); + if (typeof onPressProp === 'function') { + onPressProp?.(ev); + } + }, + [onPressProp, methods] + ); + + const Component = asChild ? Slot : AnimatablePressable; + return ( + + ); + } +); + +Trigger.displayName = 'AccordionTriggerNative'; + +type AccordionContentNativeProps = AccordionContentNativeOnlyProps & BaseAccordionContentProps; +type AccordionContentNativeRef = AccordionContentNativeOnlyRef; + +const Content = React.forwardRef( + ({ asChild, forceMount, ...props }, ref) => { + const { type } = useRootContext(); + const { nativeID, isExpanded } = useItemContext(); + + if (!forceMount) { + if (!isExpanded) { + return null; + } + } + + const Component = asChild ? Slot : AnimatableView; + return ( + + ); + } +); + +Content.displayName = 'AccordionContentNative'; + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; + +export type { + AccordionContentNativeProps as ContentProps, + AccordionContentNativeRef as ContentRef, + AccordionHeaderNativeProps as HeaderProps, + AccordionHeaderNativeRef as HeaderRef, + AccordionItemNativeProps as ItemProps, + AccordionItemNativeRef as ItemRef, + AccordionRootNativeProps as RootProps, + AccordionRootNativeRef as RootRef, + AccordionTriggerNativeProps as TriggerProps, + AccordionTriggerNativeRef as TriggerRef, +}; + +function toStringArray(value?: string | string[]) { + return Array.isArray(value) ? value : value ? [value] : []; +} + +function isItemExpanded(rootValue: string | string[] | undefined, value: string) { + return Array.isArray(rootValue) ? rootValue.includes(value) : rootValue === value; +} diff --git a/packages/accordion-new/src/accordion-web.tsx b/packages/accordion-new/src/accordion-web.tsx new file mode 100644 index 00000000..c9cbc88c --- /dev/null +++ b/packages/accordion-new/src/accordion-web.tsx @@ -0,0 +1,49 @@ +export { Content, Header, Item, Accordion as Root, Trigger } from '@radix-ui/react-accordion'; +import { + BaseAccordionContentProps, + BaseAccordionHeaderProps, + BaseAccordionItemProps, + BaseAccordionRootProps, + BaseAccordionTriggerProps, + BaseAccordionTriggerRef, +} from './types/base'; +import { + AccordionContentWebOnlyProps, + AccordionContentWebOnlyRef, + AccordionHeaderWebOnlyProps, + AccordionHeaderWebOnlyRef, + AccordionItemWebOnlyProps, + AccordionItemWebOnlyRef, + AccordionRootWebOnlyProps, + AccordionRootWebOnlyRef, + AccordionTriggerWebOnlyProps, + AccordionTriggerWebOnlyRef, +} from './types/web-only'; + +type AccordionContentWebProps = BaseAccordionContentProps & AccordionContentWebOnlyProps; +type AccordionContentWebRef = AccordionContentWebOnlyRef; + +type AccordionHeaderWebProps = BaseAccordionHeaderProps & AccordionHeaderWebOnlyProps; +type AccordionHeaderWebRef = AccordionHeaderWebOnlyRef; + +type AccordionItemWebProps = BaseAccordionItemProps & AccordionItemWebOnlyProps; +type AccordionItemWebRef = AccordionItemWebOnlyRef; + +type AccordionRootWebProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; +type AccordionRootWebRef = AccordionRootWebOnlyRef; + +type AccordionTriggerWebProps = BaseAccordionTriggerProps & AccordionTriggerWebOnlyProps; +type AccordionTriggerWebRef = AccordionTriggerWebOnlyRef & BaseAccordionTriggerRef; + +export type { + AccordionContentWebProps as ContentProps, + AccordionContentWebRef as ContentRef, + AccordionHeaderWebProps as HeaderProps, + AccordionHeaderWebRef as HeaderRef, + AccordionItemWebProps as ItemProps, + AccordionItemWebRef as ItemRef, + AccordionRootWebProps as RootProps, + AccordionRootWebRef as RootRef, + AccordionTriggerWebProps as TriggerProps, + AccordionTriggerWebRef as TriggerRef, +}; diff --git a/packages/accordion-new/src/accordion.tsx b/packages/accordion-new/src/accordion.tsx new file mode 100644 index 00000000..0c9192d1 --- /dev/null +++ b/packages/accordion-new/src/accordion.tsx @@ -0,0 +1,47 @@ +import * as React from 'react'; +import { + Content as ContentNative, + Header as HeaderNative, + Item as ItemNative, + Root as RootNative, + Trigger as TriggerNative, + TriggerRef as TriggerNativeRef, + useItemContext, + useRootContext, +} from './accordion-native'; +import type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types/universal'; + +function Root({ web: _web, native, ...props }: RootProps) { + return ; +} + +function Content({ web: _web, native, ...props }: ContentProps) { + return ; +} + +function Header({ web: _web, native, ...props }: HeaderProps) { + return ; +} + +function Item({ web: _web, native, ...props }: ItemProps) { + return ; +} + +const Trigger = React.forwardRef( + ({ web: _web, native, ...props }, ref) => { + return ( + } {...props} {...native} /> + ); + } +); + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; + +export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; diff --git a/packages/accordion-new/src/accordion.web.tsx b/packages/accordion-new/src/accordion.web.tsx new file mode 100644 index 00000000..753718e1 --- /dev/null +++ b/packages/accordion-new/src/accordion.web.tsx @@ -0,0 +1,367 @@ +import * as React from 'react'; +import { + Content as ContentWeb, + Header as HeaderWeb, + Item as ItemWeb, + Root as RootWeb, + Trigger as TriggerWeb, +} from './accordion-web'; +import { BaseAccordionMultipleProps, BaseAccordionSingleProps } from './types/base'; +import type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types/universal'; + +import { convertStyleForWeb } from './convert-style-for-web'; +import { PressableProps, PressableStateCallbackType } from 'react-native'; + +// TODO: add contexts + +function Root({ native: _native, web, ...props }: RootProps) { + return ; +} + +function Content({ native: _native, style, web, ...props }: ContentProps) { + return ; +} + +function Header({ native: _native, style, web, ...props }: HeaderProps) { + return ; +} + +function Item({ native: _native, style, web, ...props }: ItemProps) { + return ; +} + +const Trigger = React.forwardRef( + ( + { + native: _native, + style: styleProp, + children: childrenProp, + onPress, + onPressIn, + onPressOut, + web, + ...props + }, + ref + ) => { + const { children, events, style } = useWebPressableProps({ + styleProp, + childrenProp, + webProps: web, + onPressIn, + onPressOut, + }); + const triggerRef = React.useRef(null); + + React.useImperativeHandle( + ref, + () => ({ + trigger: () => { + triggerRef.current?.click(); + }, + }), + [triggerRef.current] + ); + + return ( + + ); + } +); + +// TODO: move useWebPressableProps to a separate file +type WebPressableProps = Pick< + React.ComponentPropsWithoutRef<'button'>, + 'onFocus' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave' | 'onMouseDown' | 'onMouseUp' +>; + +// TODO: refactor this - maybe take all props or something like that +function useWebPressableProps({ + childrenProp, + styleProp, + webProps, + onPressIn, + onPressOut, +}: { + styleProp: PressableProps['style']; + childrenProp: PressableProps['children']; + webProps?: WebPressableProps; + onPressIn?: () => void; + onPressOut?: () => void; +}) { + const [focused, setFocused] = React.useState(false); + const [hovered, setHovered] = React.useState(false); + const [pressed, setPressed] = React.useState(false); + + const events = React.useMemo(() => { + return { + onFocus: (ev: React.FocusEvent) => { + setFocused(true); + webProps?.onFocus?.(ev); + }, + onBlur: (ev: React.FocusEvent) => { + setFocused(false); + webProps?.onBlur?.(ev); + }, + onMouseEnter: (ev: React.MouseEvent) => { + setHovered(true); + webProps?.onMouseEnter?.(ev); + }, + onMouseLeave: (ev: React.MouseEvent) => { + setHovered(false); + webProps?.onMouseLeave?.(ev); + }, + onMouseDown: (ev: React.MouseEvent) => { + setPressed(true); + if (webProps?.onMouseDown) { + webProps.onMouseDown?.(ev); + return; + } + onPressIn?.(); + }, + onMouseUp: (ev: React.MouseEvent) => { + setPressed(false); + if (webProps?.onMouseUp) { + webProps?.onMouseUp?.(ev); + return; + } + onPressOut?.(); + }, + }; + }, [ + webProps?.onFocus, + webProps?.onBlur, + webProps?.onMouseEnter, + webProps?.onMouseLeave, + webProps?.onMouseDown, + webProps?.onMouseUp, + onPressIn, + onPressOut, + ]); + + const style = React.useMemo(() => { + if (!styleProp) { + return; + } + return convertStyleForWeb( + typeof styleProp === 'function' + ? styleProp({ focused, hovered, pressed } as PressableStateCallbackType) + : styleProp + ); + }, [styleProp, focused, hovered, pressed]); + + return { + style, + events, + children: + typeof childrenProp === 'function' + ? childrenProp({ focused, hovered, pressed } as PressableStateCallbackType) + : childrenProp, + }; +} + +// TODO: +function useItemContext() { + return {}; +} + +// TODO: +function useRootContext() { + return {}; +} + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; + +export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; + +// function flattenStyle(style?: StyleProp) { +// if (!style) { +// return undefined; +// } +// const reactNativeStyle = Array.isArray(style) ? StyleSheet.flatten(style) : style; +// return StyleSheet.create>( +// reactNativeStyle as StyleSheet.NamedStyles & StyleSheet.NamedStyles +// ) as React.CSSProperties; +// } + +// function normalizeStyle(style?: ViewStyle) {} + +// const normalizeBackgroundColor = (color: ViewStyle['backgroundColor']): string | undefined => { +// if (typeof color === 'string') return color; // Already valid +// if (!color) return undefined; // No color set +// return String(color); // Force conversion +// }; + +// // Extract shared properties that have the same type in both ViewStyle and CSSProperties +// type SharedStyle = { +// [K in keyof ViewStyle & keyof React.CSSProperties as ViewStyle[K] extends React.CSSProperties[K] +// ? K +// : never]: ViewStyle[K]; +// }; + +// // Extract properties that either: +// // 1. Exist only in ViewStyle +// // 2. Exist in both but have different types +// type DifferenceStyle = { +// [K in keyof ViewStyle]: K extends keyof React.CSSProperties +// ? ViewStyle[K] extends React.CSSProperties[K] +// ? never +// : K +// : K; +// }[keyof ViewStyle] extends infer DiffKeys +// ? DiffKeys extends keyof ViewStyle +// ? Pick +// : never +// : never; + +// // normalizeColor https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/normalizeColor.js +// type CSSColor = React.CSSProperties['color']; + +// // normalizeValueWithProperty https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/normalizeValueWithProperty.js + +// // resolveShadowValue https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/resolveShadowValue.js + +// // createReactDOMStyle https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/createReactDOMStyle.js + +// const PROPERTIES_STANDARD = { +// borderBottomEndRadius: 'borderEndEndRadius', +// borderBottomStartRadius: 'borderEndStartRadius', +// borderTopEndRadius: 'borderStartEndRadius', +// borderTopStartRadius: 'borderStartStartRadius', +// borderEndColor: 'borderInlineEndColor', +// borderEndStyle: 'borderInlineEndStyle', +// borderEndWidth: 'borderInlineEndWidth', +// borderStartColor: 'borderInlineStartColor', +// borderStartStyle: 'borderInlineStartStyle', +// borderStartWidth: 'borderInlineStartWidth', +// end: 'insetInlineEnd', +// marginEnd: 'marginInlineEnd', +// marginHorizontal: 'marginInline', +// marginStart: 'marginInlineStart', +// marginVertical: 'marginBlock', +// paddingEnd: 'paddingInlineEnd', +// paddingHorizontal: 'paddingInline', +// paddingStart: 'paddingInlineStart', +// paddingVertical: 'paddingBlock', +// start: 'insetInlineStart', +// }; + +// const ignoredProps = { +// elevation: true, +// overlayColor: true, +// resizeMode: true, +// tintColor: true, +// }; + +// const obj = { +// animationKeyframes: '', // key of animated, need to get animation names to convert to css https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/index.js +// backgroundColor: '', +// borderBlockColor: '', +// borderBlockEndColor: '', +// borderBlockStartColor: '', +// borderBottomColor: '', +// borderColor: '', +// borderEndColor: '', +// borderBottomEndRadius: 0, +// borderBottomLeftRadius: 0, +// borderBottomRightRadius: 0, +// borderBottomStartRadius: 0, +// borderCurve: 'circular', +// borderEndEndRadius: 0, +// borderEndStartRadius: 0, +// borderLeftColor: '', +// borderRadius: 0, +// borderRightColor: '', +// borderStartColor: '', +// borderStartEndRadius: 0, +// borderStartStartRadius: 0, +// borderTopColor: '', +// borderTopEndRadius: 0, +// borderTopLeftRadius: 0, +// borderTopRightRadius: 0, +// borderTopStartRadius: 0, +// borderEndWidth: 0, +// borderStartWidth: 0, +// bottom: 0, +// boxShadow: '', +// elevation: 0, +// end: 0, +// flexBasis: 0, +// enableBackground: '', +// filter: '', +// height: 0, +// left: 0, +// margin: 0, +// marginBottom: 0, +// marginEnd: 0, +// marginHorizontal: 0, +// marginLeft: 0, +// marginRight: 0, +// marginStart: 0, +// marginTop: 0, +// marginVertical: 0, +// maxHeight: 0, +// maxWidth: 0, +// minHeight: 0, +// minWidth: 0, +// opacity: 0, +// inset: 0, +// padding: 0, +// paddingBottom: 0, +// insetBlock: 0, +// insetBlockEnd: 0, +// insetBlockStart: 0, +// insetInline: 0, +// insetInlineEnd: 0, +// insetInlineStart: 0, +// paddingEnd: 0, +// paddingHorizontal: 0, +// paddingLeft: 0, +// paddingRight: 0, +// paddingStart: 0, +// paddingTop: 0, +// paddingVertical: 0, +// right: 0, +// start: 0, +// top: 0, +// width: 0, +// marginBlock: 0, +// marginBlockEnd: 0, +// marginBlockStart: 0, +// marginInline: 0, +// marginInlineEnd: 0, +// marginInlineStart: 0, +// paddingBlock: 0, +// paddingBlockEnd: 0, +// paddingBlockStart: 0, +// paddingInline: 0, +// paddingInlineEnd: 0, +// paddingInlineStart: 0, +// pointerEvents: 'auto', +// shadowColor: '', +// shadowOffset: undefined, +// shadowOpacity: 0, +// shadowRadius: 0, +// transform: '', +// transformOrigin: '', +// writingDirection: 'auto', +// } satisfies DifferenceStyle; + +// const style = obj satisfies ImageStyle['overlayColor']; + +// const webStyle: CSSColor = '#deaea' satisfies React.CSSProperties['borderBottomLeftRadius']; diff --git a/packages/accordion-new/src/convert-style-for-web.ts b/packages/accordion-new/src/convert-style-for-web.ts new file mode 100644 index 00000000..1b03e797 --- /dev/null +++ b/packages/accordion-new/src/convert-style-for-web.ts @@ -0,0 +1,296 @@ +// This project uses code from necolas/react-native-web +// The code is licensed under the MIT License. +// https://github.com/necolas/react-native-web + +// @ts-expect-error - no types +import normalizeRNColor from '@react-native/normalize-colors'; +import { type StyleProp, StyleSheet, TextStyle, ViewStyle, ImageStyle } from 'react-native'; + +// TODO: test this works +// TODO: move to other package +// TODO: clean up + +const canUseDOM = !!( + typeof window !== 'undefined' && + window.document && + window.document.createElement +); + +const supportsCSS3TextDecoration = + !canUseDOM || + (window.CSS != null && + window.CSS.supports != null && + (window.CSS.supports('text-decoration-line', 'none') || + window.CSS.supports('-webkit-text-decoration-line', 'none'))); + +const MONOSPACE_FONT_STACK = 'monospace,monospace'; + +const SYSTEM_FONT_STACK = + '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif'; + +const STYLE_SHORT_FORM_EXPANSIONS = { + borderColor: ['borderTopColor', 'borderRightColor', 'borderBottomColor', 'borderLeftColor'], + borderBlockColor: ['borderTopColor', 'borderBottomColor'], + borderInlineColor: ['borderRightColor', 'borderLeftColor'], + borderRadius: [ + 'borderTopLeftRadius', + 'borderTopRightRadius', + 'borderBottomRightRadius', + 'borderBottomLeftRadius', + ], + borderStyle: ['borderTopStyle', 'borderRightStyle', 'borderBottomStyle', 'borderLeftStyle'], + borderBlockStyle: ['borderTopStyle', 'borderBottomStyle'], + borderInlineStyle: ['borderRightStyle', 'borderLeftStyle'], + borderWidth: ['borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth'], + borderBlockWidth: ['borderTopWidth', 'borderBottomWidth'], + borderInlineWidth: ['borderRightWidth', 'borderLeftWidth'], + insetBlock: ['top', 'bottom'], + insetInline: ['left', 'right'], + marginBlock: ['marginTop', 'marginBottom'], + marginInline: ['marginRight', 'marginLeft'], + paddingBlock: ['paddingTop', 'paddingBottom'], + paddingInline: ['paddingRight', 'paddingLeft'], + overflow: ['overflowX', 'overflowY'], + overscrollBehavior: ['overscrollBehaviorX', 'overscrollBehaviorY'], + borderBlockStartColor: ['borderTopColor'], + borderBlockStartStyle: ['borderTopStyle'], + borderBlockStartWidth: ['borderTopWidth'], + borderBlockEndColor: ['borderBottomColor'], + borderBlockEndStyle: ['borderBottomStyle'], + borderBlockEndWidth: ['borderBottomWidth'], + borderEndStartRadius: ['borderBottomLeftRadius'], + borderEndEndRadius: ['borderBottomRightRadius'], + borderStartStartRadius: ['borderTopLeftRadius'], + borderStartEndRadius: ['borderTopRightRadius'], + insetBlockEnd: ['bottom'], + insetBlockStart: ['top'], + marginBlockStart: ['marginTop'], + marginBlockEnd: ['marginBottom'], + paddingBlockStart: ['paddingTop'], + paddingBlockEnd: ['paddingBottom'], +}; + +type Style = TextStyle | ViewStyle | ImageStyle; + +export function convertStyleForWeb( + reactNativeStyle?: StyleProp +): React.CSSProperties | undefined { + if (!reactNativeStyle) { + return; + } + + const style = ( + Array.isArray(reactNativeStyle) ? StyleSheet.flatten(reactNativeStyle) : reactNativeStyle + ) as T; + + const resolvedStyle: Record = {}; + + for (const prop in style) { + const value = style[prop as keyof T]; + + if ( + // Ignore everything with a null/undefined value + value == null + ) { + continue; + } + + if (prop === 'backgroundClip') { + if (value === 'text') { + resolvedStyle.backgroundClip = value; + resolvedStyle.WebkitBackgroundClip = value; + } + } else if (prop === 'flex') { + if (value === -1) { + resolvedStyle.flexGrow = 0; + resolvedStyle.flexShrink = 1; + resolvedStyle.flexBasis = 'auto'; + } else { + resolvedStyle.flex = value; + } + } else if (prop === 'font' && typeof value === 'string') { + resolvedStyle[prop] = value.replace('System', SYSTEM_FONT_STACK); + } else if (prop === 'fontFamily') { + if (typeof value === 'string' && value.indexOf('System') > -1) { + const stack = value.split(/,\s*/); + stack[stack.indexOf('System')] = SYSTEM_FONT_STACK; + resolvedStyle[prop] = stack.join(','); + } else if (value === 'monospace') { + resolvedStyle[prop] = MONOSPACE_FONT_STACK; + } else { + resolvedStyle[prop] = value; + } + } else if (prop === 'textDecorationLine') { + // use 'text-decoration' for browsers that only support CSS2 + // text-decoration (e.g., IE, Edge) + if (!supportsCSS3TextDecoration) { + resolvedStyle.textDecoration = value; + } else { + resolvedStyle.textDecorationLine = value; + } + } else if (prop === 'writingDirection') { + resolvedStyle.direction = value; + } else { + const value = normalize(style[prop], prop); + const longFormProperties = + STYLE_SHORT_FORM_EXPANSIONS[prop as keyof typeof STYLE_SHORT_FORM_EXPANSIONS]; + if (prop === 'inset') { + if (style.insetInline == null) { + resolvedStyle.left = value; + resolvedStyle.right = value; + } + if (style.insetBlock == null) { + resolvedStyle.top = value; + resolvedStyle.bottom = value; + } + } else if (prop === 'margin') { + if (style.marginInline == null) { + resolvedStyle.marginLeft = value; + resolvedStyle.marginRight = value; + } + if (style.marginBlock == null) { + resolvedStyle.marginTop = value; + resolvedStyle.marginBottom = value; + } + } else if (prop === 'padding') { + if (style.paddingInline == null) { + resolvedStyle.paddingLeft = value; + resolvedStyle.paddingRight = value; + } + if (style.paddingBlock == null) { + resolvedStyle.paddingTop = value; + resolvedStyle.paddingBottom = value; + } + } else if (longFormProperties) { + longFormProperties.forEach((longForm, i) => { + // The value of any longform property in the original styles takes + // precedence over the shortform's value. + if (style[longForm as keyof Style] == null) { + resolvedStyle[longForm] = value; + } + }); + } else { + resolvedStyle[prop] = value; + } + } + } + + return resolvedStyle; +} + +const unitlessNumbers = { + animationIterationCount: true, + aspectRatio: true, + borderImageOutset: true, + borderImageSlice: true, + borderImageWidth: true, + boxFlex: true, + boxFlexGroup: true, + boxOrdinalGroup: true, + columnCount: true, + flex: true, + flexGrow: true, + flexOrder: true, + flexPositive: true, + flexShrink: true, + flexNegative: true, + fontWeight: true, + gridRow: true, + gridRowEnd: true, + gridRowGap: true, + gridRowStart: true, + gridColumn: true, + gridColumnEnd: true, + gridColumnGap: true, + gridColumnStart: true, + lineClamp: true, + opacity: true, + order: true, + orphans: true, + tabSize: true, + widows: true, + zIndex: true, + zoom: true, + // SVG-related + fillOpacity: true, + floodOpacity: true, + stopOpacity: true, + strokeDasharray: true, + strokeDashoffset: true, + strokeMiterlimit: true, + strokeOpacity: true, + strokeWidth: true, + // transform types + scale: true, + scaleX: true, + scaleY: true, + scaleZ: true, + // RN properties + shadowOpacity: true, +}; + +const colorProps = { + backgroundColor: true, + borderColor: true, + borderTopColor: true, + borderRightColor: true, + borderBottomColor: true, + borderLeftColor: true, + color: true, + shadowColor: true, + textDecorationColor: true, + textShadowColor: true, +}; + +function normalize(value: any, property?: string) { + let returnValue = value; + if ( + (property == null || !unitlessNumbers[property as keyof typeof unitlessNumbers]) && + typeof value === 'number' + ) { + returnValue = `${value}px`; + } else if (property != null && colorProps[property as keyof typeof colorProps]) { + returnValue = normalizeColor(value); + } + return returnValue; +} + +const isWebColor = (color: string): boolean => + color === 'currentcolor' || + color === 'currentColor' || + color === 'inherit' || + color.indexOf('var(') === 0; + +const processColor = (color?: string | number) => { + if (color === undefined || color === null) { + return color; + } + + // convert number and hex + let int32Color: number | null = normalizeRNColor(color); + if (int32Color === undefined || int32Color === null) { + return undefined; + } + + int32Color = ((int32Color << 24) | (int32Color >>> 8)) >>> 0; + + return int32Color; +}; + +const normalizeColor = (color?: number | string, opacity = 1): void | string => { + if (color == null) return; + + if (typeof color === 'string' && isWebColor(color)) { + return color; + } + + const colorInt = processColor(color); + if (colorInt != null) { + const r = (colorInt >> 16) & 255; + const g = (colorInt >> 8) & 255; + const b = colorInt & 255; + const a = ((colorInt >> 24) & 255) / 255; + const alpha = (a * opacity).toFixed(2); + return `rgba(${r},${g},${b},${alpha})`; + } +}; diff --git a/packages/accordion-new/src/index.ts b/packages/accordion-new/src/index.ts new file mode 100644 index 00000000..ce956fe2 --- /dev/null +++ b/packages/accordion-new/src/index.ts @@ -0,0 +1 @@ +export * from './accordion'; diff --git a/packages/accordion-new/src/types/base.ts b/packages/accordion-new/src/types/base.ts new file mode 100644 index 00000000..7c0ebb4f --- /dev/null +++ b/packages/accordion-new/src/types/base.ts @@ -0,0 +1,52 @@ +import type { + AccordionContentProps, + AccordionHeaderProps, + AccordionItemProps, + AccordionTriggerProps, + AccordionMultipleProps as BaseAccordionMultipleProps, + AccordionSingleProps as BaseAccordionSingleProps, +} from '@radix-ui/react-accordion'; +import type { Prettify, PropsWithoutHTML } from '@rn-primitives/types'; + +type AccordionRootProps = BaseAccordionMultipleProps | BaseAccordionSingleProps; + +type BaseAccordionRootProps = Prettify< + PropsWithoutHTML & { + collapsible?: boolean; + defaultValue?: string | string[]; + dir?: 'ltr' | 'rtl'; + } +>; + +type BaseAccordionContentProps = PropsWithoutHTML; + +type BaseAccordionHeaderProps = PropsWithoutHTML; + +type BaseAccordionItemProps = PropsWithoutHTML; + +type BaseAccordionTriggerProps = Omit< + PropsWithoutHTML, + | 'form' + | 'formAction' + | 'formEncType' + | 'formMethod' + | 'formNoValidate' + | 'formTarget' + | 'name' + | 'type' + | 'value' + | 'disabled' +>; + +type BaseAccordionTriggerRef = { trigger: () => void }; + +export type { + BaseAccordionContentProps, + BaseAccordionHeaderProps, + BaseAccordionItemProps, + BaseAccordionMultipleProps, + BaseAccordionRootProps, + BaseAccordionSingleProps, + BaseAccordionTriggerProps, + BaseAccordionTriggerRef, +}; diff --git a/packages/accordion-new/src/types/native-only.ts b/packages/accordion-new/src/types/native-only.ts new file mode 100644 index 00000000..1cdd742e --- /dev/null +++ b/packages/accordion-new/src/types/native-only.ts @@ -0,0 +1,30 @@ +import type { PressableRef, ViewRef } from '@rn-primitives/types'; +import type { AnimatablePressableProps, AnimatableViewProps } from '@rn-primitives/animatable'; + +type AccordionContentNativeOnlyProps = AnimatableViewProps; +type AccordionContentNativeOnlyRef = ViewRef; + +type AccordionHeaderNativeOnlyProps = AnimatableViewProps; +type AccordionHeaderNativeOnlyRef = ViewRef; + +type AccordionItemNativeOnlyProps = AnimatableViewProps; +type AccordionItemNativeOnlyRef = ViewRef; + +type AccordionRootNativeOnlyProps = AnimatableViewProps; +type AccordionRootNativeOnlyRef = ViewRef; + +type AccordionTriggerNativeOnlyProps = AnimatablePressableProps; +type AccordionTriggerNativeOnlyRef = PressableRef; + +export type { + AccordionContentNativeOnlyProps, + AccordionContentNativeOnlyRef, + AccordionHeaderNativeOnlyProps, + AccordionHeaderNativeOnlyRef, + AccordionItemNativeOnlyProps, + AccordionItemNativeOnlyRef, + AccordionRootNativeOnlyProps, + AccordionRootNativeOnlyRef, + AccordionTriggerNativeOnlyProps, + AccordionTriggerNativeOnlyRef, +}; diff --git a/packages/accordion-new/src/types/universal.ts b/packages/accordion-new/src/types/universal.ts new file mode 100644 index 00000000..caba7617 --- /dev/null +++ b/packages/accordion-new/src/types/universal.ts @@ -0,0 +1,71 @@ +import type { + BaseSlottablePressableProps, + BaseSlottableViewProps, + BasicPressEvents, + Prettify, +} from '@rn-primitives/types'; +import type { + BaseAccordionContentProps, + BaseAccordionHeaderProps, + BaseAccordionItemProps, + BaseAccordionRootProps, + BaseAccordionTriggerProps, + BaseAccordionTriggerRef, +} from './base'; +import type { + AccordionContentNativeOnlyProps, + AccordionHeaderNativeOnlyProps, + AccordionItemNativeOnlyProps, + AccordionRootNativeOnlyProps, + AccordionTriggerNativeOnlyProps, +} from './native-only'; +import type { + AccordionContentWebOnlyProps, + AccordionHeaderWebOnlyProps, + AccordionItemWebOnlyProps, + AccordionRootWebOnlyProps, + AccordionTriggerWebOnlyProps, +} from './web-only'; + +type ContentProps = Prettify< + BaseAccordionContentProps & + BaseSlottableViewProps & { + native?: AccordionContentNativeOnlyProps; + web?: AccordionContentWebOnlyProps; + } +>; + +type HeaderProps = Prettify< + BaseAccordionHeaderProps & + BaseSlottableViewProps & { + native?: AccordionHeaderNativeOnlyProps; + web?: AccordionHeaderWebOnlyProps; + } +>; + +type ItemProps = Prettify< + BaseAccordionItemProps & + BaseSlottableViewProps & { + native?: AccordionItemNativeOnlyProps; + web?: AccordionItemWebOnlyProps; + } +>; + +type RootProps = Prettify< + BaseAccordionRootProps & + BaseSlottableViewProps & { + native?: AccordionRootNativeOnlyProps; + web?: AccordionRootWebOnlyProps; + } +>; + +type TriggerProps = Prettify< + BaseAccordionTriggerProps & + BaseSlottablePressableProps & { + native?: AccordionTriggerNativeOnlyProps; + web?: AccordionTriggerWebOnlyProps; + } & BasicPressEvents +>; +type TriggerRef = BaseAccordionTriggerRef; + +export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; diff --git a/packages/accordion-new/src/types/web-only.ts b/packages/accordion-new/src/types/web-only.ts new file mode 100644 index 00000000..0db8be57 --- /dev/null +++ b/packages/accordion-new/src/types/web-only.ts @@ -0,0 +1,52 @@ +import type { Content, Header, Item, Root, Trigger } from '@radix-ui/react-accordion'; +import type { + BaseAccordionContentProps, + BaseAccordionHeaderProps, + BaseAccordionItemProps, + BaseAccordionRootProps, + BaseAccordionTriggerProps, +} from './base'; +import type { PropsWithout } from '@rn-primitives/types'; + +type AccordionRootWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAccordionRootProps +>; +type AccordionRootWebOnlyRef = React.ElementRef; + +type AccordionContentWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAccordionContentProps +>; +type AccordionContentWebOnlyRef = React.ElementRef; + +type AccordionHeaderWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAccordionHeaderProps +>; +type AccordionHeaderWebOnlyRef = React.ElementRef; + +type AccordionItemWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAccordionItemProps +>; +type AccordionItemWebOnlyRef = React.ElementRef; + +type AccordionTriggerWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAccordionTriggerProps +>; +type AccordionTriggerWebOnlyRef = React.ElementRef; + +export type { + AccordionContentWebOnlyProps, + AccordionContentWebOnlyRef, + AccordionHeaderWebOnlyProps, + AccordionHeaderWebOnlyRef, + AccordionItemWebOnlyProps, + AccordionItemWebOnlyRef, + AccordionRootWebOnlyProps, + AccordionRootWebOnlyRef, + AccordionTriggerWebOnlyProps, + AccordionTriggerWebOnlyRef, +}; diff --git a/packages/accordion-new/tsconfig.json b/packages/accordion-new/tsconfig.json new file mode 100644 index 00000000..60ce1f95 --- /dev/null +++ b/packages/accordion-new/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "@tsconfig/react-native/tsconfig.json", + "include": [ + "./src/**/*" + ], + "compilerOptions": { + "lib": [ + "dom", + "es2019", + "es2020.bigint", + "es2020.date", + "es2020.number", + "es2020.promise", + "es2020.string", + "es2020.symbol.wellknown", + "es2021.promise", + "es2021.string", + "es2021.weakref", + "es2022.array", + "es2022.object", + "es2022.string" + ], + }, + "exclude": [ + "dist", + "build", + "node_modules" + ], +} \ No newline at end of file diff --git a/packages/accordion-new/tsup.config.ts b/packages/accordion-new/tsup.config.ts new file mode 100644 index 00000000..fcc343b7 --- /dev/null +++ b/packages/accordion-new/tsup.config.ts @@ -0,0 +1,22 @@ +import { defineConfig, Options } from 'tsup'; + +export default defineConfig((options: Options) => ({ + entry: [ + 'src/index.ts', + 'src/accordion.tsx', + 'src/accordion.web.tsx', + 'src/accordion.native.tsx', // TODO: review this - it's not supposed to be the entry file, but it's supposed to be accessible + 'src/accordion-web.tsx', // TODO: review this - it's not supposed to be the entry file, but it's supposed to be accessible + ], + banner: { + js: "'use client'", + }, + clean: true, + format: ['cjs', 'esm'], + external: ['react', './accordion'], + dts: true, + ...options, + esbuildOptions(options) { + options.jsx = 'preserve'; + }, +})); diff --git a/packages/animatable/index.ts b/packages/animatable/index.ts new file mode 100644 index 00000000..e91bbb92 --- /dev/null +++ b/packages/animatable/index.ts @@ -0,0 +1,4 @@ +export { AnimatableImage, type AnimatableImageProps } from './src/animatable-image'; +export { AnimatablePressable, type AnimatablePressableProps } from './src/animatable-pressable'; +export { AnimatableText, type AnimatableTextProps } from './src/animatable-text'; +export { AnimatableView, type AnimatableViewProps } from './src/animatable-view'; diff --git a/packages/animatable/package.json b/packages/animatable/package.json new file mode 100644 index 00000000..bb01537f --- /dev/null +++ b/packages/animatable/package.json @@ -0,0 +1,53 @@ +{ + "name": "@rn-primitives/animatable", + "version": "1.1.0", + "description": "Primitive animatable", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.js", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "clean": "rm -rf dist", + "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", + "pub:next": "pnpm publish --no-git-checks --access public --tag next", + "pub:release": "pnpm publish --access public" + }, + "dependencies": { + "@rn-primitives/slot": "workspace:*", + "@rn-primitives/types": "workspace:*" + }, + "devDependencies": { + "@tsconfig/react-native": "^1.0.1", + "@types/react": "~18.3.12", + "react": "18.3.1", + "react-native": "0.76.3", + "tsup": "^8.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*", + "react-native-reanimated": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } +} diff --git a/packages/animatable/src/animatable-image.tsx b/packages/animatable/src/animatable-image.tsx new file mode 100644 index 00000000..710a1fa1 --- /dev/null +++ b/packages/animatable/src/animatable-image.tsx @@ -0,0 +1,27 @@ +import { Slot } from '@rn-primitives/slot'; +import type { ImageRef, Slottable } from '@rn-primitives/types'; +import * as React from 'react'; +import { Image, type ImageProps } from 'react-native'; +import Animated from 'react-native-reanimated'; + +type AnimatedImageProps = React.ComponentPropsWithoutRef; + +type AnimatableImageProps = Slottable< + (ImageProps & { isAnimated?: false }) | (AnimatedImageProps & { isAnimated: true }) +>; + +const AnimatableImage = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +export { AnimatableImage }; + +export type { AnimatableImageProps }; diff --git a/packages/animatable/src/animatable-pressable.tsx b/packages/animatable/src/animatable-pressable.tsx new file mode 100644 index 00000000..537280c8 --- /dev/null +++ b/packages/animatable/src/animatable-pressable.tsx @@ -0,0 +1,33 @@ +import { Slot } from '@rn-primitives/slot'; +import type { PressableRef, Slottable } from '@rn-primitives/types'; +import * as React from 'react'; +import { Pressable, type PressableProps } from 'react-native'; +import Animated from 'react-native-reanimated'; + +type AnimatedPressableProps = React.ComponentPropsWithoutRef & { + key?: React.Key | null | undefined; +}; + +type AnimatablePressableProps = Slottable< + (PressableProps & { isAnimated?: false }) | (AnimatedPressableProps & { isAnimated: true }) +>; + +const AnimatedPressable = Animated.createAnimatedComponent(Pressable); + +const AnimatablePressable = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +AnimatablePressable.displayName = 'AnimatablePressable'; + +export { AnimatablePressable }; + +export type { AnimatablePressableProps }; diff --git a/packages/animatable/src/animatable-text.tsx b/packages/animatable/src/animatable-text.tsx new file mode 100644 index 00000000..5fa1e7e9 --- /dev/null +++ b/packages/animatable/src/animatable-text.tsx @@ -0,0 +1,30 @@ +import { Slot } from '@rn-primitives/slot'; +import type { Slottable, TextRef } from '@rn-primitives/types'; +import * as React from 'react'; +import { Text, type TextProps } from 'react-native'; +import type { SharedValue } from 'react-native-reanimated'; +import Animated from 'react-native-reanimated'; + +type AnimatedTextProps = Omit, 'children'> & { + children?: React.ReactNode | SharedValue; +}; + +type AnimatableTextProps = Slottable< + (TextProps & { isAnimated?: false }) | (AnimatedTextProps & { isAnimated: true }) +>; + +const AnimatableText = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +export { AnimatableText }; + +export type { AnimatableTextProps }; diff --git a/packages/animatable/src/animatable-view.tsx b/packages/animatable/src/animatable-view.tsx new file mode 100644 index 00000000..5a2aeaae --- /dev/null +++ b/packages/animatable/src/animatable-view.tsx @@ -0,0 +1,29 @@ +import { Slot } from '@rn-primitives/slot'; +import type { Slottable, ViewRef } from '@rn-primitives/types'; +import * as React from 'react'; +import { View, type ViewProps } from 'react-native'; +import Animated from 'react-native-reanimated'; + +type AnimatedViewProps = React.ComponentPropsWithoutRef; + +type AnimatableViewProps = Slottable< + (ViewProps & { isAnimated?: false }) | (AnimatedViewProps & { isAnimated: true }) +>; + +const AnimatableView = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +AnimatableView.displayName = 'AnimatableView'; + +export { AnimatableView }; + +export type { AnimatableViewProps }; diff --git a/packages/animatable/tsconfig.json b/packages/animatable/tsconfig.json new file mode 100644 index 00000000..233db5d7 --- /dev/null +++ b/packages/animatable/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "@tsconfig/react-native/tsconfig.json", + "include": [ + "." + ], + "compilerOptions": { + "lib": [ + "dom", + "es2019", + "es2020.bigint", + "es2020.date", + "es2020.number", + "es2020.promise", + "es2020.string", + "es2020.symbol.wellknown", + "es2021.promise", + "es2021.string", + "es2021.weakref", + "es2022.array", + "es2022.object", + "es2022.string" + ], + }, + "exclude": [ + "dist", + "build", + "node_modules" + ], +} \ No newline at end of file diff --git a/packages/animatable/tsup.config.ts b/packages/animatable/tsup.config.ts new file mode 100644 index 00000000..116ea85e --- /dev/null +++ b/packages/animatable/tsup.config.ts @@ -0,0 +1,18 @@ +import { defineConfig, Options } from 'tsup'; + +export default defineConfig((options: Options) => ({ + entry: { + index: 'index.ts', + }, + banner: { + js: "'use client'", + }, + clean: true, + format: ['cjs', 'esm'], + external: ['react'], + dts: true, + ...options, + esbuildOptions(options) { + options.jsx = 'preserve'; + }, +})); diff --git a/packages/avatar/src/types.ts b/packages/avatar/src/types.ts index e14b78ac..78071019 100644 --- a/packages/avatar/src/types.ts +++ b/packages/avatar/src/types.ts @@ -1,12 +1,11 @@ -import type { ComponentPropsWithAsChild, SlottableViewProps, ViewRef } from '@rn-primitives/types'; +import type { SlottableImageProps, SlottableViewProps, ViewRef } from '@rn-primitives/types'; import type { Image } from 'react-native'; type RootProps = SlottableViewProps & { alt: string; }; -type ImageProps = Omit, 'alt'> & { - children?: React.ReactNode; +type ImageProps = Omit & { onLoadingStatusChange?: (status: 'error' | 'loaded') => void; }; diff --git a/packages/hooks/src/useAugmentedRef.tsx b/packages/hooks/src/useAugmentedRef.tsx index 13a56699..84ae6908 100644 --- a/packages/hooks/src/useAugmentedRef.tsx +++ b/packages/hooks/src/useAugmentedRef.tsx @@ -3,27 +3,21 @@ import * as React from 'react'; interface AugmentRefProps { ref: React.Ref; methods?: Record any>; + // TODO: remove this deps?: any[]; } -export function useAugmentedRef({ - ref, - methods, - deps = [], -}: AugmentRefProps) { +export function useAugmentedRef({ ref, methods, deps = [] }: AugmentRefProps) { const augmentedRef = React.useRef(null); React.useImperativeHandle( ref, () => { - if (typeof augmentedRef === 'function' || !augmentedRef?.current) { - return {} as T; - } return { ...augmentedRef.current, ...methods, - }; + } as T; }, - deps + [augmentedRef.current, methods] ); return augmentedRef; } diff --git a/packages/slot/src/slot.tsx b/packages/slot/src/slot.tsx index 403b91e9..f4c73588 100644 --- a/packages/slot/src/slot.tsx +++ b/packages/slot/src/slot.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import { + type PressableProps, Image as RNImage, Pressable as RNPressable, Text as RNText, @@ -14,6 +15,36 @@ import { type StyleProp, } from 'react-native'; +// TODO: test the slot component +// TODO: if all works, remove other slots +function SlotImplementation( + props: React.ComponentPropsWithoutRef, + forwardedRef: React.Ref> +) { + const { children, ...restOfProps } = props; + + if (!React.isValidElement(children)) { + console.log('Slot - Invalid asChild element', children); + return null; + } + + if (isTextChildren(children)) { + console.log('Slot - Text children are not supported', children); + return null; + } + + return React.cloneElement(children, { + ...mergeProps(restOfProps, children.props as any), + ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, + } as unknown as Partial>); +} + +export const Slot = React.forwardRef(SlotImplementation) as ( + props: React.ComponentPropsWithoutRef & { as?: T; ref?: React.Ref> } +) => React.ReactElement | null; + +(Slot as React.NamedExoticComponent).displayName = 'Slot'; + const Pressable = React.forwardRef, RNPressableProps>( (props, forwardedRef) => { const { children, ...pressableSlotProps } = props; @@ -25,7 +56,7 @@ const Pressable = React.forwardRef, RNPress return React.cloneElement< React.ComponentPropsWithoutRef, - React.ElementRef + React.Component, 'ref'>, any, any> >(isTextChildren(children) ? <> : children, { ...mergeProps(pressableSlotProps, children.props), ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 40f26e23..b34c5e65 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,14 +1,31 @@ -import type { Pressable, Text, View, ViewStyle } from 'react-native'; +import type { + Image, + ImageProps, + ImageStyle, + Pressable, + PressableProps, + StyleProp, + Text, + TextProps, + TextStyle, + View, + ViewProps, + ViewStyle, +} from 'react-native'; -type ComponentPropsWithAsChild> = - React.ComponentPropsWithoutRef & { asChild?: boolean }; +type Prettify = { + [K in keyof T]: T[K]; +} & {}; -type ViewRef = React.ElementRef; -type PressableRef = React.ElementRef; -type TextRef = React.ElementRef; +type PropsWithout = Omit; +type PropsWithoutHTML = PropsWithout>; -type SlottableViewProps = ComponentPropsWithAsChild; -type SlottablePressableProps = ComponentPropsWithAsChild & { +type Slottable = Prettify; + +type SlottableViewProps = Slottable; + +// TODO: remove the web only props +type SlottablePressableProps = Slottable & { /** * Platform: WEB ONLY */ @@ -18,7 +35,39 @@ type SlottablePressableProps = ComponentPropsWithAsChild & { */ onKeyUp?: (ev: React.KeyboardEvent) => void; }; -type SlottableTextProps = ComponentPropsWithAsChild; +type SlottableTextProps = Slottable; +type SlottableImageProps = Slottable; + +type BaseSlottableTextProps = Slottable<{ + children?: React.ReactNode; + style?: StyleProp; + className?: string; +}>; +type BaseSlottableViewProps = Slottable<{ + children?: React.ReactNode; + style?: StyleProp; + className?: string; +}>; +type BaseSlottablePressableProps = Slottable<{ + children?: PressableProps['children']; + style?: PressableProps['style']; + className?: string; +}>; +type BaseSlottableImageProps = Slottable<{ + style?: StyleProp; + className?: string; +}>; + +type ViewRef = React.ElementRef; +type PressableRef = React.ElementRef; +type TextRef = React.ElementRef; +type ImageRef = React.ElementRef; + +type BasicPressEvents = { + onPress?: () => void; + onPressIn?: () => void; + onPressOut?: () => void; +}; interface Insets { top?: number; @@ -70,9 +119,7 @@ interface PositionedContentProps { /** * Platform: WEB ONLY */ - onInteractOutside?: ( - event: PointerDownOutsideEvent | FocusOutsideEvent - ) => void; + onInteractOutside?: (event: PointerDownOutsideEvent | FocusOutsideEvent) => void; /** * Platform: WEB ONLY */ @@ -92,11 +139,21 @@ interface ForceMountable { } export type { - ComponentPropsWithAsChild, + BaseSlottableImageProps, + BaseSlottablePressableProps, + BaseSlottableTextProps, + BaseSlottableViewProps, + BasicPressEvents, ForceMountable, + ImageRef, Insets, PositionedContentProps, PressableRef, + Prettify, + PropsWithout, + PropsWithoutHTML, + Slottable, + SlottableImageProps, SlottablePressableProps, SlottableTextProps, SlottableViewProps, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 792fb35e..a74d4b12 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -199,6 +199,9 @@ importers: '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion + '@rn-primitives/accordion-new': + specifier: workspace:* + version: link:../../packages/accordion-new '@rn-primitives/alert-dialog': specifier: workspace:* version: link:../../packages/alert-dialog @@ -708,6 +711,49 @@ importers: specifier: ^8.1.0 version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/accordion-new: + dependencies: + '@radix-ui/react-accordion': + specifier: ^1.2.0 + version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-native/normalize-colors': + specifier: ^0.77.0 + version: 0.77.0 + '@rn-primitives/animatable': + specifier: workspace:* + version: link:../animatable + '@rn-primitives/hooks': + specifier: workspace:* + version: link:../hooks + '@rn-primitives/slot': + specifier: workspace:* + version: link:../slot + '@rn-primitives/types': + specifier: workspace:* + version: link:../types + react-native-web: + specifier: '*' + version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@tsconfig/react-native': + specifier: ^1.0.1 + version: 1.0.5 + '@types/react': + specifier: ~18.3.12 + version: 18.3.12 + react: + specifier: 18.3.1 + version: 18.3.1 + react-native: + specifier: 0.76.3 + version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react-native-reanimated: + specifier: ~3.16.2 + version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + tsup: + specifier: ^8.1.0 + version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/alert-dialog: dependencies: '@radix-ui/react-alert-dialog': @@ -745,6 +791,37 @@ importers: specifier: ^8.1.0 version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/animatable: + dependencies: + '@rn-primitives/slot': + specifier: workspace:* + version: link:../slot + '@rn-primitives/types': + specifier: workspace:* + version: link:../types + react-native-reanimated: + specifier: '*' + version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-web: + specifier: '*' + version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@tsconfig/react-native': + specifier: ^1.0.1 + version: 1.0.5 + '@types/react': + specifier: ~18.3.12 + version: 18.3.12 + react: + specifier: 18.3.1 + version: 18.3.1 + react-native: + specifier: 0.76.3 + version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + tsup: + specifier: ^8.1.0 + version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/aspect-ratio: dependencies: '@rn-primitives/slot': @@ -3872,6 +3949,9 @@ packages: '@react-native/normalize-colors@0.76.3': resolution: {integrity: sha512-Yrpmrh4IDEupUUM/dqVxhAN8QW1VEUR3Qrk2lzJC1jB2s46hDe0hrMP2vs12YJqlzshteOthjwXQlY0TgIzgbg==} + '@react-native/normalize-colors@0.77.0': + resolution: {integrity: sha512-qjmxW3xRZe4T0ZBEaXZNHtuUbRgyfybWijf1yUuQwjBt24tSapmIslwhCjpKidA0p93ssPcepquhY0ykH25mew==} + '@react-native/virtualized-lists@0.76.3': resolution: {integrity: sha512-wTGv9pVh3vAOWb29xFm+J9VRe9dUcUcb9FyaMLT/Hxa88W4wqa5ZMe1V9UvrrBiA1G5DKjv8/1ZcDsJhyugVKA==} engines: {node: '>=18'} @@ -7901,9 +7981,11 @@ packages: sudo-prompt@8.2.5: resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. sudo-prompt@9.1.1: resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -11418,6 +11500,8 @@ snapshots: '@react-native/normalize-colors@0.76.3': {} + '@react-native/normalize-colors@0.77.0': {} + '@react-native/virtualized-lists@0.76.3(@types/react@18.3.12)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 From f65f9bcff5902854fdf66019ca2f42d9af263b55 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 10 Feb 2025 13:11:09 -0500 Subject: [PATCH 002/106] fix(hooks): rename file names --- packages/hooks/src/index.ts | 8 ++++---- .../src/{useAugmentedRef.tsx => use-augmented-ref.tsx} | 0 ...seControllableState.tsx => use-controllable-state.tsx} | 0 ...cLayoutEffect.tsx => use-isomorphic-layout-effect.tsx} | 0 ...{useRelativePosition.tsx => use-relative-position.tsx} | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename packages/hooks/src/{useAugmentedRef.tsx => use-augmented-ref.tsx} (100%) rename packages/hooks/src/{useControllableState.tsx => use-controllable-state.tsx} (100%) rename packages/hooks/src/{useIsomorphicLayoutEffect.tsx => use-isomorphic-layout-effect.tsx} (100%) rename packages/hooks/src/{useRelativePosition.tsx => use-relative-position.tsx} (100%) diff --git a/packages/hooks/src/index.ts b/packages/hooks/src/index.ts index ab763bb7..b0250f6c 100644 --- a/packages/hooks/src/index.ts +++ b/packages/hooks/src/index.ts @@ -1,4 +1,4 @@ -export { useAugmentedRef } from './useAugmentedRef'; -export { useRelativePosition, type LayoutPosition } from './useRelativePosition'; -export { useControllableState } from './useControllableState'; -export { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'; +export { useAugmentedRef } from './use-augmented-ref'; +export { useRelativePosition, type LayoutPosition } from './use-relative-position'; +export { useControllableState } from './use-controllable-state'; +export { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'; diff --git a/packages/hooks/src/useAugmentedRef.tsx b/packages/hooks/src/use-augmented-ref.tsx similarity index 100% rename from packages/hooks/src/useAugmentedRef.tsx rename to packages/hooks/src/use-augmented-ref.tsx diff --git a/packages/hooks/src/useControllableState.tsx b/packages/hooks/src/use-controllable-state.tsx similarity index 100% rename from packages/hooks/src/useControllableState.tsx rename to packages/hooks/src/use-controllable-state.tsx diff --git a/packages/hooks/src/useIsomorphicLayoutEffect.tsx b/packages/hooks/src/use-isomorphic-layout-effect.tsx similarity index 100% rename from packages/hooks/src/useIsomorphicLayoutEffect.tsx rename to packages/hooks/src/use-isomorphic-layout-effect.tsx diff --git a/packages/hooks/src/useRelativePosition.tsx b/packages/hooks/src/use-relative-position.tsx similarity index 100% rename from packages/hooks/src/useRelativePosition.tsx rename to packages/hooks/src/use-relative-position.tsx From c0824cc6a19aaf03e6d329af8988aa5b130a2cea Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 10 Feb 2025 13:24:53 -0500 Subject: [PATCH 003/106] fix: use accessibilityLabelledBy instead of the aria attribute --- apps/docs/src/content/docs/label.mdx | 4 ++-- apps/docs/src/content/docs/radio-group.mdx | 8 ++++---- apps/docs/src/content/docs/table.mdx | 2 +- apps/expo-nativewind/app/(components)/checkbox.tsx | 2 +- apps/expo-nativewind/app/(components)/popover.tsx | 2 +- apps/expo-nativewind/app/(components)/radio-group.tsx | 2 +- apps/expo-nativewind/app/(components)/table.tsx | 2 +- apps/expo-nativewind/app/(components)/tabs.tsx | 6 +++--- .../src/components/RadioGroupExample.tsx | 2 +- apps/nextjs-nativewind/src/components/TabsExample.tsx | 6 +++--- packages/accordion-new/src/accordion-native.tsx | 2 +- packages/accordion/src/accordion.tsx | 2 +- packages/alert-dialog/src/alert-dialog.tsx | 2 +- packages/collapsible/src/collapsible.tsx | 2 +- packages/context-menu/src/context-menu.tsx | 2 +- packages/dialog/src/dialog.tsx | 2 +- packages/dropdown-menu/src/dropdown-menu.tsx | 2 +- packages/label/src/types.ts | 2 +- packages/menubar/src/menubar.tsx | 2 +- packages/radio-group/src/types.ts | 2 +- packages/tabs/src/tabs.tsx | 2 +- 21 files changed, 29 insertions(+), 29 deletions(-) diff --git a/apps/docs/src/content/docs/label.mdx b/apps/docs/src/content/docs/label.mdx index 16fc6992..9c90f1cd 100644 --- a/apps/docs/src/content/docs/label.mdx +++ b/apps/docs/src/content/docs/label.mdx @@ -91,7 +91,7 @@ function Example() { return ( Label @@ -117,6 +117,6 @@ Extends [`Text`](https://reactnative.dev/docs/text#props) props | Prop | Type | Note | | :--------: | :----: | :--------------------------------------------------------------: | -| nativeID\* | string | the same value needs be use by aria-labelledby from form field | +| nativeID\* | string | the same value needs be use by accessibilityLabelledBy from form field | | htmlFor | string | web only | diff --git a/apps/docs/src/content/docs/radio-group.mdx b/apps/docs/src/content/docs/radio-group.mdx index ed78cb7f..1f5515cc 100644 --- a/apps/docs/src/content/docs/radio-group.mdx +++ b/apps/docs/src/content/docs/radio-group.mdx @@ -92,19 +92,19 @@ function Example() { return ( - + Default - + Comfortable - + Compact @@ -134,7 +134,7 @@ Extends [`Pressable`](https://reactnative.dev/docs/pressable#props) props | Prop | Type | Note | | :-----: | :-----: | :----------: | | value | string | | -| aria-labelledby | string | Its label's `nativeID`| +| accessibilityLabelledBy | string | Its label's `nativeID`| | asChild | boolean | _(optional)_ | ### Indicator diff --git a/apps/docs/src/content/docs/table.mdx b/apps/docs/src/content/docs/table.mdx index 01dc827d..c30c6b35 100644 --- a/apps/docs/src/content/docs/table.mdx +++ b/apps/docs/src/content/docs/table.mdx @@ -50,7 +50,7 @@ import { Text } from 'react-native'; function Example() { return ( - + diff --git a/apps/expo-nativewind/app/(components)/checkbox.tsx b/apps/expo-nativewind/app/(components)/checkbox.tsx index 09287fbf..6dde8a94 100644 --- a/apps/expo-nativewind/app/(components)/checkbox.tsx +++ b/apps/expo-nativewind/app/(components)/checkbox.tsx @@ -10,7 +10,7 @@ export default function CheckboxScreen() { diff --git a/apps/expo-nativewind/app/(components)/popover.tsx b/apps/expo-nativewind/app/(components)/popover.tsx index 28003cec..76195912 100644 --- a/apps/expo-nativewind/app/(components)/popover.tsx +++ b/apps/expo-nativewind/app/(components)/popover.tsx @@ -80,7 +80,7 @@ function LabelledInput({ diff --git a/apps/expo-nativewind/app/(components)/radio-group.tsx b/apps/expo-nativewind/app/(components)/radio-group.tsx index cb42f989..94a09f34 100644 --- a/apps/expo-nativewind/app/(components)/radio-group.tsx +++ b/apps/expo-nativewind/app/(components)/radio-group.tsx @@ -31,7 +31,7 @@ function RadioGroupItemWithLabel({ }) { return ( - + diff --git a/apps/expo-nativewind/app/(components)/table.tsx b/apps/expo-nativewind/app/(components)/table.tsx index 24e59dfe..924ab31c 100644 --- a/apps/expo-nativewind/app/(components)/table.tsx +++ b/apps/expo-nativewind/app/(components)/table.tsx @@ -35,7 +35,7 @@ export default function TableScreen() { <> - +
diff --git a/apps/expo-nativewind/app/(components)/tabs.tsx b/apps/expo-nativewind/app/(components)/tabs.tsx index 8dca2e02..a5b21811 100644 --- a/apps/expo-nativewind/app/(components)/tabs.tsx +++ b/apps/expo-nativewind/app/(components)/tabs.tsx @@ -42,7 +42,7 @@ export default function TabsScreen() { - + @@ -67,11 +67,11 @@ export default function TabsScreen() { - + - + diff --git a/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx b/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx index 04974551..6a51dc0c 100644 --- a/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx +++ b/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx @@ -31,7 +31,7 @@ function RadioGroupItemWithLabel({ }) { return ( - + diff --git a/apps/nextjs-nativewind/src/components/TabsExample.tsx b/apps/nextjs-nativewind/src/components/TabsExample.tsx index 4582f269..4051bc2f 100644 --- a/apps/nextjs-nativewind/src/components/TabsExample.tsx +++ b/apps/nextjs-nativewind/src/components/TabsExample.tsx @@ -37,7 +37,7 @@ export function TabsExample() { - + @@ -62,11 +62,11 @@ export function TabsExample() { - + - + diff --git a/packages/accordion-new/src/accordion-native.tsx b/packages/accordion-new/src/accordion-native.tsx index a91f0e1e..34300033 100644 --- a/packages/accordion-new/src/accordion-native.tsx +++ b/packages/accordion-new/src/accordion-native.tsx @@ -245,7 +245,7 @@ const Content = React.forwardRef diff --git a/packages/accordion/src/accordion.tsx b/packages/accordion/src/accordion.tsx index afc5a4fe..5dad6761 100644 --- a/packages/accordion/src/accordion.tsx +++ b/packages/accordion/src/accordion.tsx @@ -195,7 +195,7 @@ const Content = React.forwardRef( diff --git a/packages/alert-dialog/src/alert-dialog.tsx b/packages/alert-dialog/src/alert-dialog.tsx index ced572d8..1f0527b3 100644 --- a/packages/alert-dialog/src/alert-dialog.tsx +++ b/packages/alert-dialog/src/alert-dialog.tsx @@ -149,7 +149,7 @@ const Content = React.forwardRef( ref={ref} role='alertdialog' nativeID={nativeID} - aria-labelledby={`${nativeID}_label`} + accessibilityLabelledBy={`${nativeID}_label`} aria-describedby={`${nativeID}_desc`} aria-modal={true} {...props} diff --git a/packages/collapsible/src/collapsible.tsx b/packages/collapsible/src/collapsible.tsx index 12e10f95..c202fae9 100644 --- a/packages/collapsible/src/collapsible.tsx +++ b/packages/collapsible/src/collapsible.tsx @@ -107,7 +107,7 @@ const Content = React.forwardRef( diff --git a/packages/context-menu/src/context-menu.tsx b/packages/context-menu/src/context-menu.tsx index d004ea85..b67a4fe5 100644 --- a/packages/context-menu/src/context-menu.tsx +++ b/packages/context-menu/src/context-menu.tsx @@ -617,7 +617,7 @@ const SubContent = React.forwardRef( } const Component = asChild ? Slot.Pressable : Pressable; - return ; + return ; } ); diff --git a/packages/dialog/src/dialog.tsx b/packages/dialog/src/dialog.tsx index 03657774..eb9f6ee5 100644 --- a/packages/dialog/src/dialog.tsx +++ b/packages/dialog/src/dialog.tsx @@ -155,7 +155,7 @@ const Content = React.forwardRef( ref={ref} role='dialog' nativeID={nativeID} - aria-labelledby={`${nativeID}_label`} + accessibilityLabelledBy={`${nativeID}_label`} aria-describedby={`${nativeID}_desc`} aria-modal={true} onStartShouldSetResponder={onStartShouldSetResponder} diff --git a/packages/dropdown-menu/src/dropdown-menu.tsx b/packages/dropdown-menu/src/dropdown-menu.tsx index 458ef97c..b7d3da6d 100644 --- a/packages/dropdown-menu/src/dropdown-menu.tsx +++ b/packages/dropdown-menu/src/dropdown-menu.tsx @@ -581,7 +581,7 @@ const SubContent = React.forwardRef( } const Component = asChild ? Slot.Pressable : Pressable; - return ; + return ; } ); diff --git a/packages/label/src/types.ts b/packages/label/src/types.ts index a6997c50..ca547d22 100644 --- a/packages/label/src/types.ts +++ b/packages/label/src/types.ts @@ -13,7 +13,7 @@ type RootProps = Omit type TextProps = SlottableTextProps & { /** - * Equivalent to `id` so that the same value can be passed as `aria-labelledby` to the input element. + * Equivalent to `id` so that the same value can be passed as `accessibilityLabelledBy` to the input element. */ nativeID?: string; /** diff --git a/packages/menubar/src/menubar.tsx b/packages/menubar/src/menubar.tsx index 5451007a..7d12654d 100644 --- a/packages/menubar/src/menubar.tsx +++ b/packages/menubar/src/menubar.tsx @@ -595,7 +595,7 @@ const SubContent = React.forwardRef( } const Component = asChild ? Slot.View : View; - return ; + return ; } ); diff --git a/packages/radio-group/src/types.ts b/packages/radio-group/src/types.ts index 071e9f83..49bc7e46 100644 --- a/packages/radio-group/src/types.ts +++ b/packages/radio-group/src/types.ts @@ -17,7 +17,7 @@ type ItemProps = SlottablePressableProps & { /** * nativeID of the label element that describes this radio group item */ - 'aria-labelledby'?: string; + accessibilityLabelledBy?: string; }; type IndicatorProps = SlottableViewProps & ForceMountable; diff --git a/packages/tabs/src/tabs.tsx b/packages/tabs/src/tabs.tsx index 7df9b16e..2fd08d5d 100644 --- a/packages/tabs/src/tabs.tsx +++ b/packages/tabs/src/tabs.tsx @@ -125,7 +125,7 @@ const Content = React.forwardRef( From 7767f55920d6fdb325d68e269ecef56ff6bed3cb Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 10 Feb 2025 15:08:23 -0500 Subject: [PATCH 004/106] feat(accordion): add web context + ref func + reorg sharable code --- apps/nextjs-nativewind/package.json | 1 + apps/nextjs-nativewind/src/app/page.tsx | 3 +- .../src/components/ui/accordion.tsx | 153 +++++++++++------- .../accordion-new/src/accordion-native.tsx | 116 +++++-------- packages/accordion-new/src/accordion-web.tsx | 118 +++++++++++++- packages/accordion-new/src/accordion.web.tsx | 39 ++--- packages/accordion-new/src/index.ts | 16 +- packages/accordion-new/src/types/base.ts | 20 +++ packages/accordion-new/src/utils/contexts.tsx | 30 ++++ .../src/utils/is-item-expanded.ts | 5 + pnpm-lock.yaml | 3 + 11 files changed, 337 insertions(+), 167 deletions(-) create mode 100644 packages/accordion-new/src/utils/contexts.tsx create mode 100644 packages/accordion-new/src/utils/is-item-expanded.ts diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index 44e82905..5851be11 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@rn-primitives/accordion": "workspace:*", + "@rn-primitives/accordion-new": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 1ffc8847..2121c6b1 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -132,8 +132,9 @@ export default function Home() { } function AccordionExample() { + // TODO: fix typing since this should error return ( - + Is it accessible? diff --git a/apps/nextjs-nativewind/src/components/ui/accordion.tsx b/apps/nextjs-nativewind/src/components/ui/accordion.tsx index cdd1e81d..e85737a8 100644 --- a/apps/nextjs-nativewind/src/components/ui/accordion.tsx +++ b/apps/nextjs-nativewind/src/components/ui/accordion.tsx @@ -1,102 +1,143 @@ 'use client'; -import * as AccordionPrimitive from '@rn-primitives/accordion'; -import React from 'react'; -import { Platform, Pressable, View } from 'react-native'; +import * as AccordionPrimitive from '@rn-primitives/accordion-new'; +import * as React from 'react'; +import { Platform, PressableProps, PressableStateCallbackType, View } from 'react-native'; import Animated, { + Extrapolation, FadeIn, FadeOutUp, LayoutAnimationConfig, LinearTransition, + interpolate, + useAnimatedStyle, + useDerivedValue, + withTiming, } from 'react-native-reanimated'; import { TextClassContext } from '~/components/ui/text'; import { ChevronDown } from '~/lib/icons/ChevronDown'; import { cn } from '~/lib/utils'; +import { Slot } from '@rn-primitives/slot'; -const Accordion = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ children, ...props }, ref) => { +type AccordionTriggerRef = AccordionPrimitive.TriggerRef; + +function Accordion({ children, ...props }: AccordionPrimitive.RootProps) { + const Inner = Platform.OS === 'web' ? Slot : Animated.View; return ( - - {children} + + + <>{children} + ); -}); - -Accordion.displayName = AccordionPrimitive.Root.displayName; +} -const AccordionItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, value, ...props }, ref) => { +function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemProps) { return ( - - - + ); -}); -AccordionItem.displayName = AccordionPrimitive.Item.displayName; - -const Trigger = Platform.OS === 'web' ? View : Pressable; +} const AccordionTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + AccordionPrimitive.TriggerRef, + AccordionPrimitive.TriggerProps >(({ className, children, ...props }, ref) => { const { isExpanded } = AccordionPrimitive.useItemContext(); + const progress = useDerivedValue( + () => (isExpanded ? withTiming(1, { duration: 250 }) : withTiming(0, { duration: 200 })), + [isExpanded] + ); + const chevronStyle = useAnimatedStyle( + () => ({ + transform: [{ rotate: `${progress.value * 180}deg` }], + opacity: interpolate(progress.value, [0, 1], [1, 0.8], Extrapolation.CLAMP), + }), + [progress] + ); + + const IconWrapper = Platform.OS === 'web' ? Slot : Animated.View; return ( - - - <>{children} - - - - + svg]:rotate-180' }), + className + )} + {...props} + > + {renderPressableChildren(children, (children) => { + return ( + <> + {children} + + + + + ); + })} ); }); -AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; -const AccordionContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { - const { isExpanded } = AccordionPrimitive.useItemContext(); +// TODO: move this to nr-primitives +function renderPressableChildren( + children: PressableProps['children'], + render: (children: React.ReactNode) => React.ReactNode +) { + return typeof children === 'function' + ? (state: PressableStateCallbackType) => render(children(state)) + : render(children); +} + +function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( {children} ); -}); +} function InnerContent({ children, className }: { children: React.ReactNode; className?: string }) { + const rootContent = AccordionPrimitive.useRootContext(); + const itemContext = AccordionPrimitive.useItemContext(); + + console.log('root context', rootContent); + console.log('item context', itemContext); + if (Platform.OS === 'web') { return {children}; } @@ -111,6 +152,6 @@ function InnerContent({ children, className }: { children: React.ReactNode; clas ); } -AccordionContent.displayName = AccordionPrimitive.Content.displayName; - export { Accordion, AccordionContent, AccordionItem, AccordionTrigger }; + +export type { AccordionTriggerRef }; diff --git a/packages/accordion-new/src/accordion-native.tsx b/packages/accordion-new/src/accordion-native.tsx index 34300033..3b2d562e 100644 --- a/packages/accordion-new/src/accordion-native.tsx +++ b/packages/accordion-new/src/accordion-native.tsx @@ -1,8 +1,8 @@ +import { AnimatablePressable, AnimatableView } from '@rn-primitives/animatable'; import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; -import { type GestureResponderEvent } from 'react-native'; -import { AnimatablePressable, AnimatableView } from '@rn-primitives/animatable'; +import type { GestureResponderEvent } from 'react-native'; import type { BaseAccordionContentProps, BaseAccordionHeaderProps, @@ -23,11 +23,13 @@ import type { AccordionTriggerNativeOnlyProps, AccordionTriggerNativeOnlyRef, } from './types/native-only'; - -const AccordionContext = React.createContext | null>(null); +import { + RootContext, + createItemContext, + createUseItemContext, + useRootContext, +} from './utils/contexts'; +import { isItemExpanded } from './utils/is-item-expanded'; type AccordionRootNativeProps = AccordionRootNativeOnlyProps & BaseAccordionRootProps; type AccordionRootNativeRef = AccordionRootNativeOnlyRef; @@ -48,68 +50,53 @@ const Root = React.forwardRef( }, ref ) => { - const [value = type === 'multiple' ? [] : undefined, onValueChange] = useControllableState< - (string | undefined) | string[] - >({ - prop: valueProp, - defaultProp: defaultValue, - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); + const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: defaultValue, + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); const Component = asChild ? Slot : AnimatableView; return ( - - + ); } ); Root.displayName = 'AccordionRootNative'; -function useRootContext() { - const context = React.useContext(AccordionContext); - if (!context) { - throw new Error( - 'Accordion compound components cannot be rendered outside the Accordion component' - ); - } - return context; -} - -type AccordionItemContextType = Omit & { - nativeID: string; - isExpanded: boolean; -}; - -const AccordionItemContext = React.createContext(null); +const AccordionItemContext = createItemContext<{ nativeID: string }>(); +const useItemContext = createUseItemContext(AccordionItemContext); type AccordionItemNativeProps = AccordionItemNativeOnlyProps & BaseAccordionItemProps; type AccordionItemNativeRef = AccordionItemNativeOnlyRef; const Item = React.forwardRef( - ({ asChild, value, disabled, ...viewProps }, ref) => { - const { value: rootValue } = useRootContext(); + ({ asChild, value: itemValue, disabled, ...viewProps }, ref) => { + const { rootValue } = useRootContext(); const nativeID = React.useId(); const Component = asChild ? Slot : AnimatableView; return ( @@ -120,16 +107,6 @@ const Item = React.forwardRef( Item.displayName = 'AccordionItemNative'; -function useItemContext() { - const context = React.useContext(AccordionItemContext); - if (!context) { - throw new Error( - 'AccordionItem compound components cannot be rendered outside the AccordionItem component' - ); - } - return context; -} - type AccordionHeaderNativeProps = AccordionHeaderNativeOnlyProps & BaseAccordionHeaderProps; type AccordionHeaderNativeRef = AccordionHeaderNativeOnlyRef; @@ -161,48 +138,45 @@ const Trigger = React.forwardRef { return { trigger: () => { if (type === 'single') { - const newValue = collapsible ? (value === rootValue ? undefined : value) : value; - onValueChange?.(newValue as string[] & string); + const newValue = collapsible + ? itemValue === rootValue + ? undefined + : itemValue + : itemValue; + onRootValueChange?.(newValue as string[] & string); } if (type === 'multiple') { const rootToArray = toStringArray(rootValue); const newValue = collapsible - ? rootToArray.includes(value) - ? rootToArray.filter((val) => val !== value) - : rootToArray.concat(value) - : [...new Set(rootToArray.concat(value))]; - onValueChange?.(newValue as string[] & string); + ? rootToArray.includes(itemValue) + ? rootToArray.filter((val) => val !== itemValue) + : rootToArray.concat(itemValue) + : [...new Set(rootToArray.concat(itemValue))]; + onRootValueChange?.(newValue as string[] & string); } }, }; - }, [collapsible, onValueChange, rootValue, type, value]); + }, [collapsible, onRootValueChange, rootValue, type, itemValue]); const triggerRef = useAugmentedRef({ ref, methods }); const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); - const accessibilityState = React.useMemo(() => { - return { - expanded: isExpanded, - disabled: isDisabled, - }; - }, [isDisabled, isExpanded]); - const onPress = React.useCallback( (ev: GestureResponderEvent) => { methods.trigger(); if (typeof onPressProp === 'function') { - onPressProp?.(ev); + onPressProp(ev); } }, [onPressProp, methods] @@ -216,7 +190,7 @@ const Trigger = React.forwardRef @@ -245,7 +219,7 @@ const Content = React.forwardRef @@ -273,7 +247,3 @@ export type { function toStringArray(value?: string | string[]) { return Array.isArray(value) ? value : value ? [value] : []; } - -function isItemExpanded(rootValue: string | string[] | undefined, value: string) { - return Array.isArray(rootValue) ? rootValue.includes(value) : rootValue === value; -} diff --git a/packages/accordion-new/src/accordion-web.tsx b/packages/accordion-new/src/accordion-web.tsx index c9cbc88c..24b79294 100644 --- a/packages/accordion-new/src/accordion-web.tsx +++ b/packages/accordion-new/src/accordion-web.tsx @@ -1,13 +1,23 @@ -export { Content, Header, Item, Accordion as Root, Trigger } from '@radix-ui/react-accordion'; import { + Accordion, + AccordionItem, + AccordionTrigger, + Content, + Header, +} from '@radix-ui/react-accordion'; +import { useControllableState } from '@rn-primitives/hooks'; +import * as React from 'react'; +import type { BaseAccordionContentProps, BaseAccordionHeaderProps, BaseAccordionItemProps, + BaseAccordionMultipleProps, BaseAccordionRootProps, + BaseAccordionSingleProps, BaseAccordionTriggerProps, BaseAccordionTriggerRef, } from './types/base'; -import { +import type { AccordionContentWebOnlyProps, AccordionContentWebOnlyRef, AccordionHeaderWebOnlyProps, @@ -19,22 +29,114 @@ import { AccordionTriggerWebOnlyProps, AccordionTriggerWebOnlyRef, } from './types/web-only'; +import { + RootContext, + createItemContext, + createUseItemContext, + useRootContext, +} from './utils/contexts'; +import { isItemExpanded } from './utils/is-item-expanded'; -type AccordionContentWebProps = BaseAccordionContentProps & AccordionContentWebOnlyProps; -type AccordionContentWebRef = AccordionContentWebOnlyRef; +type AccordionRootWebProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; +type AccordionRootWebRef = AccordionRootWebOnlyRef; -type AccordionHeaderWebProps = BaseAccordionHeaderProps & AccordionHeaderWebOnlyProps; -type AccordionHeaderWebRef = AccordionHeaderWebOnlyRef; +const Root = React.forwardRef( + ( + { value: valueProp, onValueChange: onValueChangeProps, defaultValue, collapsible, ...props }, + ref + ) => { + const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: defaultValue, + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + + return ( + + + + ); + } +); + +Root.displayName = 'AccordionRootWeb'; + +const AccordionItemContext = createItemContext(); +const useItemContext = createUseItemContext(AccordionItemContext); type AccordionItemWebProps = BaseAccordionItemProps & AccordionItemWebOnlyProps; type AccordionItemWebRef = AccordionItemWebOnlyRef; -type AccordionRootWebProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; -type AccordionRootWebRef = AccordionRootWebOnlyRef; +const Item = React.forwardRef((props, ref) => { + const { rootValue } = useRootContext(); + + return ( + + + + ); +}); + +Item.displayName = 'AccordionItemWeb'; + +type AccordionHeaderWebProps = BaseAccordionHeaderProps & AccordionHeaderWebOnlyProps; +type AccordionHeaderWebRef = AccordionHeaderWebOnlyRef; type AccordionTriggerWebProps = BaseAccordionTriggerProps & AccordionTriggerWebOnlyProps; type AccordionTriggerWebRef = AccordionTriggerWebOnlyRef & BaseAccordionTriggerRef; +const Trigger = React.forwardRef((props, ref) => { + const triggerRef = React.useRef(null); + + React.useImperativeHandle( + ref, + () => + triggerRef.current + ? { + ...triggerRef.current, + trigger: () => { + triggerRef.current?.click(); + }, + } + : ({} as AccordionTriggerWebRef), + [] + ); + + return ; +}); + +Trigger.displayName = 'AccordionTriggerWeb'; + +type AccordionContentWebProps = BaseAccordionContentProps & AccordionContentWebOnlyProps; +type AccordionContentWebRef = AccordionContentWebOnlyRef; + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; + export type { AccordionContentWebProps as ContentProps, AccordionContentWebRef as ContentRef, diff --git a/packages/accordion-new/src/accordion.web.tsx b/packages/accordion-new/src/accordion.web.tsx index 753718e1..1205d4ff 100644 --- a/packages/accordion-new/src/accordion.web.tsx +++ b/packages/accordion-new/src/accordion.web.tsx @@ -1,12 +1,20 @@ import * as React from 'react'; +import type { PressableProps, PressableStateCallbackType } from 'react-native'; import { Content as ContentWeb, Header as HeaderWeb, Item as ItemWeb, Root as RootWeb, Trigger as TriggerWeb, + useItemContext, + useRootContext, } from './accordion-web'; -import { BaseAccordionMultipleProps, BaseAccordionSingleProps } from './types/base'; +import { convertStyleForWeb } from './convert-style-for-web'; +import { + BaseAccordionMultipleProps, + BaseAccordionSingleProps, + BaseAccordionTriggerRef, +} from './types/base'; import type { ContentProps, HeaderProps, @@ -15,11 +23,7 @@ import type { TriggerProps, TriggerRef, } from './types/universal'; - -import { convertStyleForWeb } from './convert-style-for-web'; -import { PressableProps, PressableStateCallbackType } from 'react-native'; - -// TODO: add contexts +import type { AccordionTriggerWebOnlyRef } from './types/web-only'; function Root({ native: _native, web, ...props }: RootProps) { return ; @@ -58,21 +62,10 @@ const Trigger = React.forwardRef( onPressIn, onPressOut, }); - const triggerRef = React.useRef(null); - - React.useImperativeHandle( - ref, - () => ({ - trigger: () => { - triggerRef.current?.click(); - }, - }), - [triggerRef.current] - ); return ( } children={children} style={style} onClick={onPress} @@ -175,16 +168,6 @@ function useWebPressableProps({ }; } -// TODO: -function useItemContext() { - return {}; -} - -// TODO: -function useRootContext() { - return {}; -} - export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; diff --git a/packages/accordion-new/src/index.ts b/packages/accordion-new/src/index.ts index ce956fe2..19732a38 100644 --- a/packages/accordion-new/src/index.ts +++ b/packages/accordion-new/src/index.ts @@ -1 +1,15 @@ -export * from './accordion'; +export { + Content, + Header, + Item, + Root, + Trigger, + useItemContext, + useRootContext, + type ContentProps, + type HeaderProps, + type ItemProps, + type RootProps, + type TriggerProps, + type TriggerRef, +} from './accordion'; diff --git a/packages/accordion-new/src/types/base.ts b/packages/accordion-new/src/types/base.ts index 7c0ebb4f..8603d7b6 100644 --- a/packages/accordion-new/src/types/base.ts +++ b/packages/accordion-new/src/types/base.ts @@ -8,6 +8,7 @@ import type { } from '@radix-ui/react-accordion'; import type { Prettify, PropsWithoutHTML } from '@rn-primitives/types'; +// TODO: Make stricter type AccordionRootProps = BaseAccordionMultipleProps | BaseAccordionSingleProps; type BaseAccordionRootProps = Prettify< @@ -40,11 +41,30 @@ type BaseAccordionTriggerProps = Omit< type BaseAccordionTriggerRef = { trigger: () => void }; +type BaseAccordionRootContext = Prettify< + Omit< + BaseAccordionRootProps, + 'asChild' | 'defaultValue' | 'children' | 'value' | 'onValueChange' + > & { + rootValue: BaseAccordionRootProps['value']; + onRootValueChange: BaseAccordionRootProps['onValueChange']; + } +> | null; + +type BaseAccordionItemContext = Prettify< + Omit & { + itemValue: BaseAccordionItemProps['value']; + isExpanded: boolean; + } +> | null; + export type { BaseAccordionContentProps, BaseAccordionHeaderProps, + BaseAccordionItemContext, BaseAccordionItemProps, BaseAccordionMultipleProps, + BaseAccordionRootContext, BaseAccordionRootProps, BaseAccordionSingleProps, BaseAccordionTriggerProps, diff --git a/packages/accordion-new/src/utils/contexts.tsx b/packages/accordion-new/src/utils/contexts.tsx new file mode 100644 index 00000000..1ea2a11d --- /dev/null +++ b/packages/accordion-new/src/utils/contexts.tsx @@ -0,0 +1,30 @@ +import * as React from 'react'; +import type { BaseAccordionItemContext, BaseAccordionRootContext } from '../types/base'; + +const RootContext = React.createContext(null); +function useRootContext() { + const context = React.useContext(RootContext); + if (!context) { + throw new Error( + 'Accordion compound components cannot be rendered outside the Accordion component' + ); + } + return context; +} + +const createItemContext = () => + React.createContext<(BaseAccordionItemContext & T) | null>(null); + +function createUseItemContext(accordionItemContext: ReturnType>) { + return () => { + const context = React.useContext(accordionItemContext); + if (!context) { + throw new Error( + 'AccordionItem compound components cannot be rendered outside the AccordionItem component' + ); + } + return context; + }; +} + +export { createItemContext, createUseItemContext, RootContext, useRootContext }; diff --git a/packages/accordion-new/src/utils/is-item-expanded.ts b/packages/accordion-new/src/utils/is-item-expanded.ts new file mode 100644 index 00000000..69aa85d8 --- /dev/null +++ b/packages/accordion-new/src/utils/is-item-expanded.ts @@ -0,0 +1,5 @@ +function isItemExpanded(rootValue: string | string[] | undefined, value: string) { + return Array.isArray(rootValue) ? rootValue.includes(value) : rootValue === value; +} + +export { isItemExpanded }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a74d4b12..7037610d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -534,6 +534,9 @@ importers: '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion + '@rn-primitives/accordion-new': + specifier: workspace:* + version: link:../../packages/accordion-new '@rn-primitives/alert-dialog': specifier: workspace:* version: link:../../packages/alert-dialog From 9c7ac42d64ac59c5a7c8baff7158b738eef02eb7 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Thu, 13 Feb 2025 10:20:29 -0500 Subject: [PATCH 005/106] add todos --- packages/accordion-new/src/convert-style-for-web.ts | 2 ++ packages/types/src/index.ts | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/packages/accordion-new/src/convert-style-for-web.ts b/packages/accordion-new/src/convert-style-for-web.ts index 1b03e797..5b91e4d1 100644 --- a/packages/accordion-new/src/convert-style-for-web.ts +++ b/packages/accordion-new/src/convert-style-for-web.ts @@ -6,6 +6,8 @@ import normalizeRNColor from '@react-native/normalize-colors'; import { type StyleProp, StyleSheet, TextStyle, ViewStyle, ImageStyle } from 'react-native'; +// TODO: add default RN styles - maybe with css through a class name? + // TODO: test this works // TODO: move to other package // TODO: clean up diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index b34c5e65..309264e3 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -11,8 +11,12 @@ import type { View, ViewProps, ViewStyle, + ViewPropsIOS, } from 'react-native'; +// TODO: Export types for ViewStyleIos, ViewStyleAndroid, ViewStyleUniversal (?) https://reactnative.dev/docs/view-style-props#elevation-android +// TODO: Export types for ViewIos, ViewAndroid, ViewUniversal (?) and use the proper style type from above https://reactnative.dev/docs/view#accessibilityignoresinvertcolors-ios + type Prettify = { [K in keyof T]: T[K]; } & {}; From 29b475fc8a033a8a0620ff45e272c01093f53ad6 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 15 Feb 2025 10:17:15 -0500 Subject: [PATCH 006/106] fix(accordion-new): default value + universal root styling + update deps --- apps/nextjs-nativewind/next.config.mjs | 1 + apps/nextjs-nativewind/src/app/page.tsx | 1 - packages/accordion-new/package.json | 5 +- .../accordion-new/src/accordion-native.tsx | 3 +- packages/accordion-new/src/accordion-web.tsx | 3 +- packages/accordion-new/src/accordion.web.tsx | 10 +- .../src/convert-style-for-web.ts | 2 +- .../src/utils/get-default-value.ts | 18 ++ pnpm-lock.yaml | 185 +++++++++++++++++- 9 files changed, 204 insertions(+), 24 deletions(-) create mode 100644 packages/accordion-new/src/utils/get-default-value.ts diff --git a/apps/nextjs-nativewind/next.config.mjs b/apps/nextjs-nativewind/next.config.mjs index eaf6c4ff..382c60c1 100644 --- a/apps/nextjs-nativewind/next.config.mjs +++ b/apps/nextjs-nativewind/next.config.mjs @@ -10,6 +10,7 @@ const nextConfig = { 'react-native-css-interop', 'react-native-reanimated', '@rn-primitives/accordion', + '@rn-primitives/accordion-new', '@rn-primitives/alert-dialog', '@rn-primitives/aspect-ratio', '@rn-primitives/avatar', diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 2121c6b1..c1e4e5c0 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -132,7 +132,6 @@ export default function Home() { } function AccordionExample() { - // TODO: fix typing since this should error return ( diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json index 684c805b..30b2807a 100644 --- a/packages/accordion-new/package.json +++ b/packages/accordion-new/package.json @@ -56,8 +56,8 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-accordion": "^1.2.0", - "@react-native/normalize-colors": "^0.77.0", + "@radix-ui/react-accordion": "^1.2.3", + "@react-native/normalize-colors": "^0.77.1", "@rn-primitives/animatable": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", @@ -68,7 +68,6 @@ "@types/react": "~18.3.12", "react": "18.3.1", "react-native": "0.76.3", - "react-native-reanimated": "~3.16.2", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/accordion-new/src/accordion-native.tsx b/packages/accordion-new/src/accordion-native.tsx index 3b2d562e..46fecf16 100644 --- a/packages/accordion-new/src/accordion-native.tsx +++ b/packages/accordion-new/src/accordion-native.tsx @@ -29,6 +29,7 @@ import { createUseItemContext, useRootContext, } from './utils/contexts'; +import { getDefaultValue } from './utils/get-default-value'; import { isItemExpanded } from './utils/is-item-expanded'; type AccordionRootNativeProps = AccordionRootNativeOnlyProps & BaseAccordionRootProps; @@ -53,7 +54,7 @@ const Root = React.forwardRef( const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = useControllableState<(string | undefined) | string[]>({ prop: valueProp, - defaultProp: defaultValue, + defaultProp: getDefaultValue(defaultValue, type), onChange: onValueChangeProps as (state: string | string[] | undefined) => void, }); diff --git a/packages/accordion-new/src/accordion-web.tsx b/packages/accordion-new/src/accordion-web.tsx index 24b79294..2cca0b99 100644 --- a/packages/accordion-new/src/accordion-web.tsx +++ b/packages/accordion-new/src/accordion-web.tsx @@ -35,6 +35,7 @@ import { createUseItemContext, useRootContext, } from './utils/contexts'; +import { getDefaultValue } from './utils/get-default-value'; import { isItemExpanded } from './utils/is-item-expanded'; type AccordionRootWebProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; @@ -48,7 +49,7 @@ const Root = React.forwardRef( const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = useControllableState<(string | undefined) | string[]>({ prop: valueProp, - defaultProp: defaultValue, + defaultProp: getDefaultValue(defaultValue, props.type), onChange: onValueChangeProps as (state: string | string[] | undefined) => void, }); diff --git a/packages/accordion-new/src/accordion.web.tsx b/packages/accordion-new/src/accordion.web.tsx index 1205d4ff..f84faa76 100644 --- a/packages/accordion-new/src/accordion.web.tsx +++ b/packages/accordion-new/src/accordion.web.tsx @@ -10,11 +10,7 @@ import { useRootContext, } from './accordion-web'; import { convertStyleForWeb } from './convert-style-for-web'; -import { - BaseAccordionMultipleProps, - BaseAccordionSingleProps, - BaseAccordionTriggerRef, -} from './types/base'; +import { BaseAccordionTriggerRef } from './types/base'; import type { ContentProps, HeaderProps, @@ -25,8 +21,8 @@ import type { } from './types/universal'; import type { AccordionTriggerWebOnlyRef } from './types/web-only'; -function Root({ native: _native, web, ...props }: RootProps) { - return ; +function Root({ native: _native, web, style, ...props }: RootProps) { + return ; } function Content({ native: _native, style, web, ...props }: ContentProps) { diff --git a/packages/accordion-new/src/convert-style-for-web.ts b/packages/accordion-new/src/convert-style-for-web.ts index 5b91e4d1..b5ba0e2c 100644 --- a/packages/accordion-new/src/convert-style-for-web.ts +++ b/packages/accordion-new/src/convert-style-for-web.ts @@ -6,7 +6,7 @@ import normalizeRNColor from '@react-native/normalize-colors'; import { type StyleProp, StyleSheet, TextStyle, ViewStyle, ImageStyle } from 'react-native'; -// TODO: add default RN styles - maybe with css through a class name? +// TODO: add default RN styles - either through tailwind preset or copy/pastable css code // TODO: test this works // TODO: move to other package diff --git a/packages/accordion-new/src/utils/get-default-value.ts b/packages/accordion-new/src/utils/get-default-value.ts new file mode 100644 index 00000000..46d8fbec --- /dev/null +++ b/packages/accordion-new/src/utils/get-default-value.ts @@ -0,0 +1,18 @@ +export function getDefaultValue( + defaultValue: string | string[] | undefined, + type: 'multiple' | 'single' +) { + if (!defaultValue) { + return undefined; + } + + if (type === 'multiple' && !Array.isArray(defaultValue)) { + return [defaultValue]; + } + + if (type === 'single' && Array.isArray(defaultValue)) { + return defaultValue[0]; + } + + return defaultValue; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7037610d..9ab66304 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -717,11 +717,11 @@ importers: packages/accordion-new: dependencies: '@radix-ui/react-accordion': - specifier: ^1.2.0 - version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^1.2.3 + version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-native/normalize-colors': - specifier: ^0.77.0 - version: 0.77.0 + specifier: ^0.77.1 + version: 0.77.1 '@rn-primitives/animatable': specifier: workspace:* version: link:../animatable @@ -734,6 +734,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../types + react-native-reanimated: + specifier: '*' + version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-web: specifier: '*' version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -750,9 +753,6 @@ importers: react-native: specifier: 0.76.3 version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - react-native-reanimated: - specifier: ~3.16.2 - version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) tsup: specifier: ^8.1.0 version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) @@ -3309,6 +3309,9 @@ packages: '@radix-ui/primitive@1.1.0': resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + '@radix-ui/react-accordion@1.2.1': resolution: {integrity: sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==} peerDependencies: @@ -3322,6 +3325,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-accordion@1.2.3': + resolution: {integrity: sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-alert-dialog@1.1.2': resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} peerDependencies: @@ -3374,6 +3390,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-collapsible@1.1.3': + resolution: {integrity: sha512-jFSerheto1X03MUC0g6R7LedNW9EEGWdg9W1+MlpkMLwGkgkbUXLPBH/KIuWKXUoeYRVY11llqbTBDzuLg7qrw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-collection@1.1.0': resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} peerDependencies: @@ -3387,6 +3416,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-collection@1.1.2': + resolution: {integrity: sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-compose-refs@1.0.0': resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} peerDependencies: @@ -3401,6 +3443,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-context-menu@2.2.2': resolution: {integrity: sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==} peerDependencies: @@ -3628,6 +3679,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-primitive@2.0.0': resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: @@ -3641,6 +3705,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-primitive@2.0.2': + resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-progress@1.1.0': resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} peerDependencies: @@ -3733,6 +3810,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-slot@1.1.2': + resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-switch@1.1.1': resolution: {integrity: sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==} peerDependencies: @@ -3952,8 +4038,8 @@ packages: '@react-native/normalize-colors@0.76.3': resolution: {integrity: sha512-Yrpmrh4IDEupUUM/dqVxhAN8QW1VEUR3Qrk2lzJC1jB2s46hDe0hrMP2vs12YJqlzshteOthjwXQlY0TgIzgbg==} - '@react-native/normalize-colors@0.77.0': - resolution: {integrity: sha512-qjmxW3xRZe4T0ZBEaXZNHtuUbRgyfybWijf1yUuQwjBt24tSapmIslwhCjpKidA0p93ssPcepquhY0ykH25mew==} + '@react-native/normalize-colors@0.77.1': + resolution: {integrity: sha512-sCmEs/Vpi14CtFYhmKXpPFZntKYGezFGgT9cJANRS2aFseAL4MOomb5Ms+TOQw82aFcwPPjDX6Hrl87WjTf73A==} '@react-native/virtualized-lists@0.76.3': resolution: {integrity: sha512-wTGv9pVh3vAOWb29xFm+J9VRe9dUcUcb9FyaMLT/Hxa88W4wqa5ZMe1V9UvrrBiA1G5DKjv8/1ZcDsJhyugVKA==} @@ -10738,6 +10824,8 @@ snapshots: '@radix-ui/primitive@1.1.0': {} + '@radix-ui/primitive@1.1.1': {} + '@radix-ui/react-accordion@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -10755,6 +10843,23 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-accordion@1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collapsible': 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -10810,6 +10915,22 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-collapsible@1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) @@ -10822,6 +10943,18 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-collection@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-compose-refs@1.0.0(react@18.3.1)': dependencies: '@babel/runtime': 7.26.0 @@ -10833,6 +10966,12 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + '@radix-ui/react-context-menu@2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -11092,6 +11231,16 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) @@ -11101,6 +11250,15 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) @@ -11216,6 +11374,13 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + '@radix-ui/react-slot@1.1.2(@types/react@18.3.12)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.12 + '@radix-ui/react-switch@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -11503,7 +11668,7 @@ snapshots: '@react-native/normalize-colors@0.76.3': {} - '@react-native/normalize-colors@0.77.0': {} + '@react-native/normalize-colors@0.77.1': {} '@react-native/virtualized-lists@0.76.3(@types/react@18.3.12)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: From 8e09ee822705e9591a4473d1500af3c9d5138627 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 15 Feb 2025 15:50:17 -0500 Subject: [PATCH 007/106] fix(accordion-new): remove commented out rn to web styling debugging stuff --- packages/accordion-new/src/accordion.web.tsx | 179 ------------------- 1 file changed, 179 deletions(-) diff --git a/packages/accordion-new/src/accordion.web.tsx b/packages/accordion-new/src/accordion.web.tsx index f84faa76..cdfc0fe2 100644 --- a/packages/accordion-new/src/accordion.web.tsx +++ b/packages/accordion-new/src/accordion.web.tsx @@ -165,182 +165,3 @@ function useWebPressableProps({ } export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; - -export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; - -// function flattenStyle(style?: StyleProp) { -// if (!style) { -// return undefined; -// } -// const reactNativeStyle = Array.isArray(style) ? StyleSheet.flatten(style) : style; -// return StyleSheet.create>( -// reactNativeStyle as StyleSheet.NamedStyles & StyleSheet.NamedStyles -// ) as React.CSSProperties; -// } - -// function normalizeStyle(style?: ViewStyle) {} - -// const normalizeBackgroundColor = (color: ViewStyle['backgroundColor']): string | undefined => { -// if (typeof color === 'string') return color; // Already valid -// if (!color) return undefined; // No color set -// return String(color); // Force conversion -// }; - -// // Extract shared properties that have the same type in both ViewStyle and CSSProperties -// type SharedStyle = { -// [K in keyof ViewStyle & keyof React.CSSProperties as ViewStyle[K] extends React.CSSProperties[K] -// ? K -// : never]: ViewStyle[K]; -// }; - -// // Extract properties that either: -// // 1. Exist only in ViewStyle -// // 2. Exist in both but have different types -// type DifferenceStyle = { -// [K in keyof ViewStyle]: K extends keyof React.CSSProperties -// ? ViewStyle[K] extends React.CSSProperties[K] -// ? never -// : K -// : K; -// }[keyof ViewStyle] extends infer DiffKeys -// ? DiffKeys extends keyof ViewStyle -// ? Pick -// : never -// : never; - -// // normalizeColor https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/normalizeColor.js -// type CSSColor = React.CSSProperties['color']; - -// // normalizeValueWithProperty https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/normalizeValueWithProperty.js - -// // resolveShadowValue https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/resolveShadowValue.js - -// // createReactDOMStyle https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/compiler/createReactDOMStyle.js - -// const PROPERTIES_STANDARD = { -// borderBottomEndRadius: 'borderEndEndRadius', -// borderBottomStartRadius: 'borderEndStartRadius', -// borderTopEndRadius: 'borderStartEndRadius', -// borderTopStartRadius: 'borderStartStartRadius', -// borderEndColor: 'borderInlineEndColor', -// borderEndStyle: 'borderInlineEndStyle', -// borderEndWidth: 'borderInlineEndWidth', -// borderStartColor: 'borderInlineStartColor', -// borderStartStyle: 'borderInlineStartStyle', -// borderStartWidth: 'borderInlineStartWidth', -// end: 'insetInlineEnd', -// marginEnd: 'marginInlineEnd', -// marginHorizontal: 'marginInline', -// marginStart: 'marginInlineStart', -// marginVertical: 'marginBlock', -// paddingEnd: 'paddingInlineEnd', -// paddingHorizontal: 'paddingInline', -// paddingStart: 'paddingInlineStart', -// paddingVertical: 'paddingBlock', -// start: 'insetInlineStart', -// }; - -// const ignoredProps = { -// elevation: true, -// overlayColor: true, -// resizeMode: true, -// tintColor: true, -// }; - -// const obj = { -// animationKeyframes: '', // key of animated, need to get animation names to convert to css https://github.dev/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/StyleSheet/index.js -// backgroundColor: '', -// borderBlockColor: '', -// borderBlockEndColor: '', -// borderBlockStartColor: '', -// borderBottomColor: '', -// borderColor: '', -// borderEndColor: '', -// borderBottomEndRadius: 0, -// borderBottomLeftRadius: 0, -// borderBottomRightRadius: 0, -// borderBottomStartRadius: 0, -// borderCurve: 'circular', -// borderEndEndRadius: 0, -// borderEndStartRadius: 0, -// borderLeftColor: '', -// borderRadius: 0, -// borderRightColor: '', -// borderStartColor: '', -// borderStartEndRadius: 0, -// borderStartStartRadius: 0, -// borderTopColor: '', -// borderTopEndRadius: 0, -// borderTopLeftRadius: 0, -// borderTopRightRadius: 0, -// borderTopStartRadius: 0, -// borderEndWidth: 0, -// borderStartWidth: 0, -// bottom: 0, -// boxShadow: '', -// elevation: 0, -// end: 0, -// flexBasis: 0, -// enableBackground: '', -// filter: '', -// height: 0, -// left: 0, -// margin: 0, -// marginBottom: 0, -// marginEnd: 0, -// marginHorizontal: 0, -// marginLeft: 0, -// marginRight: 0, -// marginStart: 0, -// marginTop: 0, -// marginVertical: 0, -// maxHeight: 0, -// maxWidth: 0, -// minHeight: 0, -// minWidth: 0, -// opacity: 0, -// inset: 0, -// padding: 0, -// paddingBottom: 0, -// insetBlock: 0, -// insetBlockEnd: 0, -// insetBlockStart: 0, -// insetInline: 0, -// insetInlineEnd: 0, -// insetInlineStart: 0, -// paddingEnd: 0, -// paddingHorizontal: 0, -// paddingLeft: 0, -// paddingRight: 0, -// paddingStart: 0, -// paddingTop: 0, -// paddingVertical: 0, -// right: 0, -// start: 0, -// top: 0, -// width: 0, -// marginBlock: 0, -// marginBlockEnd: 0, -// marginBlockStart: 0, -// marginInline: 0, -// marginInlineEnd: 0, -// marginInlineStart: 0, -// paddingBlock: 0, -// paddingBlockEnd: 0, -// paddingBlockStart: 0, -// paddingInline: 0, -// paddingInlineEnd: 0, -// paddingInlineStart: 0, -// pointerEvents: 'auto', -// shadowColor: '', -// shadowOffset: undefined, -// shadowOpacity: 0, -// shadowRadius: 0, -// transform: '', -// transformOrigin: '', -// writingDirection: 'auto', -// } satisfies DifferenceStyle; - -// const style = obj satisfies ImageStyle['overlayColor']; - -// const webStyle: CSSColor = '#deaea' satisfies React.CSSProperties['borderBottomLeftRadius']; From 2f13de531f622aeca1545e7d5bab8f90d48475c2 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 15 Feb 2025 15:51:29 -0500 Subject: [PATCH 008/106] fix(nextjs-nativewind): remove accordion-new context console logs --- apps/nextjs-nativewind/src/components/ui/accordion.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/apps/nextjs-nativewind/src/components/ui/accordion.tsx b/apps/nextjs-nativewind/src/components/ui/accordion.tsx index e85737a8..55dfef8e 100644 --- a/apps/nextjs-nativewind/src/components/ui/accordion.tsx +++ b/apps/nextjs-nativewind/src/components/ui/accordion.tsx @@ -1,8 +1,9 @@ 'use client'; import * as AccordionPrimitive from '@rn-primitives/accordion-new'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; -import { Platform, PressableProps, PressableStateCallbackType, View } from 'react-native'; +import { Platform, type PressableProps, type PressableStateCallbackType, View } from 'react-native'; import Animated, { Extrapolation, FadeIn, @@ -17,7 +18,6 @@ import Animated, { import { TextClassContext } from '~/components/ui/text'; import { ChevronDown } from '~/lib/icons/ChevronDown'; import { cn } from '~/lib/utils'; -import { Slot } from '@rn-primitives/slot'; type AccordionTriggerRef = AccordionPrimitive.TriggerRef; @@ -132,12 +132,6 @@ function AccordionContent({ className, children, ...props }: AccordionPrimitive. } function InnerContent({ children, className }: { children: React.ReactNode; className?: string }) { - const rootContent = AccordionPrimitive.useRootContext(); - const itemContext = AccordionPrimitive.useItemContext(); - - console.log('root context', rootContent); - console.log('item context', itemContext); - if (Platform.OS === 'web') { return {children}; } From cd4781207c5b398470af970713a0e7ecf7c678ff Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 15 Feb 2025 15:52:53 -0500 Subject: [PATCH 009/106] feat(accordion-new): export accordion-native and accordion-web + reorg --- packages/accordion-new/package.json | 34 +--- .../accordion-native.tsx | 108 ++++--------- .../accordion-native/accordion-native.web.tsx | 49 ++++++ .../src/accordion-native/index.ts | 18 +++ .../src/accordion-native/types.ts | 44 +++++ packages/accordion-new/src/accordion-web.tsx | 152 ------------------ .../accordion-web/accordion-web.native.tsx | 27 ++++ .../src/accordion-web/accordion-web.tsx | 104 ++++++++++++ .../accordion-new/src/accordion-web/index.ts | 18 +++ .../accordion-new/src/accordion-web/types.ts | 44 +++++ packages/accordion-new/src/accordion.tsx | 2 - .../src/convert-style-for-web.ts | 2 +- packages/accordion-new/src/index.ts | 25 ++- packages/accordion-new/src/types/base.ts | 1 - .../src/utils/{contexts.tsx => contexts.ts} | 0 packages/accordion-new/tsup.config.ts | 10 +- 16 files changed, 365 insertions(+), 273 deletions(-) rename packages/accordion-new/src/{ => accordion-native}/accordion-native.tsx (63%) create mode 100644 packages/accordion-new/src/accordion-native/accordion-native.web.tsx create mode 100644 packages/accordion-new/src/accordion-native/index.ts create mode 100644 packages/accordion-new/src/accordion-native/types.ts delete mode 100644 packages/accordion-new/src/accordion-web.tsx create mode 100644 packages/accordion-new/src/accordion-web/accordion-web.native.tsx create mode 100644 packages/accordion-new/src/accordion-web/accordion-web.tsx create mode 100644 packages/accordion-new/src/accordion-web/index.ts create mode 100644 packages/accordion-new/src/accordion-web/types.ts rename packages/accordion-new/src/utils/{contexts.tsx => contexts.ts} (100%) diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json index 30b2807a..fcd82b29 100644 --- a/packages/accordion-new/package.json +++ b/packages/accordion-new/package.json @@ -14,34 +14,16 @@ "default": "./dist/index.js" }, "./accordion-native": { - "import": "./dist/accordion-native.mjs", - "require": "./dist/accordion-native.js", - "types": "./dist/accordion-native.d.ts", - "default": "./dist/accordion-native.js" + "import": "./dist/accordion-native/index.mjs", + "require": "./dist/accordion-native/index.js", + "types": "./dist/accordion-native/index.d.ts", + "default": "./dist/accordion-native/index.js" }, "./accordion-web": { - "import": "./dist/accordion-web.mjs", - "require": "./dist/accordion-web.js", - "types": "./dist/accordion-web.d.ts", - "default": "./dist/accordion-web.js" - }, - "./dist/accordion": { - "import": "./dist/accordion.mjs", - "require": "./dist/accordion.js", - "types": "./dist/accordion.d.ts", - "default": "./dist/accordion.js" - }, - "./dist/accordion-native": { - "import": "./dist/accordion-native.mjs", - "require": "./dist/accordion-native.js", - "types": "./dist/accordion-native.d.ts", - "default": "./dist/accordion-native.js" - }, - "./dist/accordion-web": { - "import": "./dist/accordion-web.mjs", - "require": "./dist/accordion-web.js", - "types": "./dist/accordion-web.d.ts", - "default": "./dist/accordion-web.js" + "import": "./dist/accordion-web/index.mjs", + "require": "./dist/accordion-web/index.js", + "types": "./dist/accordion-web/index.d.ts", + "default": "./dist/accordion-web/index.js" } }, "files": [ diff --git a/packages/accordion-new/src/accordion-native.tsx b/packages/accordion-new/src/accordion-native/accordion-native.tsx similarity index 63% rename from packages/accordion-new/src/accordion-native.tsx rename to packages/accordion-new/src/accordion-native/accordion-native.tsx index 46fecf16..1bd1a76b 100644 --- a/packages/accordion-new/src/accordion-native.tsx +++ b/packages/accordion-new/src/accordion-native/accordion-native.tsx @@ -3,39 +3,28 @@ import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import type { GestureResponderEvent } from 'react-native'; -import type { - BaseAccordionContentProps, - BaseAccordionHeaderProps, - BaseAccordionItemProps, - BaseAccordionRootProps, - BaseAccordionTriggerProps, - BaseAccordionTriggerRef, -} from './types/base'; -import type { - AccordionContentNativeOnlyProps, - AccordionContentNativeOnlyRef, - AccordionHeaderNativeOnlyProps, - AccordionHeaderNativeOnlyRef, - AccordionItemNativeOnlyProps, - AccordionItemNativeOnlyRef, - AccordionRootNativeOnlyProps, - AccordionRootNativeOnlyRef, - AccordionTriggerNativeOnlyProps, - AccordionTriggerNativeOnlyRef, -} from './types/native-only'; import { RootContext, createItemContext, createUseItemContext, useRootContext, -} from './utils/contexts'; -import { getDefaultValue } from './utils/get-default-value'; -import { isItemExpanded } from './utils/is-item-expanded'; - -type AccordionRootNativeProps = AccordionRootNativeOnlyProps & BaseAccordionRootProps; -type AccordionRootNativeRef = AccordionRootNativeOnlyRef; - -const Root = React.forwardRef( +} from '../utils/contexts'; +import { getDefaultValue } from '../utils/get-default-value'; +import { isItemExpanded } from '../utils/is-item-expanded'; +import type { + ContentProps, + ContentRef, + HeaderProps, + HeaderRef, + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, +} from './types'; + +const Root = React.forwardRef( ( { asChild, @@ -82,10 +71,7 @@ Root.displayName = 'AccordionRootNative'; const AccordionItemContext = createItemContext<{ nativeID: string }>(); const useItemContext = createUseItemContext(AccordionItemContext); -type AccordionItemNativeProps = AccordionItemNativeOnlyProps & BaseAccordionItemProps; -type AccordionItemNativeRef = AccordionItemNativeOnlyRef; - -const Item = React.forwardRef( +const Item = React.forwardRef( ({ asChild, value: itemValue, disabled, ...viewProps }, ref) => { const { rootValue } = useRootContext(); const nativeID = React.useId(); @@ -108,33 +94,25 @@ const Item = React.forwardRef( Item.displayName = 'AccordionItemNative'; -type AccordionHeaderNativeProps = AccordionHeaderNativeOnlyProps & BaseAccordionHeaderProps; -type AccordionHeaderNativeRef = AccordionHeaderNativeOnlyRef; - -const Header = React.forwardRef( - ({ asChild, ...props }, ref) => { - const { disabled: rootDisabled } = useRootContext(); - const { disabled: itemDisabled, isExpanded } = useItemContext(); - - const Component = asChild ? Slot : AnimatableView; - return ( - - ); - } -); +const Header = React.forwardRef(({ asChild, ...props }, ref) => { + const { disabled: rootDisabled } = useRootContext(); + const { disabled: itemDisabled, isExpanded } = useItemContext(); + + const Component = asChild ? Slot : AnimatableView; + return ( + + ); +}); Header.displayName = 'AccordionHeaderNative'; -type AccordionTriggerNativeProps = AccordionTriggerNativeOnlyProps & BaseAccordionTriggerProps; -type AccordionTriggerNativeRef = AccordionTriggerNativeOnlyRef & BaseAccordionTriggerRef; - -const Trigger = React.forwardRef( +const Trigger = React.forwardRef( ({ asChild, onPress: onPressProp, disabled: disabledProp, ...props }, ref) => { const { disabled: rootDisabled, @@ -201,10 +179,7 @@ const Trigger = React.forwardRef( +const Content = React.forwardRef( ({ asChild, forceMount, ...props }, ref) => { const { type } = useRootContext(); const { nativeID, isExpanded } = useItemContext(); @@ -232,19 +207,6 @@ Content.displayName = 'AccordionContentNative'; export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; -export type { - AccordionContentNativeProps as ContentProps, - AccordionContentNativeRef as ContentRef, - AccordionHeaderNativeProps as HeaderProps, - AccordionHeaderNativeRef as HeaderRef, - AccordionItemNativeProps as ItemProps, - AccordionItemNativeRef as ItemRef, - AccordionRootNativeProps as RootProps, - AccordionRootNativeRef as RootRef, - AccordionTriggerNativeProps as TriggerProps, - AccordionTriggerNativeRef as TriggerRef, -}; - function toStringArray(value?: string | string[]) { return Array.isArray(value) ? value : value ? [value] : []; } diff --git a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx new file mode 100644 index 00000000..a7c4806c --- /dev/null +++ b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx @@ -0,0 +1,49 @@ +import * as React from 'react'; +import { createItemContext, createUseItemContext, useRootContext } from '../utils/contexts'; +import type { + ContentProps, + ContentRef, + HeaderProps, + HeaderRef, + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, +} from './types'; + +const Root = React.forwardRef(() => { + return null; +}); + +Root.displayName = 'AccordionRootNative'; + +const AccordionItemContext = createItemContext<{ nativeID: string }>(); +const useItemContext = createUseItemContext(AccordionItemContext); + +const Item = React.forwardRef(() => { + return null; +}); + +Item.displayName = 'AccordionItemNative'; + +const Header = React.forwardRef(() => { + return null; +}); + +Header.displayName = 'AccordionHeaderNative'; + +const Trigger = React.forwardRef(() => { + return null; +}); + +Trigger.displayName = 'AccordionTriggerNative'; + +const Content = React.forwardRef(() => { + return null; +}); + +Content.displayName = 'AccordionContentNative'; + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/accordion-native/index.ts b/packages/accordion-new/src/accordion-native/index.ts new file mode 100644 index 00000000..efeb5e04 --- /dev/null +++ b/packages/accordion-new/src/accordion-native/index.ts @@ -0,0 +1,18 @@ +export { + Content, + Header, + Item, + Root, + Trigger, + useItemContext, + useRootContext, +} from './accordion-native'; + +export type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types'; diff --git a/packages/accordion-new/src/accordion-native/types.ts b/packages/accordion-new/src/accordion-native/types.ts new file mode 100644 index 00000000..569b5477 --- /dev/null +++ b/packages/accordion-new/src/accordion-native/types.ts @@ -0,0 +1,44 @@ +import type { + BaseAccordionContentProps, + BaseAccordionHeaderProps, + BaseAccordionItemProps, + BaseAccordionRootProps, + BaseAccordionTriggerProps, + BaseAccordionTriggerRef, +} from '../types/base'; +import type { + AccordionContentNativeOnlyProps, + AccordionContentNativeOnlyRef, + AccordionHeaderNativeOnlyProps, + AccordionHeaderNativeOnlyRef, + AccordionItemNativeOnlyProps, + AccordionItemNativeOnlyRef, + AccordionRootNativeOnlyProps, + AccordionRootNativeOnlyRef, + AccordionTriggerNativeOnlyProps, + AccordionTriggerNativeOnlyRef, +} from '../types/native-only'; + +type RootProps = AccordionRootNativeOnlyProps & BaseAccordionRootProps; +type RootRef = AccordionRootNativeOnlyRef; +type ItemProps = AccordionItemNativeOnlyProps & BaseAccordionItemProps; +type ItemRef = AccordionItemNativeOnlyRef; +type HeaderProps = AccordionHeaderNativeOnlyProps & BaseAccordionHeaderProps; +type HeaderRef = AccordionHeaderNativeOnlyRef; +type TriggerProps = AccordionTriggerNativeOnlyProps & BaseAccordionTriggerProps; +type TriggerRef = AccordionTriggerNativeOnlyRef & BaseAccordionTriggerRef; +type ContentProps = AccordionContentNativeOnlyProps & BaseAccordionContentProps; +type ContentRef = AccordionContentNativeOnlyRef; + +export type { + ContentProps, + ContentRef, + HeaderProps, + HeaderRef, + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, +}; diff --git a/packages/accordion-new/src/accordion-web.tsx b/packages/accordion-new/src/accordion-web.tsx deleted file mode 100644 index 2cca0b99..00000000 --- a/packages/accordion-new/src/accordion-web.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import { - Accordion, - AccordionItem, - AccordionTrigger, - Content, - Header, -} from '@radix-ui/react-accordion'; -import { useControllableState } from '@rn-primitives/hooks'; -import * as React from 'react'; -import type { - BaseAccordionContentProps, - BaseAccordionHeaderProps, - BaseAccordionItemProps, - BaseAccordionMultipleProps, - BaseAccordionRootProps, - BaseAccordionSingleProps, - BaseAccordionTriggerProps, - BaseAccordionTriggerRef, -} from './types/base'; -import type { - AccordionContentWebOnlyProps, - AccordionContentWebOnlyRef, - AccordionHeaderWebOnlyProps, - AccordionHeaderWebOnlyRef, - AccordionItemWebOnlyProps, - AccordionItemWebOnlyRef, - AccordionRootWebOnlyProps, - AccordionRootWebOnlyRef, - AccordionTriggerWebOnlyProps, - AccordionTriggerWebOnlyRef, -} from './types/web-only'; -import { - RootContext, - createItemContext, - createUseItemContext, - useRootContext, -} from './utils/contexts'; -import { getDefaultValue } from './utils/get-default-value'; -import { isItemExpanded } from './utils/is-item-expanded'; - -type AccordionRootWebProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; -type AccordionRootWebRef = AccordionRootWebOnlyRef; - -const Root = React.forwardRef( - ( - { value: valueProp, onValueChange: onValueChangeProps, defaultValue, collapsible, ...props }, - ref - ) => { - const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = - useControllableState<(string | undefined) | string[]>({ - prop: valueProp, - defaultProp: getDefaultValue(defaultValue, props.type), - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); - - return ( - - - - ); - } -); - -Root.displayName = 'AccordionRootWeb'; - -const AccordionItemContext = createItemContext(); -const useItemContext = createUseItemContext(AccordionItemContext); - -type AccordionItemWebProps = BaseAccordionItemProps & AccordionItemWebOnlyProps; -type AccordionItemWebRef = AccordionItemWebOnlyRef; - -const Item = React.forwardRef((props, ref) => { - const { rootValue } = useRootContext(); - - return ( - - - - ); -}); - -Item.displayName = 'AccordionItemWeb'; - -type AccordionHeaderWebProps = BaseAccordionHeaderProps & AccordionHeaderWebOnlyProps; -type AccordionHeaderWebRef = AccordionHeaderWebOnlyRef; - -type AccordionTriggerWebProps = BaseAccordionTriggerProps & AccordionTriggerWebOnlyProps; -type AccordionTriggerWebRef = AccordionTriggerWebOnlyRef & BaseAccordionTriggerRef; - -const Trigger = React.forwardRef((props, ref) => { - const triggerRef = React.useRef(null); - - React.useImperativeHandle( - ref, - () => - triggerRef.current - ? { - ...triggerRef.current, - trigger: () => { - triggerRef.current?.click(); - }, - } - : ({} as AccordionTriggerWebRef), - [] - ); - - return ; -}); - -Trigger.displayName = 'AccordionTriggerWeb'; - -type AccordionContentWebProps = BaseAccordionContentProps & AccordionContentWebOnlyProps; -type AccordionContentWebRef = AccordionContentWebOnlyRef; - -export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; - -export type { - AccordionContentWebProps as ContentProps, - AccordionContentWebRef as ContentRef, - AccordionHeaderWebProps as HeaderProps, - AccordionHeaderWebRef as HeaderRef, - AccordionItemWebProps as ItemProps, - AccordionItemWebRef as ItemRef, - AccordionRootWebProps as RootProps, - AccordionRootWebRef as RootRef, - AccordionTriggerWebProps as TriggerProps, - AccordionTriggerWebRef as TriggerRef, -}; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.native.tsx b/packages/accordion-new/src/accordion-web/accordion-web.native.tsx new file mode 100644 index 00000000..ad6a2c6c --- /dev/null +++ b/packages/accordion-new/src/accordion-web/accordion-web.native.tsx @@ -0,0 +1,27 @@ +import { Content, Header } from '@radix-ui/react-accordion'; +import * as React from 'react'; +import { createItemContext, createUseItemContext, useRootContext } from '../utils/contexts'; +import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; + +const Root = React.forwardRef(() => { + return null; +}); + +Root.displayName = 'AccordionRootWeb'; + +const AccordionItemContext = createItemContext(); +const useItemContext = createUseItemContext(AccordionItemContext); + +const Item = React.forwardRef(() => { + return null; +}); + +Item.displayName = 'AccordionItemWeb'; + +const Trigger = React.forwardRef(() => { + return null; +}); + +Trigger.displayName = 'AccordionTriggerWeb'; + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.tsx b/packages/accordion-new/src/accordion-web/accordion-web.tsx new file mode 100644 index 00000000..e1918174 --- /dev/null +++ b/packages/accordion-new/src/accordion-web/accordion-web.tsx @@ -0,0 +1,104 @@ +import { + Accordion, + AccordionItem, + AccordionTrigger, + Content, + Header, +} from '@radix-ui/react-accordion'; +import { useControllableState } from '@rn-primitives/hooks'; +import * as React from 'react'; +import type { BaseAccordionMultipleProps, BaseAccordionSingleProps } from '../types/base'; +import { + RootContext, + createItemContext, + createUseItemContext, + useRootContext, +} from '../utils/contexts'; +import { getDefaultValue } from '../utils/get-default-value'; +import { isItemExpanded } from '../utils/is-item-expanded'; +import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; + +const Root = React.forwardRef( + ( + { value: valueProp, onValueChange: onValueChangeProps, defaultValue, collapsible, ...props }, + ref + ) => { + const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: getDefaultValue(defaultValue, props.type), + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + + return ( + + + + ); + } +); + +Root.displayName = 'AccordionRootWeb'; + +const AccordionItemContext = createItemContext(); +const useItemContext = createUseItemContext(AccordionItemContext); + +const Item = React.forwardRef((props, ref) => { + const { rootValue } = useRootContext(); + + return ( + + + + ); +}); + +Item.displayName = 'AccordionItemWeb'; + +const Trigger = React.forwardRef((props, ref) => { + const triggerRef = React.useRef(null); + + React.useImperativeHandle( + ref, + () => + triggerRef.current + ? { + ...triggerRef.current, + trigger: () => { + triggerRef.current?.click(); + }, + } + : ({} as TriggerRef), + [] + ); + + return ; +}); + +Trigger.displayName = 'Trigger'; + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/accordion-web/index.ts b/packages/accordion-new/src/accordion-web/index.ts new file mode 100644 index 00000000..f18e75f3 --- /dev/null +++ b/packages/accordion-new/src/accordion-web/index.ts @@ -0,0 +1,18 @@ +export { + Content, + Header, + Item, + Root, + Trigger, + useItemContext, + useRootContext, +} from './accordion-web'; + +export type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types'; diff --git a/packages/accordion-new/src/accordion-web/types.ts b/packages/accordion-new/src/accordion-web/types.ts new file mode 100644 index 00000000..b3df2839 --- /dev/null +++ b/packages/accordion-new/src/accordion-web/types.ts @@ -0,0 +1,44 @@ +import type { + BaseAccordionContentProps, + BaseAccordionHeaderProps, + BaseAccordionItemProps, + BaseAccordionRootProps, + BaseAccordionTriggerProps, + BaseAccordionTriggerRef, +} from '../types/base'; +import type { + AccordionContentWebOnlyProps, + AccordionContentWebOnlyRef, + AccordionHeaderWebOnlyProps, + AccordionHeaderWebOnlyRef, + AccordionItemWebOnlyProps, + AccordionItemWebOnlyRef, + AccordionRootWebOnlyProps, + AccordionRootWebOnlyRef, + AccordionTriggerWebOnlyProps, + AccordionTriggerWebOnlyRef, +} from '../types/web-only'; + +type RootProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; +type RootRef = AccordionRootWebOnlyRef; +type ItemProps = BaseAccordionItemProps & AccordionItemWebOnlyProps; +type ItemRef = AccordionItemWebOnlyRef; +type HeaderProps = BaseAccordionHeaderProps & AccordionHeaderWebOnlyProps; +type HeaderRef = AccordionHeaderWebOnlyRef; +type TriggerProps = BaseAccordionTriggerProps & AccordionTriggerWebOnlyProps; +type TriggerRef = AccordionTriggerWebOnlyRef & BaseAccordionTriggerRef; +type ContentProps = BaseAccordionContentProps & AccordionContentWebOnlyProps; +type ContentRef = AccordionContentWebOnlyRef; + +export type { + ContentProps, + ContentRef, + HeaderProps, + HeaderRef, + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, +}; diff --git a/packages/accordion-new/src/accordion.tsx b/packages/accordion-new/src/accordion.tsx index 0c9192d1..74ca54a2 100644 --- a/packages/accordion-new/src/accordion.tsx +++ b/packages/accordion-new/src/accordion.tsx @@ -43,5 +43,3 @@ const Trigger = React.forwardRef( ); export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; - -export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; diff --git a/packages/accordion-new/src/convert-style-for-web.ts b/packages/accordion-new/src/convert-style-for-web.ts index b5ba0e2c..5f65bd4f 100644 --- a/packages/accordion-new/src/convert-style-for-web.ts +++ b/packages/accordion-new/src/convert-style-for-web.ts @@ -6,7 +6,7 @@ import normalizeRNColor from '@react-native/normalize-colors'; import { type StyleProp, StyleSheet, TextStyle, ViewStyle, ImageStyle } from 'react-native'; -// TODO: add default RN styles - either through tailwind preset or copy/pastable css code +// TODO: add default RN styles - either through tailwind preset or copy/pastable css code or look into react-native-web class name, is it generated or can we use it? // TODO: test this works // TODO: move to other package diff --git a/packages/accordion-new/src/index.ts b/packages/accordion-new/src/index.ts index 19732a38..f8dfb972 100644 --- a/packages/accordion-new/src/index.ts +++ b/packages/accordion-new/src/index.ts @@ -1,15 +1,10 @@ -export { - Content, - Header, - Item, - Root, - Trigger, - useItemContext, - useRootContext, - type ContentProps, - type HeaderProps, - type ItemProps, - type RootProps, - type TriggerProps, - type TriggerRef, -} from './accordion'; +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext } from './accordion'; + +export type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types/universal'; diff --git a/packages/accordion-new/src/types/base.ts b/packages/accordion-new/src/types/base.ts index 8603d7b6..2923d0f1 100644 --- a/packages/accordion-new/src/types/base.ts +++ b/packages/accordion-new/src/types/base.ts @@ -8,7 +8,6 @@ import type { } from '@radix-ui/react-accordion'; import type { Prettify, PropsWithoutHTML } from '@rn-primitives/types'; -// TODO: Make stricter type AccordionRootProps = BaseAccordionMultipleProps | BaseAccordionSingleProps; type BaseAccordionRootProps = Prettify< diff --git a/packages/accordion-new/src/utils/contexts.tsx b/packages/accordion-new/src/utils/contexts.ts similarity index 100% rename from packages/accordion-new/src/utils/contexts.tsx rename to packages/accordion-new/src/utils/contexts.ts diff --git a/packages/accordion-new/tsup.config.ts b/packages/accordion-new/tsup.config.ts index fcc343b7..c0e557a5 100644 --- a/packages/accordion-new/tsup.config.ts +++ b/packages/accordion-new/tsup.config.ts @@ -5,15 +5,19 @@ export default defineConfig((options: Options) => ({ 'src/index.ts', 'src/accordion.tsx', 'src/accordion.web.tsx', - 'src/accordion.native.tsx', // TODO: review this - it's not supposed to be the entry file, but it's supposed to be accessible - 'src/accordion-web.tsx', // TODO: review this - it's not supposed to be the entry file, but it's supposed to be accessible + 'src/accordion-web/index.ts', + 'src/accordion-web/accordion-web.tsx', + 'src/accordion-web/accordion-web.native.tsx', + 'src/accordion-native/index.ts', + 'src/accordion-native/accordion-native.tsx', + 'src/accordion-native/accordion-native.web.tsx', ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './accordion'], + external: ['react', './accordion', './accordion-native', './accordion-web'], dts: true, ...options, esbuildOptions(options) { From 2071eb5630c5002755d5471c872dd4489c1414ef Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Feb 2025 09:08:35 -0500 Subject: [PATCH 010/106] improve error message trying to access context from wrong platform --- .../accordion-native/accordion-native.web.tsx | 19 +++++++++++++++---- .../accordion-web/accordion-web.native.tsx | 19 +++++++++++++++---- packages/accordion-new/src/utils/contexts.ts | 9 +++++++-- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx index a7c4806c..6cb0e85d 100644 --- a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx +++ b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { createItemContext, createUseItemContext, useRootContext } from '../utils/contexts'; +import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; import type { ContentProps, ContentRef, @@ -19,9 +19,6 @@ const Root = React.forwardRef(() => { Root.displayName = 'AccordionRootNative'; -const AccordionItemContext = createItemContext<{ nativeID: string }>(); -const useItemContext = createUseItemContext(AccordionItemContext); - const Item = React.forwardRef(() => { return null; }); @@ -46,4 +43,18 @@ const Content = React.forwardRef(() => { Content.displayName = 'AccordionContentNative'; +const useRootContext = () => { + throw new Error( + 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-web`' + ); + return {} as RootContextReturnType; +}; + +const useItemContext = () => { + throw new Error( + 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-web`' + ); + return {} as ItemContextReturnType<{ nativeID: string }>; +}; + export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.native.tsx b/packages/accordion-new/src/accordion-web/accordion-web.native.tsx index ad6a2c6c..b1671dc4 100644 --- a/packages/accordion-new/src/accordion-web/accordion-web.native.tsx +++ b/packages/accordion-new/src/accordion-web/accordion-web.native.tsx @@ -1,6 +1,6 @@ import { Content, Header } from '@radix-ui/react-accordion'; import * as React from 'react'; -import { createItemContext, createUseItemContext, useRootContext } from '../utils/contexts'; +import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; const Root = React.forwardRef(() => { @@ -9,9 +9,6 @@ const Root = React.forwardRef(() => { Root.displayName = 'AccordionRootWeb'; -const AccordionItemContext = createItemContext(); -const useItemContext = createUseItemContext(AccordionItemContext); - const Item = React.forwardRef(() => { return null; }); @@ -24,4 +21,18 @@ const Trigger = React.forwardRef(() => { Trigger.displayName = 'AccordionTriggerWeb'; +const useRootContext = () => { + throw new Error( + 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-native`' + ); + return {} as RootContextReturnType; +}; + +const useItemContext = () => { + throw new Error( + 'Cannot access the web useItemContext on a native platform. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-native`' + ); + return {} as ItemContextReturnType<{ nativeID: string }>; +}; + export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/utils/contexts.ts b/packages/accordion-new/src/utils/contexts.ts index 1ea2a11d..8c005443 100644 --- a/packages/accordion-new/src/utils/contexts.ts +++ b/packages/accordion-new/src/utils/contexts.ts @@ -12,8 +12,9 @@ function useRootContext() { return context; } -const createItemContext = () => - React.createContext<(BaseAccordionItemContext & T) | null>(null); +type RootContextReturnType = ReturnType; + +const createItemContext = () => React.createContext<(BaseAccordionItemContext & T) | null>(null); function createUseItemContext(accordionItemContext: ReturnType>) { return () => { @@ -27,4 +28,8 @@ function createUseItemContext(accordionItemContext: ReturnType = ReturnType>; + export { createItemContext, createUseItemContext, RootContext, useRootContext }; + +export type { ItemContextReturnType, RootContextReturnType }; From f2eb6c84bb09693e079f9072edfc3e29089682ac Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Feb 2025 09:13:24 -0500 Subject: [PATCH 011/106] chore(accordion-new): bump to v2.0.0-alpha.1 --- packages/accordion-new/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json index fcd82b29..95756a73 100644 --- a/packages/accordion-new/package.json +++ b/packages/accordion-new/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/accordion-new", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive accordion", "license": "MIT", "main": "dist/index.js", From 38a9ea828dfbd770d535872fc923bc6aa279bce2 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Feb 2025 09:27:29 -0500 Subject: [PATCH 012/106] add todo in nextjs css file --- apps/nextjs-nativewind/src/app/globals.css | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/nextjs-nativewind/src/app/globals.css b/apps/nextjs-nativewind/src/app/globals.css index ecd511a3..8a6d037e 100644 --- a/apps/nextjs-nativewind/src/app/globals.css +++ b/apps/nextjs-nativewind/src/app/globals.css @@ -48,8 +48,12 @@ } } +/* TODO: Revisit this web styling */ + /* React Native Web styling */ -html, body, #__next { +html, +body, +#__next { -webkit-overflow-scrolling: touch; } #__next { @@ -69,4 +73,4 @@ body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -ms-overflow-style: scrollbar; -} \ No newline at end of file +} From fdab3af3804207ee20313369fa3f0dda9ce6b994 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Feb 2025 09:55:47 -0500 Subject: [PATCH 013/106] feat: add web package and use it --- packages/accordion-new/package.json | 3 +- packages/accordion-new/src/accordion.web.tsx | 121 +++--------------- packages/web/package.json | 48 +++++++ packages/web/src/index.ts | 2 + .../src/rn-style-to-web-style.ts} | 2 +- packages/web/src/use-web-pressable-props.tsx | 92 +++++++++++++ packages/web/tsconfig.json | 29 +++++ packages/web/tsup.config.ts | 18 +++ pnpm-lock.yaml | 25 ++++ 9 files changed, 232 insertions(+), 108 deletions(-) create mode 100644 packages/web/package.json create mode 100644 packages/web/src/index.ts rename packages/{accordion-new/src/convert-style-for-web.ts => web/src/rn-style-to-web-style.ts} (99%) create mode 100644 packages/web/src/use-web-pressable-props.tsx create mode 100644 packages/web/tsconfig.json create mode 100644 packages/web/tsup.config.ts diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json index 95756a73..24ffb20d 100644 --- a/packages/accordion-new/package.json +++ b/packages/accordion-new/package.json @@ -43,7 +43,8 @@ "@rn-primitives/animatable": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/web": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/accordion-new/src/accordion.web.tsx b/packages/accordion-new/src/accordion.web.tsx index cdfc0fe2..e208af14 100644 --- a/packages/accordion-new/src/accordion.web.tsx +++ b/packages/accordion-new/src/accordion.web.tsx @@ -1,5 +1,5 @@ +import { useWebPressableProps } from '@rn-primitives/web'; import * as React from 'react'; -import type { PressableProps, PressableStateCallbackType } from 'react-native'; import { Content as ContentWeb, Header as HeaderWeb, @@ -9,7 +9,7 @@ import { useItemContext, useRootContext, } from './accordion-web'; -import { convertStyleForWeb } from './convert-style-for-web'; +import { rnStyleToWebStyle } from '@rn-primitives/web'; import { BaseAccordionTriggerRef } from './types/base'; import type { ContentProps, @@ -22,19 +22,19 @@ import type { import type { AccordionTriggerWebOnlyRef } from './types/web-only'; function Root({ native: _native, web, style, ...props }: RootProps) { - return ; + return ; } function Content({ native: _native, style, web, ...props }: ContentProps) { - return ; + return ; } function Header({ native: _native, style, web, ...props }: HeaderProps) { - return ; + return ; } function Item({ native: _native, style, web, ...props }: ItemProps) { - return ; + return ; } const Trigger = React.forwardRef( @@ -43,10 +43,10 @@ const Trigger = React.forwardRef( native: _native, style: styleProp, children: childrenProp, - onPress, - onPressIn, - onPressOut, - web, + onPress: onPressProp, + onPressIn: onPressInProp, + onPressOut: onPressOutProp, + web: webProps, ...props }, ref @@ -54,9 +54,9 @@ const Trigger = React.forwardRef( const { children, events, style } = useWebPressableProps({ styleProp, childrenProp, - webProps: web, - onPressIn, - onPressOut, + webProps, + onPressInProp, + onPressOutProp, }); return ( @@ -64,104 +64,13 @@ const Trigger = React.forwardRef( ref={ref as React.LegacyRef} children={children} style={style} - onClick={onPress} + onClick={onPressProp} {...props} - {...web} + {...webProps} {...events} /> ); } ); -// TODO: move useWebPressableProps to a separate file -type WebPressableProps = Pick< - React.ComponentPropsWithoutRef<'button'>, - 'onFocus' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave' | 'onMouseDown' | 'onMouseUp' ->; - -// TODO: refactor this - maybe take all props or something like that -function useWebPressableProps({ - childrenProp, - styleProp, - webProps, - onPressIn, - onPressOut, -}: { - styleProp: PressableProps['style']; - childrenProp: PressableProps['children']; - webProps?: WebPressableProps; - onPressIn?: () => void; - onPressOut?: () => void; -}) { - const [focused, setFocused] = React.useState(false); - const [hovered, setHovered] = React.useState(false); - const [pressed, setPressed] = React.useState(false); - - const events = React.useMemo(() => { - return { - onFocus: (ev: React.FocusEvent) => { - setFocused(true); - webProps?.onFocus?.(ev); - }, - onBlur: (ev: React.FocusEvent) => { - setFocused(false); - webProps?.onBlur?.(ev); - }, - onMouseEnter: (ev: React.MouseEvent) => { - setHovered(true); - webProps?.onMouseEnter?.(ev); - }, - onMouseLeave: (ev: React.MouseEvent) => { - setHovered(false); - webProps?.onMouseLeave?.(ev); - }, - onMouseDown: (ev: React.MouseEvent) => { - setPressed(true); - if (webProps?.onMouseDown) { - webProps.onMouseDown?.(ev); - return; - } - onPressIn?.(); - }, - onMouseUp: (ev: React.MouseEvent) => { - setPressed(false); - if (webProps?.onMouseUp) { - webProps?.onMouseUp?.(ev); - return; - } - onPressOut?.(); - }, - }; - }, [ - webProps?.onFocus, - webProps?.onBlur, - webProps?.onMouseEnter, - webProps?.onMouseLeave, - webProps?.onMouseDown, - webProps?.onMouseUp, - onPressIn, - onPressOut, - ]); - - const style = React.useMemo(() => { - if (!styleProp) { - return; - } - return convertStyleForWeb( - typeof styleProp === 'function' - ? styleProp({ focused, hovered, pressed } as PressableStateCallbackType) - : styleProp - ); - }, [styleProp, focused, hovered, pressed]); - - return { - style, - events, - children: - typeof childrenProp === 'function' - ? childrenProp({ focused, hovered, pressed } as PressableStateCallbackType) - : childrenProp, - }; -} - export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/web/package.json b/packages/web/package.json new file mode 100644 index 00000000..6e6aaffc --- /dev/null +++ b/packages/web/package.json @@ -0,0 +1,48 @@ +{ + "name": "@rn-primitives/web", + "version": "2.0.0-alpha.1", + "description": "Styling utilities for React Native and Web", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.js", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "clean": "rm -rf dist", + "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", + "pub:next": "pnpm publish --no-git-checks --access public --tag next", + "pub:release": "pnpm publish --access public" + }, + "devDependencies": { + "@tsconfig/react-native": "^1.0.1", + "@types/react": "~18.3.12", + "react": "18.3.1", + "react-native": "0.76.3", + "tsup": "^8.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } +} diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts new file mode 100644 index 00000000..1646791d --- /dev/null +++ b/packages/web/src/index.ts @@ -0,0 +1,2 @@ +export { rnStyleToWebStyle } from './rn-style-to-web-style'; +export { useWebPressableProps } from './use-web-pressable-props'; diff --git a/packages/accordion-new/src/convert-style-for-web.ts b/packages/web/src/rn-style-to-web-style.ts similarity index 99% rename from packages/accordion-new/src/convert-style-for-web.ts rename to packages/web/src/rn-style-to-web-style.ts index 5f65bd4f..5bb47f53 100644 --- a/packages/accordion-new/src/convert-style-for-web.ts +++ b/packages/web/src/rn-style-to-web-style.ts @@ -74,7 +74,7 @@ const STYLE_SHORT_FORM_EXPANSIONS = { type Style = TextStyle | ViewStyle | ImageStyle; -export function convertStyleForWeb( +export function rnStyleToWebStyle( reactNativeStyle?: StyleProp ): React.CSSProperties | undefined { if (!reactNativeStyle) { diff --git a/packages/web/src/use-web-pressable-props.tsx b/packages/web/src/use-web-pressable-props.tsx new file mode 100644 index 00000000..1c80b2d6 --- /dev/null +++ b/packages/web/src/use-web-pressable-props.tsx @@ -0,0 +1,92 @@ +import type { PressableProps, PressableStateCallbackType } from 'react-native'; +import * as React from 'react'; +import { rnStyleToWebStyle } from './rn-style-to-web-style'; + +type WebPressableProps = Pick< + React.ComponentPropsWithoutRef<'button'>, + 'onFocus' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave' | 'onMouseDown' | 'onMouseUp' +>; + +export function useWebPressableProps({ + childrenProp, + styleProp, + webProps, + onPressInProp, + onPressOutProp, +}: { + styleProp: PressableProps['style']; + childrenProp: PressableProps['children']; + webProps?: WebPressableProps; + onPressInProp?: () => void; + onPressOutProp?: () => void; +}) { + const [focused, setFocused] = React.useState(false); + const [hovered, setHovered] = React.useState(false); + const [pressed, setPressed] = React.useState(false); + + const events = React.useMemo(() => { + return { + onFocus: (ev: React.FocusEvent) => { + setFocused(true); + webProps?.onFocus?.(ev); + }, + onBlur: (ev: React.FocusEvent) => { + setFocused(false); + webProps?.onBlur?.(ev); + }, + onMouseEnter: (ev: React.MouseEvent) => { + setHovered(true); + webProps?.onMouseEnter?.(ev); + }, + onMouseLeave: (ev: React.MouseEvent) => { + setHovered(false); + webProps?.onMouseLeave?.(ev); + }, + onMouseDown: (ev: React.MouseEvent) => { + setPressed(true); + if (webProps?.onMouseDown) { + webProps.onMouseDown?.(ev); + return; + } + onPressInProp?.(); + }, + onMouseUp: (ev: React.MouseEvent) => { + setPressed(false); + if (webProps?.onMouseUp) { + webProps?.onMouseUp?.(ev); + return; + } + onPressOutProp?.(); + }, + }; + }, [ + webProps?.onFocus, + webProps?.onBlur, + webProps?.onMouseEnter, + webProps?.onMouseLeave, + webProps?.onMouseDown, + webProps?.onMouseUp, + onPressInProp, + onPressOutProp, + ]); + + const style = React.useMemo(() => { + if (!styleProp) { + return; + } + return rnStyleToWebStyle( + typeof styleProp === 'function' + ? styleProp({ focused, hovered, pressed } as PressableStateCallbackType) + : styleProp + ); + }, [styleProp, focused, hovered, pressed]); + + return { + style, + events, + children: + typeof childrenProp === 'function' + ? childrenProp({ focused, hovered, pressed } as PressableStateCallbackType) + : childrenProp, + }; +} diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json new file mode 100644 index 00000000..233db5d7 --- /dev/null +++ b/packages/web/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "@tsconfig/react-native/tsconfig.json", + "include": [ + "." + ], + "compilerOptions": { + "lib": [ + "dom", + "es2019", + "es2020.bigint", + "es2020.date", + "es2020.number", + "es2020.promise", + "es2020.string", + "es2020.symbol.wellknown", + "es2021.promise", + "es2021.string", + "es2021.weakref", + "es2022.array", + "es2022.object", + "es2022.string" + ], + }, + "exclude": [ + "dist", + "build", + "node_modules" + ], +} \ No newline at end of file diff --git a/packages/web/tsup.config.ts b/packages/web/tsup.config.ts new file mode 100644 index 00000000..5a51f537 --- /dev/null +++ b/packages/web/tsup.config.ts @@ -0,0 +1,18 @@ +import { defineConfig, Options } from 'tsup'; + +export default defineConfig((options: Options) => ({ + entry: { + index: 'src/index.ts', + }, + banner: { + js: "'use client'", + }, + clean: true, + format: ['cjs', 'esm'], + external: ['react'], + dts: true, + ...options, + esbuildOptions(options) { + options.jsx = 'preserve'; + }, +})); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ab66304..938ae6e2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -734,6 +734,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../types + '@rn-primitives/web': + specifier: workspace:* + version: link:../web react-native-reanimated: specifier: '*' version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) @@ -1788,6 +1791,28 @@ importers: specifier: ^8.1.0 version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/web: + dependencies: + react-native-web: + specifier: '*' + version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@tsconfig/react-native': + specifier: ^1.0.1 + version: 1.0.5 + '@types/react': + specifier: ~18.3.12 + version: 18.3.12 + react: + specifier: 18.3.1 + version: 18.3.1 + react-native: + specifier: 0.76.3 + version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + tsup: + specifier: ^8.1.0 + version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages: '@0no-co/graphql.web@1.0.11': From 1c96879c9fa35f5a381a7d851cb045d1f339e66a Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Feb 2025 15:00:21 -0500 Subject: [PATCH 014/106] brainstorming in comments --- apps/nextjs-nativewind/src/app/globals.css | 28 +++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/apps/nextjs-nativewind/src/app/globals.css b/apps/nextjs-nativewind/src/app/globals.css index 8a6d037e..fb8bdebb 100644 --- a/apps/nextjs-nativewind/src/app/globals.css +++ b/apps/nextjs-nativewind/src/app/globals.css @@ -48,8 +48,34 @@ } } -/* TODO: Revisit this web styling */ +/* TODO: */ +/* Is react-native-web necessary? Would removing it cause more issues than help? */ +/* Maybe provide primitives for view, text, image, and pressable, made from html elements and then use those components. */ +/* When user is not using react-native-web, default react-native-web styling would be removed and native and web would be different (ex: native is flex and flex-col by default). We could provide a tailwind plugin or copy/paste css snippet to adjust */ +/* Initial CSS reset from react-native-web */ +/* const initialRules = [ + // minimal top-level reset + 'html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}', + 'body{margin:0;}', + // minimal form pseudo-element reset + 'button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}', + 'input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}' +]; */ + +/* Default View Styling */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/View/index.js#L148 */ + +/* Default Text Styling */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/Text/index.js#L189 */ + +/* Default Pressable Styling Inherits from View */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/Text/index.js#L189 */ + +/* Default Image Styling */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/Image/index.js#L378 */ + +/* TODO: Revisit this web styling - not sure if needed + seems like there no element with id __next*/ /* React Native Web styling */ html, body, From ff74d4a548c977a7c45bb308e691b36d28eb892f Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Feb 2025 15:34:08 -0500 Subject: [PATCH 015/106] brainstorming adjustment in comments --- apps/nextjs-nativewind/src/app/globals.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/nextjs-nativewind/src/app/globals.css b/apps/nextjs-nativewind/src/app/globals.css index fb8bdebb..eefce97f 100644 --- a/apps/nextjs-nativewind/src/app/globals.css +++ b/apps/nextjs-nativewind/src/app/globals.css @@ -49,7 +49,7 @@ } /* TODO: */ -/* Is react-native-web necessary? Would removing it cause more issues than help? */ +/* Is react-native or react-native-web necessary? Would removing it cause more issues than help? */ /* Maybe provide primitives for view, text, image, and pressable, made from html elements and then use those components. */ /* When user is not using react-native-web, default react-native-web styling would be removed and native and web would be different (ex: native is flex and flex-col by default). We could provide a tailwind plugin or copy/paste css snippet to adjust */ From e8caa204440cdc057654e9662632027f2012dd9b Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Feb 2025 15:43:11 -0500 Subject: [PATCH 016/106] move @react-native/normalize-colors dep to web package --- packages/accordion-new/package.json | 1 - packages/web/package.json | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json index 24ffb20d..2ee443cf 100644 --- a/packages/accordion-new/package.json +++ b/packages/accordion-new/package.json @@ -39,7 +39,6 @@ }, "dependencies": { "@radix-ui/react-accordion": "^1.2.3", - "@react-native/normalize-colors": "^0.77.1", "@rn-primitives/animatable": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", diff --git a/packages/web/package.json b/packages/web/package.json index 6e6aaffc..2123b14a 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -25,6 +25,9 @@ "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" }, + "dependencies": { + "@react-native/normalize-colors": "^0.77.1" + }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", "@types/react": "~18.3.12", From 5ab625cbdee22432b5e43f896a9647cfa740e83a Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 17 Feb 2025 15:08:16 -0500 Subject: [PATCH 017/106] feat(web): remove react-native and react-native-web peer deps + reorg --- packages/web/package.json | 12 +-------- packages/web/src/index.ts | 3 ++- packages/web/src/style/flatten-style.ts | 27 +++++++++++++++++++ .../src/{ => style}/rn-style-to-web-style.ts | 12 ++++++--- packages/web/src/style/type.ts | 5 ++++ packages/web/src/use-web-pressable-props.tsx | 4 +-- pnpm-lock.yaml | 9 +++---- 7 files changed, 48 insertions(+), 24 deletions(-) create mode 100644 packages/web/src/style/flatten-style.ts rename packages/web/src/{ => style}/rn-style-to-web-style.ts (96%) create mode 100644 packages/web/src/style/type.ts diff --git a/packages/web/package.json b/packages/web/package.json index 2123b14a..edf1e857 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -36,16 +36,6 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "react": "*" } } diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts index 1646791d..5fc55f02 100644 --- a/packages/web/src/index.ts +++ b/packages/web/src/index.ts @@ -1,2 +1,3 @@ -export { rnStyleToWebStyle } from './rn-style-to-web-style'; +export { flattenStyle } from './style/flatten-style'; +export { rnStyleToWebStyle } from './style/rn-style-to-web-style'; export { useWebPressableProps } from './use-web-pressable-props'; diff --git a/packages/web/src/style/flatten-style.ts b/packages/web/src/style/flatten-style.ts new file mode 100644 index 00000000..0a1d2cc8 --- /dev/null +++ b/packages/web/src/style/flatten-style.ts @@ -0,0 +1,27 @@ +// This project uses code from facebook/react-native +// The code is licensed under the MIT License. +// https://github.com/facebook/react-native + +import type { StyleProp } from 'react-native'; +import { Style } from './type'; + +export function flattenStyle(style: StyleProp): T | undefined { + if (style === null || typeof style !== 'object') { + return undefined; + } + + if (!Array.isArray(style)) { + return style; + } + + const result = {} as T; + for (let i = 0, styleLength = style.length; i < styleLength; ++i) { + const computedStyle = flattenStyle(style[i] as T); + if (computedStyle) { + for (const key in computedStyle) { + result[key] = computedStyle[key]; + } + } + } + return result; +} diff --git a/packages/web/src/rn-style-to-web-style.ts b/packages/web/src/style/rn-style-to-web-style.ts similarity index 96% rename from packages/web/src/rn-style-to-web-style.ts rename to packages/web/src/style/rn-style-to-web-style.ts index 5bb47f53..56420cef 100644 --- a/packages/web/src/rn-style-to-web-style.ts +++ b/packages/web/src/style/rn-style-to-web-style.ts @@ -2,9 +2,15 @@ // The code is licensed under the MIT License. // https://github.com/necolas/react-native-web +// This project uses code from facebook/react-native +// The code is licensed under the MIT License. +// https://github.com/facebook/react-native + // @ts-expect-error - no types import normalizeRNColor from '@react-native/normalize-colors'; -import { type StyleProp, StyleSheet, TextStyle, ViewStyle, ImageStyle } from 'react-native'; +import type { StyleProp } from 'react-native'; +import { flattenStyle } from './flatten-style'; +import { Style } from './type'; // TODO: add default RN styles - either through tailwind preset or copy/pastable css code or look into react-native-web class name, is it generated or can we use it? @@ -72,8 +78,6 @@ const STYLE_SHORT_FORM_EXPANSIONS = { paddingBlockEnd: ['paddingBottom'], }; -type Style = TextStyle | ViewStyle | ImageStyle; - export function rnStyleToWebStyle( reactNativeStyle?: StyleProp ): React.CSSProperties | undefined { @@ -82,7 +86,7 @@ export function rnStyleToWebStyle( } const style = ( - Array.isArray(reactNativeStyle) ? StyleSheet.flatten(reactNativeStyle) : reactNativeStyle + Array.isArray(reactNativeStyle) ? flattenStyle(reactNativeStyle) : reactNativeStyle ) as T; const resolvedStyle: Record = {}; diff --git a/packages/web/src/style/type.ts b/packages/web/src/style/type.ts new file mode 100644 index 00000000..2937a90c --- /dev/null +++ b/packages/web/src/style/type.ts @@ -0,0 +1,5 @@ +import type { ImageStyle, TextStyle, ViewStyle } from 'react-native'; + +type Style = TextStyle | ViewStyle | ImageStyle; + +export type { Style }; diff --git a/packages/web/src/use-web-pressable-props.tsx b/packages/web/src/use-web-pressable-props.tsx index 1c80b2d6..fc98d218 100644 --- a/packages/web/src/use-web-pressable-props.tsx +++ b/packages/web/src/use-web-pressable-props.tsx @@ -1,6 +1,6 @@ -import type { PressableProps, PressableStateCallbackType } from 'react-native'; import * as React from 'react'; -import { rnStyleToWebStyle } from './rn-style-to-web-style'; +import type { PressableProps, PressableStateCallbackType } from 'react-native'; +import { rnStyleToWebStyle } from './style/rn-style-to-web-style'; type WebPressableProps = Pick< React.ComponentPropsWithoutRef<'button'>, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 938ae6e2..2ca2a56a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -719,9 +719,6 @@ importers: '@radix-ui/react-accordion': specifier: ^1.2.3 version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@react-native/normalize-colors': - specifier: ^0.77.1 - version: 0.77.1 '@rn-primitives/animatable': specifier: workspace:* version: link:../animatable @@ -1793,9 +1790,9 @@ importers: packages/web: dependencies: - react-native-web: - specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@react-native/normalize-colors': + specifier: ^0.77.1 + version: 0.77.1 devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 From 5d30e35962840de7d24a59f4f9ac9e1aa915c0f1 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 17 Feb 2025 16:58:57 -0500 Subject: [PATCH 018/106] feat(accordion-new): use web and native exports + use .web file extensions instead of .native --- packages/accordion-new/package.json | 6 +- .../accordion-native/accordion-native.web.tsx | 4 +- .../accordion-web/accordion-web.native.tsx | 38 ------ .../src/accordion-web/accordion-web.tsx | 112 ++++-------------- .../src/accordion-web/accordion-web.web.tsx | 104 ++++++++++++++++ packages/accordion-new/tsup.config.ts | 6 +- 6 files changed, 135 insertions(+), 135 deletions(-) delete mode 100644 packages/accordion-new/src/accordion-web/accordion-web.native.tsx create mode 100644 packages/accordion-new/src/accordion-web/accordion-web.web.tsx diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json index 2ee443cf..b89b9e7c 100644 --- a/packages/accordion-new/package.json +++ b/packages/accordion-new/package.json @@ -13,13 +13,13 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./accordion-native": { + "./native": { "import": "./dist/accordion-native/index.mjs", "require": "./dist/accordion-native/index.js", "types": "./dist/accordion-native/index.d.ts", "default": "./dist/accordion-native/index.js" }, - "./accordion-web": { + "./web": { "import": "./dist/accordion-web/index.mjs", "require": "./dist/accordion-web/index.js", "types": "./dist/accordion-web/index.d.ts", @@ -32,7 +32,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx index 6cb0e85d..47c5f752 100644 --- a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx +++ b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx @@ -45,14 +45,14 @@ Content.displayName = 'AccordionContentNative'; const useRootContext = () => { throw new Error( - 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-web`' + 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' ); return {} as RootContextReturnType; }; const useItemContext = () => { throw new Error( - 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-web`' + 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' ); return {} as ItemContextReturnType<{ nativeID: string }>; }; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.native.tsx b/packages/accordion-new/src/accordion-web/accordion-web.native.tsx deleted file mode 100644 index b1671dc4..00000000 --- a/packages/accordion-new/src/accordion-web/accordion-web.native.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Content, Header } from '@radix-ui/react-accordion'; -import * as React from 'react'; -import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; -import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; - -const Root = React.forwardRef(() => { - return null; -}); - -Root.displayName = 'AccordionRootWeb'; - -const Item = React.forwardRef(() => { - return null; -}); - -Item.displayName = 'AccordionItemWeb'; - -const Trigger = React.forwardRef(() => { - return null; -}); - -Trigger.displayName = 'AccordionTriggerWeb'; - -const useRootContext = () => { - throw new Error( - 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-native`' - ); - return {} as RootContextReturnType; -}; - -const useItemContext = () => { - throw new Error( - 'Cannot access the web useItemContext on a native platform. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/accordion-native`' - ); - return {} as ItemContextReturnType<{ nativeID: string }>; -}; - -export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.tsx b/packages/accordion-new/src/accordion-web/accordion-web.tsx index e1918174..5b63cc35 100644 --- a/packages/accordion-new/src/accordion-web/accordion-web.tsx +++ b/packages/accordion-new/src/accordion-web/accordion-web.tsx @@ -1,104 +1,38 @@ -import { - Accordion, - AccordionItem, - AccordionTrigger, - Content, - Header, -} from '@radix-ui/react-accordion'; -import { useControllableState } from '@rn-primitives/hooks'; +import { Content, Header } from '@radix-ui/react-accordion'; import * as React from 'react'; -import type { BaseAccordionMultipleProps, BaseAccordionSingleProps } from '../types/base'; -import { - RootContext, - createItemContext, - createUseItemContext, - useRootContext, -} from '../utils/contexts'; -import { getDefaultValue } from '../utils/get-default-value'; -import { isItemExpanded } from '../utils/is-item-expanded'; +import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; -const Root = React.forwardRef( - ( - { value: valueProp, onValueChange: onValueChangeProps, defaultValue, collapsible, ...props }, - ref - ) => { - const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = - useControllableState<(string | undefined) | string[]>({ - prop: valueProp, - defaultProp: getDefaultValue(defaultValue, props.type), - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); - - return ( - - - - ); - } -); +const Root = React.forwardRef(() => { + return null; +}); Root.displayName = 'AccordionRootWeb'; -const AccordionItemContext = createItemContext(); -const useItemContext = createUseItemContext(AccordionItemContext); - -const Item = React.forwardRef((props, ref) => { - const { rootValue } = useRootContext(); - - return ( - - - - ); +const Item = React.forwardRef(() => { + return null; }); Item.displayName = 'AccordionItemWeb'; -const Trigger = React.forwardRef((props, ref) => { - const triggerRef = React.useRef(null); +const Trigger = React.forwardRef(() => { + return null; +}); - React.useImperativeHandle( - ref, - () => - triggerRef.current - ? { - ...triggerRef.current, - trigger: () => { - triggerRef.current?.click(); - }, - } - : ({} as TriggerRef), - [] - ); +Trigger.displayName = 'AccordionTriggerWeb'; - return ; -}); +const useRootContext = () => { + throw new Error( + 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/native`' + ); + return {} as RootContextReturnType; +}; -Trigger.displayName = 'Trigger'; +const useItemContext = () => { + throw new Error( + 'Cannot access the web useItemContext on a native platform. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/native`' + ); + return {} as ItemContextReturnType<{ nativeID: string }>; +}; export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.web.tsx b/packages/accordion-new/src/accordion-web/accordion-web.web.tsx new file mode 100644 index 00000000..e1918174 --- /dev/null +++ b/packages/accordion-new/src/accordion-web/accordion-web.web.tsx @@ -0,0 +1,104 @@ +import { + Accordion, + AccordionItem, + AccordionTrigger, + Content, + Header, +} from '@radix-ui/react-accordion'; +import { useControllableState } from '@rn-primitives/hooks'; +import * as React from 'react'; +import type { BaseAccordionMultipleProps, BaseAccordionSingleProps } from '../types/base'; +import { + RootContext, + createItemContext, + createUseItemContext, + useRootContext, +} from '../utils/contexts'; +import { getDefaultValue } from '../utils/get-default-value'; +import { isItemExpanded } from '../utils/is-item-expanded'; +import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; + +const Root = React.forwardRef( + ( + { value: valueProp, onValueChange: onValueChangeProps, defaultValue, collapsible, ...props }, + ref + ) => { + const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: getDefaultValue(defaultValue, props.type), + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + + return ( + + + + ); + } +); + +Root.displayName = 'AccordionRootWeb'; + +const AccordionItemContext = createItemContext(); +const useItemContext = createUseItemContext(AccordionItemContext); + +const Item = React.forwardRef((props, ref) => { + const { rootValue } = useRootContext(); + + return ( + + + + ); +}); + +Item.displayName = 'AccordionItemWeb'; + +const Trigger = React.forwardRef((props, ref) => { + const triggerRef = React.useRef(null); + + React.useImperativeHandle( + ref, + () => + triggerRef.current + ? { + ...triggerRef.current, + trigger: () => { + triggerRef.current?.click(); + }, + } + : ({} as TriggerRef), + [] + ); + + return ; +}); + +Trigger.displayName = 'Trigger'; + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/tsup.config.ts b/packages/accordion-new/tsup.config.ts index c0e557a5..9b2bed7d 100644 --- a/packages/accordion-new/tsup.config.ts +++ b/packages/accordion-new/tsup.config.ts @@ -5,12 +5,12 @@ export default defineConfig((options: Options) => ({ 'src/index.ts', 'src/accordion.tsx', 'src/accordion.web.tsx', - 'src/accordion-web/index.ts', - 'src/accordion-web/accordion-web.tsx', - 'src/accordion-web/accordion-web.native.tsx', 'src/accordion-native/index.ts', 'src/accordion-native/accordion-native.tsx', 'src/accordion-native/accordion-native.web.tsx', + 'src/accordion-web/index.ts', + 'src/accordion-web/accordion-web.tsx', + 'src/accordion-web/accordion-web.web.tsx', ], banner: { js: "'use client'", From 576525c624624c8dff9d3a0a9ed9654c907c6c1f Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 17 Feb 2025 16:59:14 -0500 Subject: [PATCH 019/106] update clean script --- packages/accordion/package.json | 2 +- packages/alert-dialog/package.json | 2 +- packages/animatable/package.json | 2 +- packages/aspect-ratio/package.json | 2 +- packages/avatar/package.json | 2 +- packages/checkbox/package.json | 2 +- packages/collapsible/package.json | 2 +- packages/context-menu/package.json | 2 +- packages/dialog/package.json | 2 +- packages/dropdown-menu/package.json | 2 +- packages/hooks/package.json | 2 +- packages/hover-card/package.json | 2 +- packages/label/package.json | 2 +- packages/menubar/package.json | 2 +- packages/navigation-menu/package.json | 2 +- packages/popover/package.json | 2 +- packages/portal/package.json | 2 +- packages/progress/package.json | 2 +- packages/radio-group/package.json | 2 +- packages/select/package.json | 2 +- packages/separator/package.json | 2 +- packages/slider/package.json | 2 +- packages/slot/package.json | 2 +- packages/switch/package.json | 2 +- packages/table/package.json | 2 +- packages/tabs/package.json | 2 +- packages/toast/package.json | 2 +- packages/toggle-group/package.json | 2 +- packages/toggle/package.json | 2 +- packages/toolbar/package.json | 2 +- packages/tooltip/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- packages/web/package.json | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/accordion/package.json b/packages/accordion/package.json index 19bd0b9f..70e31479 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index 177465c5..927f5432 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/animatable/package.json b/packages/animatable/package.json index bb01537f..9a3605e1 100644 --- a/packages/animatable/package.json +++ b/packages/animatable/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index a14dacb5..1196abf7 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/avatar/package.json b/packages/avatar/package.json index 07e8d8ea..d2cf3c57 100644 --- a/packages/avatar/package.json +++ b/packages/avatar/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json index 5b92bdb2..b8dcea5a 100644 --- a/packages/checkbox/package.json +++ b/packages/checkbox/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/collapsible/package.json b/packages/collapsible/package.json index 0e001fa6..e4bb13f7 100644 --- a/packages/collapsible/package.json +++ b/packages/collapsible/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/context-menu/package.json b/packages/context-menu/package.json index a94db89d..2eed27cb 100644 --- a/packages/context-menu/package.json +++ b/packages/context-menu/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/dialog/package.json b/packages/dialog/package.json index 39ecd689..f051ea8e 100644 --- a/packages/dialog/package.json +++ b/packages/dialog/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/dropdown-menu/package.json b/packages/dropdown-menu/package.json index 6c398446..91b8781f 100644 --- a/packages/dropdown-menu/package.json +++ b/packages/dropdown-menu/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 6cf3ba6a..96326678 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/hover-card/package.json b/packages/hover-card/package.json index 494b80d9..5ea3f5a6 100644 --- a/packages/hover-card/package.json +++ b/packages/hover-card/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/label/package.json b/packages/label/package.json index 2b889b25..b3b5e436 100644 --- a/packages/label/package.json +++ b/packages/label/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/menubar/package.json b/packages/menubar/package.json index ee371212..a43ca995 100644 --- a/packages/menubar/package.json +++ b/packages/menubar/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/navigation-menu/package.json b/packages/navigation-menu/package.json index 9288ba06..eacfe5e2 100644 --- a/packages/navigation-menu/package.json +++ b/packages/navigation-menu/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/popover/package.json b/packages/popover/package.json index 38b86a63..70e449a3 100644 --- a/packages/popover/package.json +++ b/packages/popover/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/portal/package.json b/packages/portal/package.json index bd8071b4..5647e5a6 100644 --- a/packages/portal/package.json +++ b/packages/portal/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/progress/package.json b/packages/progress/package.json index 86279876..7e44490b 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/radio-group/package.json b/packages/radio-group/package.json index 4e59bf45..76a4d9b6 100644 --- a/packages/radio-group/package.json +++ b/packages/radio-group/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/select/package.json b/packages/select/package.json index c7057728..317ffe26 100644 --- a/packages/select/package.json +++ b/packages/select/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/separator/package.json b/packages/separator/package.json index d4530da0..3bb3f3cc 100644 --- a/packages/separator/package.json +++ b/packages/separator/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/slider/package.json b/packages/slider/package.json index 2635811e..612941c2 100644 --- a/packages/slider/package.json +++ b/packages/slider/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/slot/package.json b/packages/slot/package.json index 438cd6ea..5cd49b3f 100644 --- a/packages/slot/package.json +++ b/packages/slot/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/switch/package.json b/packages/switch/package.json index 59919d66..601824ec 100644 --- a/packages/switch/package.json +++ b/packages/switch/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/table/package.json b/packages/table/package.json index bb8c5e4e..6c0a6005 100644 --- a/packages/table/package.json +++ b/packages/table/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/tabs/package.json b/packages/tabs/package.json index fe37b26c..2a88932c 100644 --- a/packages/tabs/package.json +++ b/packages/tabs/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/toast/package.json b/packages/toast/package.json index b42a5cf8..7be08adc 100644 --- a/packages/toast/package.json +++ b/packages/toast/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index 006ab418..b83b8f36 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 9e881154..90a1018b 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/toolbar/package.json b/packages/toolbar/package.json index b6cd56be..f1ec4a61 100644 --- a/packages/toolbar/package.json +++ b/packages/toolbar/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json index 8cd62920..f9b27bf3 100644 --- a/packages/tooltip/package.json +++ b/packages/tooltip/package.json @@ -26,7 +26,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/types/package.json b/packages/types/package.json index 35f0f5f5..73bf20fc 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/utils/package.json b/packages/utils/package.json index 2b216572..58db97ad 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" diff --git a/packages/web/package.json b/packages/web/package.json index edf1e857..07f63780 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "clean": "rm -rf dist", + "clean": "rm -rf dist .turbo node_modules", "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", "pub:next": "pnpm publish --no-git-checks --access public --tag next", "pub:release": "pnpm publish --access public" From 7b1f4df5ef3c413d6986b812712febaba8273318 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Tue, 18 Feb 2025 15:20:05 -0500 Subject: [PATCH 020/106] feat(nextjs): use platform select instead of web prop --- .../nextjs-nativewind/src/components/ui/accordion.tsx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/nextjs-nativewind/src/components/ui/accordion.tsx b/apps/nextjs-nativewind/src/components/ui/accordion.tsx index 55dfef8e..dcb010fc 100644 --- a/apps/nextjs-nativewind/src/components/ui/accordion.tsx +++ b/apps/nextjs-nativewind/src/components/ui/accordion.tsx @@ -118,11 +118,12 @@ function AccordionContent({ className, children, ...props }: AccordionPrimitive. return ( {children} From 559fbc78c36a41a2e940595c772ae82c286b205d Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Tue, 18 Feb 2025 15:20:54 -0500 Subject: [PATCH 021/106] refactor(accordion-new): move types --- .../src/accordion-native/accordion-native.tsx | 18 ++++---- .../accordion-native/accordion-native.web.tsx | 4 +- .../src/accordion-native/index.ts | 2 +- .../src/accordion-web/accordion-web.tsx | 9 +++- .../src/accordion-web/accordion-web.web.tsx | 9 +++- .../accordion-new/src/accordion-web/index.ts | 2 +- .../accordion-new/src/accordion-web/types.ts | 44 ------------------- packages/accordion-new/src/accordion.web.tsx | 5 +-- .../accordion-new/src/types/native-only.ts | 30 ------------- .../types.ts => types/native.ts} | 37 ++++++++++------ packages/accordion-new/src/types/universal.ts | 4 +- .../src/types/{web-only.ts => web.ts} | 24 +++++++++- 12 files changed, 80 insertions(+), 108 deletions(-) delete mode 100644 packages/accordion-new/src/accordion-web/types.ts delete mode 100644 packages/accordion-new/src/types/native-only.ts rename packages/accordion-new/src/{accordion-native/types.ts => types/native.ts} (64%) rename packages/accordion-new/src/types/{web-only.ts => web.ts} (67%) diff --git a/packages/accordion-new/src/accordion-native/accordion-native.tsx b/packages/accordion-new/src/accordion-native/accordion-native.tsx index 1bd1a76b..5abd6251 100644 --- a/packages/accordion-new/src/accordion-native/accordion-native.tsx +++ b/packages/accordion-new/src/accordion-native/accordion-native.tsx @@ -3,14 +3,6 @@ import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import type { GestureResponderEvent } from 'react-native'; -import { - RootContext, - createItemContext, - createUseItemContext, - useRootContext, -} from '../utils/contexts'; -import { getDefaultValue } from '../utils/get-default-value'; -import { isItemExpanded } from '../utils/is-item-expanded'; import type { ContentProps, ContentRef, @@ -22,7 +14,15 @@ import type { RootRef, TriggerProps, TriggerRef, -} from './types'; +} from '../types/native'; +import { + RootContext, + createItemContext, + createUseItemContext, + useRootContext, +} from '../utils/contexts'; +import { getDefaultValue } from '../utils/get-default-value'; +import { isItemExpanded } from '../utils/is-item-expanded'; const Root = React.forwardRef( ( diff --git a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx index 47c5f752..6dfd5639 100644 --- a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx +++ b/packages/accordion-new/src/accordion-native/accordion-native.web.tsx @@ -1,5 +1,4 @@ import * as React from 'react'; -import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; import type { ContentProps, ContentRef, @@ -11,7 +10,8 @@ import type { RootRef, TriggerProps, TriggerRef, -} from './types'; +} from '../types/native'; +import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; const Root = React.forwardRef(() => { return null; diff --git a/packages/accordion-new/src/accordion-native/index.ts b/packages/accordion-new/src/accordion-native/index.ts index efeb5e04..6e4453c5 100644 --- a/packages/accordion-new/src/accordion-native/index.ts +++ b/packages/accordion-new/src/accordion-native/index.ts @@ -15,4 +15,4 @@ export type { RootProps, TriggerProps, TriggerRef, -} from './types'; +} from '../types/native'; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.tsx b/packages/accordion-new/src/accordion-web/accordion-web.tsx index 5b63cc35..d43b3ce0 100644 --- a/packages/accordion-new/src/accordion-web/accordion-web.tsx +++ b/packages/accordion-new/src/accordion-web/accordion-web.tsx @@ -1,7 +1,14 @@ import { Content, Header } from '@radix-ui/react-accordion'; import * as React from 'react'; +import type { + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, +} from '../types/web'; import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; -import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; const Root = React.forwardRef(() => { return null; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.web.tsx b/packages/accordion-new/src/accordion-web/accordion-web.web.tsx index e1918174..3c7c6d90 100644 --- a/packages/accordion-new/src/accordion-web/accordion-web.web.tsx +++ b/packages/accordion-new/src/accordion-web/accordion-web.web.tsx @@ -8,6 +8,14 @@ import { import { useControllableState } from '@rn-primitives/hooks'; import * as React from 'react'; import type { BaseAccordionMultipleProps, BaseAccordionSingleProps } from '../types/base'; +import type { + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, +} from '../types/web'; import { RootContext, createItemContext, @@ -16,7 +24,6 @@ import { } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; import { isItemExpanded } from '../utils/is-item-expanded'; -import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; const Root = React.forwardRef( ( diff --git a/packages/accordion-new/src/accordion-web/index.ts b/packages/accordion-new/src/accordion-web/index.ts index f18e75f3..4cac7e05 100644 --- a/packages/accordion-new/src/accordion-web/index.ts +++ b/packages/accordion-new/src/accordion-web/index.ts @@ -15,4 +15,4 @@ export type { RootProps, TriggerProps, TriggerRef, -} from './types'; +} from '../types/web'; diff --git a/packages/accordion-new/src/accordion-web/types.ts b/packages/accordion-new/src/accordion-web/types.ts deleted file mode 100644 index b3df2839..00000000 --- a/packages/accordion-new/src/accordion-web/types.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { - BaseAccordionContentProps, - BaseAccordionHeaderProps, - BaseAccordionItemProps, - BaseAccordionRootProps, - BaseAccordionTriggerProps, - BaseAccordionTriggerRef, -} from '../types/base'; -import type { - AccordionContentWebOnlyProps, - AccordionContentWebOnlyRef, - AccordionHeaderWebOnlyProps, - AccordionHeaderWebOnlyRef, - AccordionItemWebOnlyProps, - AccordionItemWebOnlyRef, - AccordionRootWebOnlyProps, - AccordionRootWebOnlyRef, - AccordionTriggerWebOnlyProps, - AccordionTriggerWebOnlyRef, -} from '../types/web-only'; - -type RootProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; -type RootRef = AccordionRootWebOnlyRef; -type ItemProps = BaseAccordionItemProps & AccordionItemWebOnlyProps; -type ItemRef = AccordionItemWebOnlyRef; -type HeaderProps = BaseAccordionHeaderProps & AccordionHeaderWebOnlyProps; -type HeaderRef = AccordionHeaderWebOnlyRef; -type TriggerProps = BaseAccordionTriggerProps & AccordionTriggerWebOnlyProps; -type TriggerRef = AccordionTriggerWebOnlyRef & BaseAccordionTriggerRef; -type ContentProps = BaseAccordionContentProps & AccordionContentWebOnlyProps; -type ContentRef = AccordionContentWebOnlyRef; - -export type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -}; diff --git a/packages/accordion-new/src/accordion.web.tsx b/packages/accordion-new/src/accordion.web.tsx index e208af14..88b9289e 100644 --- a/packages/accordion-new/src/accordion.web.tsx +++ b/packages/accordion-new/src/accordion.web.tsx @@ -1,4 +1,4 @@ -import { useWebPressableProps } from '@rn-primitives/web'; +import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/web'; import * as React from 'react'; import { Content as ContentWeb, @@ -9,7 +9,7 @@ import { useItemContext, useRootContext, } from './accordion-web'; -import { rnStyleToWebStyle } from '@rn-primitives/web'; +import type { AccordionTriggerWebOnlyRef } from './types/web'; import { BaseAccordionTriggerRef } from './types/base'; import type { ContentProps, @@ -19,7 +19,6 @@ import type { TriggerProps, TriggerRef, } from './types/universal'; -import type { AccordionTriggerWebOnlyRef } from './types/web-only'; function Root({ native: _native, web, style, ...props }: RootProps) { return ; diff --git a/packages/accordion-new/src/types/native-only.ts b/packages/accordion-new/src/types/native-only.ts deleted file mode 100644 index 1cdd742e..00000000 --- a/packages/accordion-new/src/types/native-only.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { PressableRef, ViewRef } from '@rn-primitives/types'; -import type { AnimatablePressableProps, AnimatableViewProps } from '@rn-primitives/animatable'; - -type AccordionContentNativeOnlyProps = AnimatableViewProps; -type AccordionContentNativeOnlyRef = ViewRef; - -type AccordionHeaderNativeOnlyProps = AnimatableViewProps; -type AccordionHeaderNativeOnlyRef = ViewRef; - -type AccordionItemNativeOnlyProps = AnimatableViewProps; -type AccordionItemNativeOnlyRef = ViewRef; - -type AccordionRootNativeOnlyProps = AnimatableViewProps; -type AccordionRootNativeOnlyRef = ViewRef; - -type AccordionTriggerNativeOnlyProps = AnimatablePressableProps; -type AccordionTriggerNativeOnlyRef = PressableRef; - -export type { - AccordionContentNativeOnlyProps, - AccordionContentNativeOnlyRef, - AccordionHeaderNativeOnlyProps, - AccordionHeaderNativeOnlyRef, - AccordionItemNativeOnlyProps, - AccordionItemNativeOnlyRef, - AccordionRootNativeOnlyProps, - AccordionRootNativeOnlyRef, - AccordionTriggerNativeOnlyProps, - AccordionTriggerNativeOnlyRef, -}; diff --git a/packages/accordion-new/src/accordion-native/types.ts b/packages/accordion-new/src/types/native.ts similarity index 64% rename from packages/accordion-new/src/accordion-native/types.ts rename to packages/accordion-new/src/types/native.ts index 569b5477..3a712435 100644 --- a/packages/accordion-new/src/accordion-native/types.ts +++ b/packages/accordion-new/src/types/native.ts @@ -1,3 +1,5 @@ +import type { AnimatablePressableProps, AnimatableViewProps } from '@rn-primitives/animatable'; +import type { PressableRef, ViewRef } from '@rn-primitives/types'; import type { BaseAccordionContentProps, BaseAccordionHeaderProps, @@ -5,19 +7,18 @@ import type { BaseAccordionRootProps, BaseAccordionTriggerProps, BaseAccordionTriggerRef, -} from '../types/base'; -import type { - AccordionContentNativeOnlyProps, - AccordionContentNativeOnlyRef, - AccordionHeaderNativeOnlyProps, - AccordionHeaderNativeOnlyRef, - AccordionItemNativeOnlyProps, - AccordionItemNativeOnlyRef, - AccordionRootNativeOnlyProps, - AccordionRootNativeOnlyRef, - AccordionTriggerNativeOnlyProps, - AccordionTriggerNativeOnlyRef, -} from '../types/native-only'; +} from './base'; + +type AccordionContentNativeOnlyProps = AnimatableViewProps; +type AccordionContentNativeOnlyRef = ViewRef; +type AccordionHeaderNativeOnlyProps = AnimatableViewProps; +type AccordionHeaderNativeOnlyRef = ViewRef; +type AccordionItemNativeOnlyProps = AnimatableViewProps; +type AccordionItemNativeOnlyRef = ViewRef; +type AccordionRootNativeOnlyProps = AnimatableViewProps; +type AccordionRootNativeOnlyRef = ViewRef; +type AccordionTriggerNativeOnlyProps = AnimatablePressableProps; +type AccordionTriggerNativeOnlyRef = PressableRef; type RootProps = AccordionRootNativeOnlyProps & BaseAccordionRootProps; type RootRef = AccordionRootNativeOnlyRef; @@ -31,6 +32,16 @@ type ContentProps = AccordionContentNativeOnlyProps & BaseAccordionContentProps; type ContentRef = AccordionContentNativeOnlyRef; export type { + AccordionContentNativeOnlyProps, + AccordionContentNativeOnlyRef, + AccordionHeaderNativeOnlyProps, + AccordionHeaderNativeOnlyRef, + AccordionItemNativeOnlyProps, + AccordionItemNativeOnlyRef, + AccordionRootNativeOnlyProps, + AccordionRootNativeOnlyRef, + AccordionTriggerNativeOnlyProps, + AccordionTriggerNativeOnlyRef, ContentProps, ContentRef, HeaderProps, diff --git a/packages/accordion-new/src/types/universal.ts b/packages/accordion-new/src/types/universal.ts index caba7617..98941d5c 100644 --- a/packages/accordion-new/src/types/universal.ts +++ b/packages/accordion-new/src/types/universal.ts @@ -18,14 +18,14 @@ import type { AccordionItemNativeOnlyProps, AccordionRootNativeOnlyProps, AccordionTriggerNativeOnlyProps, -} from './native-only'; +} from './native'; import type { AccordionContentWebOnlyProps, AccordionHeaderWebOnlyProps, AccordionItemWebOnlyProps, AccordionRootWebOnlyProps, AccordionTriggerWebOnlyProps, -} from './web-only'; +} from './web'; type ContentProps = Prettify< BaseAccordionContentProps & diff --git a/packages/accordion-new/src/types/web-only.ts b/packages/accordion-new/src/types/web.ts similarity index 67% rename from packages/accordion-new/src/types/web-only.ts rename to packages/accordion-new/src/types/web.ts index 0db8be57..95c2e666 100644 --- a/packages/accordion-new/src/types/web-only.ts +++ b/packages/accordion-new/src/types/web.ts @@ -1,12 +1,13 @@ import type { Content, Header, Item, Root, Trigger } from '@radix-ui/react-accordion'; +import type { PropsWithout } from '@rn-primitives/types'; import type { BaseAccordionContentProps, BaseAccordionHeaderProps, BaseAccordionItemProps, BaseAccordionRootProps, BaseAccordionTriggerProps, + BaseAccordionTriggerRef, } from './base'; -import type { PropsWithout } from '@rn-primitives/types'; type AccordionRootWebOnlyProps = PropsWithout< React.ComponentPropsWithoutRef, @@ -38,6 +39,17 @@ type AccordionTriggerWebOnlyProps = PropsWithout< >; type AccordionTriggerWebOnlyRef = React.ElementRef; +type RootProps = BaseAccordionRootProps & AccordionRootWebOnlyProps; +type RootRef = AccordionRootWebOnlyRef; +type ItemProps = BaseAccordionItemProps & AccordionItemWebOnlyProps; +type ItemRef = AccordionItemWebOnlyRef; +type HeaderProps = BaseAccordionHeaderProps & AccordionHeaderWebOnlyProps; +type HeaderRef = AccordionHeaderWebOnlyRef; +type TriggerProps = BaseAccordionTriggerProps & AccordionTriggerWebOnlyProps; +type TriggerRef = AccordionTriggerWebOnlyRef & BaseAccordionTriggerRef; +type ContentProps = BaseAccordionContentProps & AccordionContentWebOnlyProps; +type ContentRef = AccordionContentWebOnlyRef; + export type { AccordionContentWebOnlyProps, AccordionContentWebOnlyRef, @@ -49,4 +61,14 @@ export type { AccordionRootWebOnlyRef, AccordionTriggerWebOnlyProps, AccordionTriggerWebOnlyRef, + ContentProps, + ContentRef, + HeaderProps, + HeaderRef, + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, }; From fc29b889631c2330b5d5e0d7278ac1f2acb179d4 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Tue, 18 Feb 2025 16:29:45 -0500 Subject: [PATCH 022/106] refactor(accordion-new): move components to platform named folders --- packages/accordion-new/package.json | 16 +++++------ packages/accordion-new/src/index.ts | 10 ++++++- .../accordion-native.tsx | 0 .../accordion-native.web.tsx | 0 .../src/{accordion-native => native}/index.ts | 0 .../src/{ => universal}/accordion.tsx | 4 +-- .../src/{ => universal}/accordion.web.tsx | 22 +++++++-------- packages/accordion-new/src/universal/index.ts | 10 +++++++ .../{accordion-web => web}/accordion-web.tsx | 0 .../accordion-web.web.tsx | 0 .../src/{accordion-web => web}/index.ts | 0 packages/accordion-new/tsup.config.ts | 27 ++++++++++++------- 12 files changed, 58 insertions(+), 31 deletions(-) rename packages/accordion-new/src/{accordion-native => native}/accordion-native.tsx (100%) rename packages/accordion-new/src/{accordion-native => native}/accordion-native.web.tsx (100%) rename packages/accordion-new/src/{accordion-native => native}/index.ts (100%) rename packages/accordion-new/src/{ => universal}/accordion.tsx (95%) rename packages/accordion-new/src/{ => universal}/accordion.web.tsx (91%) create mode 100644 packages/accordion-new/src/universal/index.ts rename packages/accordion-new/src/{accordion-web => web}/accordion-web.tsx (100%) rename packages/accordion-new/src/{accordion-web => web}/accordion-web.web.tsx (100%) rename packages/accordion-new/src/{accordion-web => web}/index.ts (100%) diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json index b89b9e7c..ae082d08 100644 --- a/packages/accordion-new/package.json +++ b/packages/accordion-new/package.json @@ -14,16 +14,16 @@ "default": "./dist/index.js" }, "./native": { - "import": "./dist/accordion-native/index.mjs", - "require": "./dist/accordion-native/index.js", - "types": "./dist/accordion-native/index.d.ts", - "default": "./dist/accordion-native/index.js" + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" }, "./web": { - "import": "./dist/accordion-web/index.mjs", - "require": "./dist/accordion-web/index.js", - "types": "./dist/accordion-web/index.d.ts", - "default": "./dist/accordion-web/index.js" + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ diff --git a/packages/accordion-new/src/index.ts b/packages/accordion-new/src/index.ts index f8dfb972..12024310 100644 --- a/packages/accordion-new/src/index.ts +++ b/packages/accordion-new/src/index.ts @@ -1,4 +1,12 @@ -export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext } from './accordion'; +export { + Content, + Header, + Item, + Root, + Trigger, + useItemContext, + useRootContext, +} from './universal/accordion'; export type { ContentProps, diff --git a/packages/accordion-new/src/accordion-native/accordion-native.tsx b/packages/accordion-new/src/native/accordion-native.tsx similarity index 100% rename from packages/accordion-new/src/accordion-native/accordion-native.tsx rename to packages/accordion-new/src/native/accordion-native.tsx diff --git a/packages/accordion-new/src/accordion-native/accordion-native.web.tsx b/packages/accordion-new/src/native/accordion-native.web.tsx similarity index 100% rename from packages/accordion-new/src/accordion-native/accordion-native.web.tsx rename to packages/accordion-new/src/native/accordion-native.web.tsx diff --git a/packages/accordion-new/src/accordion-native/index.ts b/packages/accordion-new/src/native/index.ts similarity index 100% rename from packages/accordion-new/src/accordion-native/index.ts rename to packages/accordion-new/src/native/index.ts diff --git a/packages/accordion-new/src/accordion.tsx b/packages/accordion-new/src/universal/accordion.tsx similarity index 95% rename from packages/accordion-new/src/accordion.tsx rename to packages/accordion-new/src/universal/accordion.tsx index 74ca54a2..11cad302 100644 --- a/packages/accordion-new/src/accordion.tsx +++ b/packages/accordion-new/src/universal/accordion.tsx @@ -8,7 +8,7 @@ import { TriggerRef as TriggerNativeRef, useItemContext, useRootContext, -} from './accordion-native'; +} from '../native'; import type { ContentProps, HeaderProps, @@ -16,7 +16,7 @@ import type { RootProps, TriggerProps, TriggerRef, -} from './types/universal'; +} from '../types/universal'; function Root({ web: _web, native, ...props }: RootProps) { return ; diff --git a/packages/accordion-new/src/accordion.web.tsx b/packages/accordion-new/src/universal/accordion.web.tsx similarity index 91% rename from packages/accordion-new/src/accordion.web.tsx rename to packages/accordion-new/src/universal/accordion.web.tsx index 88b9289e..7b627996 100644 --- a/packages/accordion-new/src/accordion.web.tsx +++ b/packages/accordion-new/src/universal/accordion.web.tsx @@ -1,5 +1,15 @@ import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/web'; import * as React from 'react'; +import { BaseAccordionTriggerRef } from '../types/base'; +import type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from '../types/universal'; +import type { AccordionTriggerWebOnlyRef } from '../types/web'; import { Content as ContentWeb, Header as HeaderWeb, @@ -8,17 +18,7 @@ import { Trigger as TriggerWeb, useItemContext, useRootContext, -} from './accordion-web'; -import type { AccordionTriggerWebOnlyRef } from './types/web'; -import { BaseAccordionTriggerRef } from './types/base'; -import type { - ContentProps, - HeaderProps, - ItemProps, - RootProps, - TriggerProps, - TriggerRef, -} from './types/universal'; +} from '../web'; function Root({ native: _native, web, style, ...props }: RootProps) { return ; diff --git a/packages/accordion-new/src/universal/index.ts b/packages/accordion-new/src/universal/index.ts new file mode 100644 index 00000000..2046402e --- /dev/null +++ b/packages/accordion-new/src/universal/index.ts @@ -0,0 +1,10 @@ +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext } from './accordion'; + +export type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from '../types/universal'; diff --git a/packages/accordion-new/src/accordion-web/accordion-web.tsx b/packages/accordion-new/src/web/accordion-web.tsx similarity index 100% rename from packages/accordion-new/src/accordion-web/accordion-web.tsx rename to packages/accordion-new/src/web/accordion-web.tsx diff --git a/packages/accordion-new/src/accordion-web/accordion-web.web.tsx b/packages/accordion-new/src/web/accordion-web.web.tsx similarity index 100% rename from packages/accordion-new/src/accordion-web/accordion-web.web.tsx rename to packages/accordion-new/src/web/accordion-web.web.tsx diff --git a/packages/accordion-new/src/accordion-web/index.ts b/packages/accordion-new/src/web/index.ts similarity index 100% rename from packages/accordion-new/src/accordion-web/index.ts rename to packages/accordion-new/src/web/index.ts diff --git a/packages/accordion-new/tsup.config.ts b/packages/accordion-new/tsup.config.ts index 9b2bed7d..2063dc09 100644 --- a/packages/accordion-new/tsup.config.ts +++ b/packages/accordion-new/tsup.config.ts @@ -3,21 +3,30 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ entry: [ 'src/index.ts', - 'src/accordion.tsx', - 'src/accordion.web.tsx', - 'src/accordion-native/index.ts', - 'src/accordion-native/accordion-native.tsx', - 'src/accordion-native/accordion-native.web.tsx', - 'src/accordion-web/index.ts', - 'src/accordion-web/accordion-web.tsx', - 'src/accordion-web/accordion-web.web.tsx', + 'src/universal/index.ts', + 'src/universal/accordion.tsx', + 'src/universal/accordion.web.tsx', + 'src/native/index.ts', + 'src/native/accordion-native.tsx', + 'src/native/accordion-native.web.tsx', + 'src/web/index.ts', + 'src/web/accordion-web.tsx', + 'src/web/accordion-web.web.tsx', ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './accordion', './accordion-native', './accordion-web'], + external: [ + 'react', + './universal', + './accordion', + '../native', + './accordion-native', + '../web', + './accordion-web', + ], dts: true, ...options, esbuildOptions(options) { From 50ae89749999be25ff1f36da5acaddf331932b4f Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Tue, 18 Feb 2025 17:34:33 -0500 Subject: [PATCH 023/106] refactor(accordion-new): re-org files --- .../src/{types/base.ts => base-types.ts} | 0 packages/accordion-new/src/index.ts | 2 +- .../src/native/accordion-native.tsx | 18 ++++++++--------- .../src/native/accordion-native.web.tsx | 4 ++-- packages/accordion-new/src/native/index.ts | 2 +- .../src/{types/native.ts => native/types.ts} | 2 +- .../accordion-new/src/universal/accordion.tsx | 2 +- .../src/universal/accordion.web.tsx | 20 +++++++++---------- packages/accordion-new/src/universal/index.ts | 2 +- .../universal.ts => universal/types.ts} | 6 +++--- packages/accordion-new/src/utils/contexts.ts | 2 +- .../accordion-new/src/web/accordion-web.tsx | 9 +-------- .../src/web/accordion-web.web.tsx | 11 ++-------- packages/accordion-new/src/web/index.ts | 2 +- .../src/{types/web.ts => web/types.ts} | 2 +- 15 files changed, 35 insertions(+), 49 deletions(-) rename packages/accordion-new/src/{types/base.ts => base-types.ts} (100%) rename packages/accordion-new/src/{types/native.ts => native/types.ts} (98%) rename packages/accordion-new/src/{types/universal.ts => universal/types.ts} (95%) rename packages/accordion-new/src/{types/web.ts => web/types.ts} (98%) diff --git a/packages/accordion-new/src/types/base.ts b/packages/accordion-new/src/base-types.ts similarity index 100% rename from packages/accordion-new/src/types/base.ts rename to packages/accordion-new/src/base-types.ts diff --git a/packages/accordion-new/src/index.ts b/packages/accordion-new/src/index.ts index 12024310..bffb6d0a 100644 --- a/packages/accordion-new/src/index.ts +++ b/packages/accordion-new/src/index.ts @@ -15,4 +15,4 @@ export type { RootProps, TriggerProps, TriggerRef, -} from './types/universal'; +} from './universal/types'; diff --git a/packages/accordion-new/src/native/accordion-native.tsx b/packages/accordion-new/src/native/accordion-native.tsx index 5abd6251..1bd1a76b 100644 --- a/packages/accordion-new/src/native/accordion-native.tsx +++ b/packages/accordion-new/src/native/accordion-native.tsx @@ -3,6 +3,14 @@ import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import type { GestureResponderEvent } from 'react-native'; +import { + RootContext, + createItemContext, + createUseItemContext, + useRootContext, +} from '../utils/contexts'; +import { getDefaultValue } from '../utils/get-default-value'; +import { isItemExpanded } from '../utils/is-item-expanded'; import type { ContentProps, ContentRef, @@ -14,15 +22,7 @@ import type { RootRef, TriggerProps, TriggerRef, -} from '../types/native'; -import { - RootContext, - createItemContext, - createUseItemContext, - useRootContext, -} from '../utils/contexts'; -import { getDefaultValue } from '../utils/get-default-value'; -import { isItemExpanded } from '../utils/is-item-expanded'; +} from './types'; const Root = React.forwardRef( ( diff --git a/packages/accordion-new/src/native/accordion-native.web.tsx b/packages/accordion-new/src/native/accordion-native.web.tsx index 6dfd5639..47c5f752 100644 --- a/packages/accordion-new/src/native/accordion-native.web.tsx +++ b/packages/accordion-new/src/native/accordion-native.web.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; import type { ContentProps, ContentRef, @@ -10,8 +11,7 @@ import type { RootRef, TriggerProps, TriggerRef, -} from '../types/native'; -import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; +} from './types'; const Root = React.forwardRef(() => { return null; diff --git a/packages/accordion-new/src/native/index.ts b/packages/accordion-new/src/native/index.ts index 6e4453c5..efeb5e04 100644 --- a/packages/accordion-new/src/native/index.ts +++ b/packages/accordion-new/src/native/index.ts @@ -15,4 +15,4 @@ export type { RootProps, TriggerProps, TriggerRef, -} from '../types/native'; +} from './types'; diff --git a/packages/accordion-new/src/types/native.ts b/packages/accordion-new/src/native/types.ts similarity index 98% rename from packages/accordion-new/src/types/native.ts rename to packages/accordion-new/src/native/types.ts index 3a712435..02926700 100644 --- a/packages/accordion-new/src/types/native.ts +++ b/packages/accordion-new/src/native/types.ts @@ -7,7 +7,7 @@ import type { BaseAccordionRootProps, BaseAccordionTriggerProps, BaseAccordionTriggerRef, -} from './base'; +} from '../base-types'; type AccordionContentNativeOnlyProps = AnimatableViewProps; type AccordionContentNativeOnlyRef = ViewRef; diff --git a/packages/accordion-new/src/universal/accordion.tsx b/packages/accordion-new/src/universal/accordion.tsx index 11cad302..b748b3ad 100644 --- a/packages/accordion-new/src/universal/accordion.tsx +++ b/packages/accordion-new/src/universal/accordion.tsx @@ -16,7 +16,7 @@ import type { RootProps, TriggerProps, TriggerRef, -} from '../types/universal'; +} from './types'; function Root({ web: _web, native, ...props }: RootProps) { return ; diff --git a/packages/accordion-new/src/universal/accordion.web.tsx b/packages/accordion-new/src/universal/accordion.web.tsx index 7b627996..93d23044 100644 --- a/packages/accordion-new/src/universal/accordion.web.tsx +++ b/packages/accordion-new/src/universal/accordion.web.tsx @@ -1,15 +1,6 @@ import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/web'; import * as React from 'react'; -import { BaseAccordionTriggerRef } from '../types/base'; -import type { - ContentProps, - HeaderProps, - ItemProps, - RootProps, - TriggerProps, - TriggerRef, -} from '../types/universal'; -import type { AccordionTriggerWebOnlyRef } from '../types/web'; +import { BaseAccordionTriggerRef } from '../base-types'; import { Content as ContentWeb, Header as HeaderWeb, @@ -19,6 +10,15 @@ import { useItemContext, useRootContext, } from '../web'; +import type { AccordionTriggerWebOnlyRef } from '../web/types'; +import type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types'; function Root({ native: _native, web, style, ...props }: RootProps) { return ; diff --git a/packages/accordion-new/src/universal/index.ts b/packages/accordion-new/src/universal/index.ts index 2046402e..09726939 100644 --- a/packages/accordion-new/src/universal/index.ts +++ b/packages/accordion-new/src/universal/index.ts @@ -7,4 +7,4 @@ export type { RootProps, TriggerProps, TriggerRef, -} from '../types/universal'; +} from './types'; diff --git a/packages/accordion-new/src/types/universal.ts b/packages/accordion-new/src/universal/types.ts similarity index 95% rename from packages/accordion-new/src/types/universal.ts rename to packages/accordion-new/src/universal/types.ts index 98941d5c..840c4851 100644 --- a/packages/accordion-new/src/types/universal.ts +++ b/packages/accordion-new/src/universal/types.ts @@ -11,21 +11,21 @@ import type { BaseAccordionRootProps, BaseAccordionTriggerProps, BaseAccordionTriggerRef, -} from './base'; +} from '../base-types'; import type { AccordionContentNativeOnlyProps, AccordionHeaderNativeOnlyProps, AccordionItemNativeOnlyProps, AccordionRootNativeOnlyProps, AccordionTriggerNativeOnlyProps, -} from './native'; +} from '../native/types'; import type { AccordionContentWebOnlyProps, AccordionHeaderWebOnlyProps, AccordionItemWebOnlyProps, AccordionRootWebOnlyProps, AccordionTriggerWebOnlyProps, -} from './web'; +} from '../web/types'; type ContentProps = Prettify< BaseAccordionContentProps & diff --git a/packages/accordion-new/src/utils/contexts.ts b/packages/accordion-new/src/utils/contexts.ts index 8c005443..855feeaf 100644 --- a/packages/accordion-new/src/utils/contexts.ts +++ b/packages/accordion-new/src/utils/contexts.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import type { BaseAccordionItemContext, BaseAccordionRootContext } from '../types/base'; +import type { BaseAccordionItemContext, BaseAccordionRootContext } from '../base-types'; const RootContext = React.createContext(null); function useRootContext() { diff --git a/packages/accordion-new/src/web/accordion-web.tsx b/packages/accordion-new/src/web/accordion-web.tsx index d43b3ce0..5b63cc35 100644 --- a/packages/accordion-new/src/web/accordion-web.tsx +++ b/packages/accordion-new/src/web/accordion-web.tsx @@ -1,14 +1,7 @@ import { Content, Header } from '@radix-ui/react-accordion'; import * as React from 'react'; -import type { - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from '../types/web'; import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; +import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; const Root = React.forwardRef(() => { return null; diff --git a/packages/accordion-new/src/web/accordion-web.web.tsx b/packages/accordion-new/src/web/accordion-web.web.tsx index 3c7c6d90..1bb75ac5 100644 --- a/packages/accordion-new/src/web/accordion-web.web.tsx +++ b/packages/accordion-new/src/web/accordion-web.web.tsx @@ -7,15 +7,7 @@ import { } from '@radix-ui/react-accordion'; import { useControllableState } from '@rn-primitives/hooks'; import * as React from 'react'; -import type { BaseAccordionMultipleProps, BaseAccordionSingleProps } from '../types/base'; -import type { - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from '../types/web'; +import type { BaseAccordionMultipleProps, BaseAccordionSingleProps } from '../base-types'; import { RootContext, createItemContext, @@ -24,6 +16,7 @@ import { } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; import { isItemExpanded } from '../utils/is-item-expanded'; +import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; const Root = React.forwardRef( ( diff --git a/packages/accordion-new/src/web/index.ts b/packages/accordion-new/src/web/index.ts index 4cac7e05..f18e75f3 100644 --- a/packages/accordion-new/src/web/index.ts +++ b/packages/accordion-new/src/web/index.ts @@ -15,4 +15,4 @@ export type { RootProps, TriggerProps, TriggerRef, -} from '../types/web'; +} from './types'; diff --git a/packages/accordion-new/src/types/web.ts b/packages/accordion-new/src/web/types.ts similarity index 98% rename from packages/accordion-new/src/types/web.ts rename to packages/accordion-new/src/web/types.ts index 95c2e666..3a459870 100644 --- a/packages/accordion-new/src/types/web.ts +++ b/packages/accordion-new/src/web/types.ts @@ -7,7 +7,7 @@ import type { BaseAccordionRootProps, BaseAccordionTriggerProps, BaseAccordionTriggerRef, -} from './base'; +} from '../base-types'; type AccordionRootWebOnlyProps = PropsWithout< React.ComponentPropsWithoutRef, From e02e6c6ca8090dda5127bb256af84383424f689c Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Thu, 20 Feb 2025 12:08:36 -0500 Subject: [PATCH 024/106] fix(accordion-new): file extension by target platform + use context typing --- packages/accordion-new/src/base-types.ts | 4 +- .../src/native/accordion-native.native.tsx | 219 ++++++++++++++++++ .../src/native/accordion-native.tsx | 208 +++-------------- .../src/native/accordion-native.web.tsx | 60 ----- packages/accordion-new/src/utils/contexts.ts | 24 +- .../accordion-new/src/web/accordion-web.tsx | 2 +- .../src/web/accordion-web.web.tsx | 16 +- packages/accordion-new/tsup.config.ts | 2 +- 8 files changed, 266 insertions(+), 269 deletions(-) create mode 100644 packages/accordion-new/src/native/accordion-native.native.tsx delete mode 100644 packages/accordion-new/src/native/accordion-native.web.tsx diff --git a/packages/accordion-new/src/base-types.ts b/packages/accordion-new/src/base-types.ts index 2923d0f1..d2702ba0 100644 --- a/packages/accordion-new/src/base-types.ts +++ b/packages/accordion-new/src/base-types.ts @@ -43,7 +43,7 @@ type BaseAccordionTriggerRef = { trigger: () => void }; type BaseAccordionRootContext = Prettify< Omit< BaseAccordionRootProps, - 'asChild' | 'defaultValue' | 'children' | 'value' | 'onValueChange' + 'asChild' | 'defaultValue' | 'children' | 'value' | 'onValueChange' | 'key' > & { rootValue: BaseAccordionRootProps['value']; onRootValueChange: BaseAccordionRootProps['onValueChange']; @@ -51,7 +51,7 @@ type BaseAccordionRootContext = Prettify< > | null; type BaseAccordionItemContext = Prettify< - Omit & { + Omit & { itemValue: BaseAccordionItemProps['value']; isExpanded: boolean; } diff --git a/packages/accordion-new/src/native/accordion-native.native.tsx b/packages/accordion-new/src/native/accordion-native.native.tsx new file mode 100644 index 00000000..00349a84 --- /dev/null +++ b/packages/accordion-new/src/native/accordion-native.native.tsx @@ -0,0 +1,219 @@ +import { AnimatablePressable, AnimatableView } from '@rn-primitives/animatable'; +import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; +import { Slot } from '@rn-primitives/slot'; +import * as React from 'react'; +import type { GestureResponderEvent } from 'react-native'; +import { RootContext, ItemContext, useItemContext, useRootContext } from '../utils/contexts'; +import { getDefaultValue } from '../utils/get-default-value'; +import { isItemExpanded } from '../utils/is-item-expanded'; +import type { + ContentProps, + ContentRef, + HeaderProps, + HeaderRef, + ItemProps, + ItemRef, + RootProps, + RootRef, + TriggerProps, + TriggerRef, +} from './types'; + +const Root = React.forwardRef( + ( + { + asChild, + type, + disabled = false, + collapsible = true, + value: valueProp, + onValueChange: onValueChangeProps, + defaultValue, + orientation, + dir, + ...viewProps + }, + ref + ) => { + const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: getDefaultValue(defaultValue, type), + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + + const Component = asChild ? Slot : AnimatableView; + return ( + + + + ); + } +); + +Root.displayName = 'AccordionRootNative'; + +const ItemInternalContext = React.createContext<{ nativeID: string } | null>(null); + +const Item = React.forwardRef( + ({ asChild, value: itemValue, disabled, ...viewProps }, ref) => { + const { rootValue } = useRootContext(); + const nativeID = React.useId(); + + const Component = asChild ? Slot : AnimatableView; + return ( + + + + + + ); + } +); + +Item.displayName = 'AccordionItemNative'; + +function useItemInternalContext() { + const context = React.useContext(ItemInternalContext); + if (!context) { + throw new Error( + 'AccordionItem Internal compound components cannot be rendered outside the AccordionItem component' + ); + } + return context; +} + +const Header = React.forwardRef(({ asChild, ...props }, ref) => { + const { disabled: rootDisabled } = useRootContext(); + const { disabled: itemDisabled, isExpanded } = useItemContext(); + + const Component = asChild ? Slot : AnimatableView; + return ( + + ); +}); + +Header.displayName = 'AccordionHeaderNative'; + +const Trigger = React.forwardRef( + ({ asChild, onPress: onPressProp, disabled: disabledProp, ...props }, ref) => { + const { + disabled: rootDisabled, + type, + onRootValueChange, + rootValue, + collapsible, + } = useRootContext(); + const { disabled: itemDisabled, itemValue, isExpanded } = useItemContext(); + const { nativeID } = useItemInternalContext(); + + const methods = React.useMemo(() => { + return { + trigger: () => { + if (type === 'single') { + const newValue = collapsible + ? itemValue === rootValue + ? undefined + : itemValue + : itemValue; + onRootValueChange?.(newValue as string[] & string); + } + if (type === 'multiple') { + const rootToArray = toStringArray(rootValue); + const newValue = collapsible + ? rootToArray.includes(itemValue) + ? rootToArray.filter((val) => val !== itemValue) + : rootToArray.concat(itemValue) + : [...new Set(rootToArray.concat(itemValue))]; + onRootValueChange?.(newValue as string[] & string); + } + }, + }; + }, [collapsible, onRootValueChange, rootValue, type, itemValue]); + + const triggerRef = useAugmentedRef({ ref, methods }); + + const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); + + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + methods.trigger(); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onPressProp, methods] + ); + + const Component = asChild ? Slot : AnimatablePressable; + return ( + + ); + } +); + +Trigger.displayName = 'AccordionTriggerNative'; + +const Content = React.forwardRef( + ({ asChild, forceMount, ...props }, ref) => { + const { type } = useRootContext(); + const { isExpanded } = useItemContext(); + const { nativeID } = useItemInternalContext(); + + if (!forceMount) { + if (!isExpanded) { + return null; + } + } + + const Component = asChild ? Slot : AnimatableView; + return ( + + ); + } +); + +Content.displayName = 'AccordionContentNative'; + +export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; + +function toStringArray(value?: string | string[]) { + return Array.isArray(value) ? value : value ? [value] : []; +} diff --git a/packages/accordion-new/src/native/accordion-native.tsx b/packages/accordion-new/src/native/accordion-native.tsx index 1bd1a76b..58d32ff9 100644 --- a/packages/accordion-new/src/native/accordion-native.tsx +++ b/packages/accordion-new/src/native/accordion-native.tsx @@ -1,16 +1,5 @@ -import { AnimatablePressable, AnimatableView } from '@rn-primitives/animatable'; -import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; -import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; -import type { GestureResponderEvent } from 'react-native'; -import { - RootContext, - createItemContext, - createUseItemContext, - useRootContext, -} from '../utils/contexts'; -import { getDefaultValue } from '../utils/get-default-value'; -import { isItemExpanded } from '../utils/is-item-expanded'; +import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; import type { ContentProps, ContentRef, @@ -24,189 +13,48 @@ import type { TriggerRef, } from './types'; -const Root = React.forwardRef( - ( - { - asChild, - type, - disabled = false, - collapsible = true, - value: valueProp, - onValueChange: onValueChangeProps, - defaultValue, - orientation, - dir, - ...viewProps - }, - ref - ) => { - const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = - useControllableState<(string | undefined) | string[]>({ - prop: valueProp, - defaultProp: getDefaultValue(defaultValue, type), - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); - - const Component = asChild ? Slot : AnimatableView; - return ( - - - - ); - } -); +const Root = React.forwardRef(() => { + return null; +}); Root.displayName = 'AccordionRootNative'; -const AccordionItemContext = createItemContext<{ nativeID: string }>(); -const useItemContext = createUseItemContext(AccordionItemContext); - -const Item = React.forwardRef( - ({ asChild, value: itemValue, disabled, ...viewProps }, ref) => { - const { rootValue } = useRootContext(); - const nativeID = React.useId(); - - const Component = asChild ? Slot : AnimatableView; - return ( - - - - ); - } -); +const Item = React.forwardRef(() => { + return null; +}); Item.displayName = 'AccordionItemNative'; -const Header = React.forwardRef(({ asChild, ...props }, ref) => { - const { disabled: rootDisabled } = useRootContext(); - const { disabled: itemDisabled, isExpanded } = useItemContext(); - - const Component = asChild ? Slot : AnimatableView; - return ( - - ); +const Header = React.forwardRef(() => { + return null; }); Header.displayName = 'AccordionHeaderNative'; -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled: disabledProp, ...props }, ref) => { - const { - disabled: rootDisabled, - type, - onRootValueChange, - rootValue, - collapsible, - } = useRootContext(); - const { nativeID, disabled: itemDisabled, itemValue, isExpanded } = useItemContext(); - - const methods = React.useMemo(() => { - return { - trigger: () => { - if (type === 'single') { - const newValue = collapsible - ? itemValue === rootValue - ? undefined - : itemValue - : itemValue; - onRootValueChange?.(newValue as string[] & string); - } - if (type === 'multiple') { - const rootToArray = toStringArray(rootValue); - const newValue = collapsible - ? rootToArray.includes(itemValue) - ? rootToArray.filter((val) => val !== itemValue) - : rootToArray.concat(itemValue) - : [...new Set(rootToArray.concat(itemValue))]; - onRootValueChange?.(newValue as string[] & string); - } - }, - }; - }, [collapsible, onRootValueChange, rootValue, type, itemValue]); - - const triggerRef = useAugmentedRef({ ref, methods }); - - const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); - - const onPress = React.useCallback( - (ev: GestureResponderEvent) => { - methods.trigger(); - if (typeof onPressProp === 'function') { - onPressProp(ev); - } - }, - [onPressProp, methods] - ); - - const Component = asChild ? Slot : AnimatablePressable; - return ( - - ); - } -); +const Trigger = React.forwardRef(() => { + return null; +}); Trigger.displayName = 'AccordionTriggerNative'; -const Content = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { type } = useRootContext(); - const { nativeID, isExpanded } = useItemContext(); +const Content = React.forwardRef(() => { + return null; +}); - if (!forceMount) { - if (!isExpanded) { - return null; - } - } +Content.displayName = 'AccordionContentNative'; - const Component = asChild ? Slot : AnimatableView; - return ( - - ); - } -); +const useRootContext = () => { + throw new Error( + 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' + ); + return {} as RootContextReturnType; +}; -Content.displayName = 'AccordionContentNative'; +const useItemContext = () => { + throw new Error( + 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' + ); + return {} as ItemContextReturnType; +}; export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; - -function toStringArray(value?: string | string[]) { - return Array.isArray(value) ? value : value ? [value] : []; -} diff --git a/packages/accordion-new/src/native/accordion-native.web.tsx b/packages/accordion-new/src/native/accordion-native.web.tsx deleted file mode 100644 index 47c5f752..00000000 --- a/packages/accordion-new/src/native/accordion-native.web.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import * as React from 'react'; -import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; -import type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; - -const Root = React.forwardRef(() => { - return null; -}); - -Root.displayName = 'AccordionRootNative'; - -const Item = React.forwardRef(() => { - return null; -}); - -Item.displayName = 'AccordionItemNative'; - -const Header = React.forwardRef(() => { - return null; -}); - -Header.displayName = 'AccordionHeaderNative'; - -const Trigger = React.forwardRef(() => { - return null; -}); - -Trigger.displayName = 'AccordionTriggerNative'; - -const Content = React.forwardRef(() => { - return null; -}); - -Content.displayName = 'AccordionContentNative'; - -const useRootContext = () => { - throw new Error( - 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' - ); - return {} as RootContextReturnType; -}; - -const useItemContext = () => { - throw new Error( - 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' - ); - return {} as ItemContextReturnType<{ nativeID: string }>; -}; - -export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/utils/contexts.ts b/packages/accordion-new/src/utils/contexts.ts index 855feeaf..470a6c00 100644 --- a/packages/accordion-new/src/utils/contexts.ts +++ b/packages/accordion-new/src/utils/contexts.ts @@ -14,22 +14,20 @@ function useRootContext() { type RootContextReturnType = ReturnType; -const createItemContext = () => React.createContext<(BaseAccordionItemContext & T) | null>(null); +const ItemContext = React.createContext(null); -function createUseItemContext(accordionItemContext: ReturnType>) { - return () => { - const context = React.useContext(accordionItemContext); - if (!context) { - throw new Error( - 'AccordionItem compound components cannot be rendered outside the AccordionItem component' - ); - } - return context; - }; +function useItemContext() { + const context = React.useContext(ItemContext); + if (!context) { + throw new Error( + 'AccordionItem compound components cannot be rendered outside the AccordionItem component' + ); + } + return context; } -type ItemContextReturnType = ReturnType>; +type ItemContextReturnType = ReturnType; -export { createItemContext, createUseItemContext, RootContext, useRootContext }; +export { ItemContext, useItemContext, RootContext, useRootContext }; export type { ItemContextReturnType, RootContextReturnType }; diff --git a/packages/accordion-new/src/web/accordion-web.tsx b/packages/accordion-new/src/web/accordion-web.tsx index 5b63cc35..60279a00 100644 --- a/packages/accordion-new/src/web/accordion-web.tsx +++ b/packages/accordion-new/src/web/accordion-web.tsx @@ -32,7 +32,7 @@ const useItemContext = () => { throw new Error( 'Cannot access the web useItemContext on a native platform. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/native`' ); - return {} as ItemContextReturnType<{ nativeID: string }>; + return {} as ItemContextReturnType; }; export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion-new/src/web/accordion-web.web.tsx b/packages/accordion-new/src/web/accordion-web.web.tsx index 1bb75ac5..be49bc6e 100644 --- a/packages/accordion-new/src/web/accordion-web.web.tsx +++ b/packages/accordion-new/src/web/accordion-web.web.tsx @@ -8,12 +8,7 @@ import { import { useControllableState } from '@rn-primitives/hooks'; import * as React from 'react'; import type { BaseAccordionMultipleProps, BaseAccordionSingleProps } from '../base-types'; -import { - RootContext, - createItemContext, - createUseItemContext, - useRootContext, -} from '../utils/contexts'; +import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; import { isItemExpanded } from '../utils/is-item-expanded'; import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; @@ -48,7 +43,7 @@ const Root = React.forwardRef( ...props, value: rootValue, onValueChange: onRootValueChange, - collapsible: collapsible?.toString(), + collapsible: collapsible?.toString(), // fixes radix-ui/accordion console error } as BaseAccordionSingleProps | BaseAccordionMultipleProps)} /> @@ -58,14 +53,11 @@ const Root = React.forwardRef( Root.displayName = 'AccordionRootWeb'; -const AccordionItemContext = createItemContext(); -const useItemContext = createUseItemContext(AccordionItemContext); - const Item = React.forwardRef((props, ref) => { const { rootValue } = useRootContext(); return ( - ((props, ref) => { }} > - + ); }); diff --git a/packages/accordion-new/tsup.config.ts b/packages/accordion-new/tsup.config.ts index 2063dc09..d46ba4f1 100644 --- a/packages/accordion-new/tsup.config.ts +++ b/packages/accordion-new/tsup.config.ts @@ -8,7 +8,7 @@ export default defineConfig((options: Options) => ({ 'src/universal/accordion.web.tsx', 'src/native/index.ts', 'src/native/accordion-native.tsx', - 'src/native/accordion-native.web.tsx', + 'src/native/accordion-native.native.tsx', 'src/web/index.ts', 'src/web/accordion-web.tsx', 'src/web/accordion-web.web.tsx', From 41fa71f83b929a84ffb2c95a0688ebdb7b4259d8 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Thu, 20 Feb 2025 12:47:22 -0500 Subject: [PATCH 025/106] feat(types): add wip for native platform specific props --- packages/types/src/index.ts | 106 +++++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 3 deletions(-) diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 309264e3..0ae4b040 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -11,11 +11,111 @@ import type { View, ViewProps, ViewStyle, - ViewPropsIOS, } from 'react-native'; -// TODO: Export types for ViewStyleIos, ViewStyleAndroid, ViewStyleUniversal (?) https://reactnative.dev/docs/view-style-props#elevation-android -// TODO: Export types for ViewIos, ViewAndroid, ViewUniversal (?) and use the proper style type from above https://reactnative.dev/docs/view#accessibilityignoresinvertcolors-ios +// ViewStyle +type AndroidOnlyViewStyleKeys = 'elevation' | 'dropShadow'; +type AndroidOnlyViewStyleFilterKeys = + | 'blur' + | 'contrast' + | 'dropShadow' + | 'grayscale' + | 'hueRotate' + | 'invert' + | 'sepia' + | 'saturate'; + +type IosOnlyViewStyleKeys = 'borderCurve' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius'; +type IosViewStyleFilterKeys = Omit; + +type ViewStyleAndroid = Omit; +type ViewStyleIos = Omit & { + filter: IosViewStyleFilterKeys; +}; + +// ViewProps +type AndroidOnlyViewProps = + | 'accessibilityLiveRegion' + | 'aria-labelledby' + | 'aria-live' + | 'focusable' + | 'importantForAccessibility' + | 'nextFocusDown' + | 'nextFocusForward' + | 'nextFocusLeft' + | 'nextFocusRight' + | 'nextFocusUp' + | 'renderToHardwareTextureAndroid' + | 'tabIndex'; + +type IosOnlyViewProps = + | 'accessibilityElementsHidden' + | 'accessibilityLanguage' + | 'accessibilityIgnoresInvertColors' + | 'accessibilityViewIsModal' + | 'aria-modal' + | 'onAccessibilityEscape' + | 'onMagicTap' + | 'shouldRasterizeIOS'; + +type ViewPropsAndroid = Prettify< + PropsWithout & { style?: ViewStyleAndroid } +>; +type ViewPropsIos = Prettify< + PropsWithout & { style?: ViewStyleIos } +>; + +// TextStyle +type AndroidOnlyTextStyleKeys = 'includeFontPadding' | 'textAlignVertical' | 'verticalAlign'; + +type IosOnlyTextStyleKeys = 'textDecorationColor' | 'textDecorationStyle' | 'writingDirection'; + +type TextStyleAndroid = Omit; +type TextStyleIos = Omit; + +// TextProps +type AndroidOnlyTextProps = + | 'android_hyphenationFrequency' + | 'dataDetectorType' + | 'disabled' + | 'selectionColor' + | 'textBreakStrategy'; + +type IosOnlyTextProps = + | 'accessibilityLanguage' + | 'dynamicTypeRamp' + | 'minimumFontScale' + | 'suppressHighlighting' + | 'lineBreakStrategyIOS'; + +type TextPropsAndroid = Prettify< + PropsWithout & { style?: TextStyleAndroid } +>; +type TextPropsIos = Prettify< + PropsWithout & { style?: TextStyleIos } +>; + +// ImageStyle +type AndroidOnlyImageStyleKeys = 'overlayColor'; + +type ImageStyleAndroid = ImageStyle; +type ImageStyleIos = Omit; + +// ImageProps +type AndroidOnlyImageProps = + | 'fadeDuration' + | 'progressiveRenderingEnabled' + | 'resizeMethod' + | 'resizeMultiplier'; + +type IosOnlyImageProps = 'capInsets' | 'onPartialLoad'; + +type ImagePropsAndroid = Prettify< + PropsWithout & { style?: ImageStyleAndroid } +>; +type ImagePropsIos = Prettify< + PropsWithout & { style?: ImageStyleIos } +>; type Prettify = { [K in keyof T]: T[K]; From 473df666f274316c1696cfca9a07912a26f05fba Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 21 Feb 2025 15:42:06 -0500 Subject: [PATCH 026/106] add platform specific typing --- packages/animatable/src/animatable-image.tsx | 26 ++++- .../animatable/src/animatable-pressable.tsx | 77 ++++++++++-- packages/animatable/src/animatable-text.tsx | 32 +++-- packages/animatable/src/animatable-view.tsx | 26 ++++- packages/types/src/helper.ts | 5 + packages/types/src/index.ts | 110 +----------------- packages/types/src/rn-platform-specific.ts | 107 +++++++++++++++++ 7 files changed, 246 insertions(+), 137 deletions(-) create mode 100644 packages/types/src/helper.ts create mode 100644 packages/types/src/rn-platform-specific.ts diff --git a/packages/animatable/src/animatable-image.tsx b/packages/animatable/src/animatable-image.tsx index 710a1fa1..966adec9 100644 --- a/packages/animatable/src/animatable-image.tsx +++ b/packages/animatable/src/animatable-image.tsx @@ -1,14 +1,20 @@ import { Slot } from '@rn-primitives/slot'; -import type { ImageRef, Slottable } from '@rn-primitives/types'; +import type { + ImageRef, + RemoveAndroidOnlyImageProps, + RemoveIosOnlyImageProps, + Slottable, +} from '@rn-primitives/types'; import * as React from 'react'; import { Image, type ImageProps } from 'react-native'; import Animated from 'react-native-reanimated'; -type AnimatedImageProps = React.ComponentPropsWithoutRef; +type AnimatedImageProps = Slottable>; +type RNImageProps = Slottable; -type AnimatableImageProps = Slottable< - (ImageProps & { isAnimated?: false }) | (AnimatedImageProps & { isAnimated: true }) ->; +type AnimatableImageProps = + | (RNImageProps & { isAnimated?: false | undefined }) + | (AnimatedImageProps & { isAnimated: true }); const AnimatableImage = React.forwardRef( ({ asChild, ...props }, ref) => { @@ -22,6 +28,14 @@ const AnimatableImage = React.forwardRef( } ); +type AnimatableImageIosProps = + | (RemoveAndroidOnlyImageProps & { isAnimated?: false | undefined }) + | (RemoveAndroidOnlyImageProps & { isAnimated: true }); + +type AnimatableImageAndroidProps = + | (RemoveIosOnlyImageProps & { isAnimated?: false | undefined }) + | (RemoveIosOnlyImageProps & { isAnimated: true }); + export { AnimatableImage }; -export type { AnimatableImageProps }; +export type { AnimatableImageAndroidProps, AnimatableImageIosProps, AnimatableImageProps }; diff --git a/packages/animatable/src/animatable-pressable.tsx b/packages/animatable/src/animatable-pressable.tsx index 537280c8..11b1f023 100644 --- a/packages/animatable/src/animatable-pressable.tsx +++ b/packages/animatable/src/animatable-pressable.tsx @@ -1,17 +1,34 @@ import { Slot } from '@rn-primitives/slot'; -import type { PressableRef, Slottable } from '@rn-primitives/types'; +import type { + AndroidOnlyViewPropKeys, + AndroidOnlyViewStyleKeys, + IosOnlyViewPropKeys, + IosOnlyViewStyleKeys, + PressableRef, + Slottable, +} from '@rn-primitives/types'; import * as React from 'react'; -import { Pressable, type PressableProps } from 'react-native'; +import { + Pressable, + type PressableProps, + type PressableStateCallbackType, + type StyleProp, + type ViewStyle, +} from 'react-native'; import Animated from 'react-native-reanimated'; -type AnimatedPressableProps = React.ComponentPropsWithoutRef & { - key?: React.Key | null | undefined; -}; - -type AnimatablePressableProps = Slottable< - (PressableProps & { isAnimated?: false }) | (AnimatedPressableProps & { isAnimated: true }) +type AnimatedPressableProps = Slottable< + React.ComponentPropsWithoutRef & { + key?: React.Key | null | undefined; + } >; +type RNPressableProps = Slottable; + +type AnimatablePressableProps = + | (AnimatedPressableProps & { isAnimated: true }) + | (RNPressableProps & { isAnimated?: false | undefined }); + const AnimatedPressable = Animated.createAnimatedComponent(Pressable); const AnimatablePressable = React.forwardRef( @@ -28,6 +45,48 @@ const AnimatablePressable = React.forwardRef>; + +type AnimatedPressableIosProps = Omit & { + style?: AnimatedPressableStyle extends AnimatedPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : AnimatedPressableStyle; +}; + +type RNPressableStyle = RNPressableProps['style']; +type RNPressableCbStyle = Exclude>; + +type RNPressableIosProps = Omit & { + style?: RNPressableStyle extends RNPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : RNPressableStyle; +}; + +type AnimatablePressableIosProps = + | (AnimatedPressableIosProps & { isAnimated: true }) + | (RNPressableIosProps & { isAnimated?: false | undefined }); + +type AnimatedPressableAndroidProps = Omit & { + style?: AnimatedPressableStyle extends AnimatedPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : AnimatedPressableStyle; +}; + +type RNPressableAndroidProps = Omit & { + style?: RNPressableStyle extends RNPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : RNPressableStyle; +}; + +type AnimatablePressableAndroidProps = + | (AnimatedPressableAndroidProps & { isAnimated: true }) + | (RNPressableAndroidProps & { isAnimated?: false | undefined }); + export { AnimatablePressable }; -export type { AnimatablePressableProps }; +export type { + AnimatablePressableAndroidProps, + AnimatablePressableIosProps, + AnimatablePressableProps, +}; diff --git a/packages/animatable/src/animatable-text.tsx b/packages/animatable/src/animatable-text.tsx index 5fa1e7e9..5d2ea10e 100644 --- a/packages/animatable/src/animatable-text.tsx +++ b/packages/animatable/src/animatable-text.tsx @@ -1,17 +1,25 @@ import { Slot } from '@rn-primitives/slot'; -import type { Slottable, TextRef } from '@rn-primitives/types'; +import type { + RemoveAndroidOnlyTextProps, + RemoveIosOnlyTextProps, + Slottable, + TextRef, +} from '@rn-primitives/types'; import * as React from 'react'; import { Text, type TextProps } from 'react-native'; import type { SharedValue } from 'react-native-reanimated'; import Animated from 'react-native-reanimated'; -type AnimatedTextProps = Omit, 'children'> & { - children?: React.ReactNode | SharedValue; -}; - -type AnimatableTextProps = Slottable< - (TextProps & { isAnimated?: false }) | (AnimatedTextProps & { isAnimated: true }) +type AnimatedTextProps = Slottable< + Omit, 'children'> & { + children?: React.ReactNode | SharedValue; + } >; +type RNTextProps = Slottable; + +type AnimatableTextProps = + | (RNTextProps & { isAnimated?: false | undefined }) + | (AnimatedTextProps & { isAnimated: true }); const AnimatableText = React.forwardRef( ({ asChild, ...props }, ref) => { @@ -25,6 +33,14 @@ const AnimatableText = React.forwardRef( } ); +type AnimatableTextIosProps = + | (RemoveAndroidOnlyTextProps & { isAnimated?: false | undefined }) + | (RemoveAndroidOnlyTextProps & { isAnimated: true }); + +type AnimatableTextAndroidProps = + | (RemoveIosOnlyTextProps & { isAnimated?: false | undefined }) + | (RemoveIosOnlyTextProps & { isAnimated: true }); + export { AnimatableText }; -export type { AnimatableTextProps }; +export type { AnimatableTextAndroidProps, AnimatableTextIosProps, AnimatableTextProps }; diff --git a/packages/animatable/src/animatable-view.tsx b/packages/animatable/src/animatable-view.tsx index 5a2aeaae..343a2cae 100644 --- a/packages/animatable/src/animatable-view.tsx +++ b/packages/animatable/src/animatable-view.tsx @@ -1,14 +1,20 @@ import { Slot } from '@rn-primitives/slot'; -import type { Slottable, ViewRef } from '@rn-primitives/types'; +import type { + RemoveAndroidOnlyViewProps, + RemoveIosOnlyViewProps, + Slottable, + ViewRef, +} from '@rn-primitives/types'; import * as React from 'react'; import { View, type ViewProps } from 'react-native'; import Animated from 'react-native-reanimated'; -type AnimatedViewProps = React.ComponentPropsWithoutRef; +type AnimatedViewProps = Slottable>; +type RNViewProps = Slottable; -type AnimatableViewProps = Slottable< - (ViewProps & { isAnimated?: false }) | (AnimatedViewProps & { isAnimated: true }) ->; +type AnimatableViewProps = + | (RNViewProps & { isAnimated?: false | undefined }) + | (AnimatedViewProps & { isAnimated: true }); const AnimatableView = React.forwardRef( ({ asChild, ...props }, ref) => { @@ -24,6 +30,14 @@ const AnimatableView = React.forwardRef( AnimatableView.displayName = 'AnimatableView'; +type AnimatableViewIosProps = + | (RemoveAndroidOnlyViewProps & { isAnimated?: false | undefined }) + | (RemoveAndroidOnlyViewProps & { isAnimated: true }); + +type AnimatableViewAndroidProps = + | (RemoveIosOnlyViewProps & { isAnimated?: false | undefined }) + | (RemoveIosOnlyViewProps & { isAnimated: true }); + export { AnimatableView }; -export type { AnimatableViewProps }; +export type { AnimatableViewAndroidProps, AnimatableViewIosProps, AnimatableViewProps }; diff --git a/packages/types/src/helper.ts b/packages/types/src/helper.ts new file mode 100644 index 00000000..c24a29ac --- /dev/null +++ b/packages/types/src/helper.ts @@ -0,0 +1,5 @@ +type Prettify = { + [K in keyof T]: T[K]; +} & {}; + +export type { Prettify }; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 0ae4b040..9ca54516 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -12,114 +12,8 @@ import type { ViewProps, ViewStyle, } from 'react-native'; - -// ViewStyle -type AndroidOnlyViewStyleKeys = 'elevation' | 'dropShadow'; -type AndroidOnlyViewStyleFilterKeys = - | 'blur' - | 'contrast' - | 'dropShadow' - | 'grayscale' - | 'hueRotate' - | 'invert' - | 'sepia' - | 'saturate'; - -type IosOnlyViewStyleKeys = 'borderCurve' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius'; -type IosViewStyleFilterKeys = Omit; - -type ViewStyleAndroid = Omit; -type ViewStyleIos = Omit & { - filter: IosViewStyleFilterKeys; -}; - -// ViewProps -type AndroidOnlyViewProps = - | 'accessibilityLiveRegion' - | 'aria-labelledby' - | 'aria-live' - | 'focusable' - | 'importantForAccessibility' - | 'nextFocusDown' - | 'nextFocusForward' - | 'nextFocusLeft' - | 'nextFocusRight' - | 'nextFocusUp' - | 'renderToHardwareTextureAndroid' - | 'tabIndex'; - -type IosOnlyViewProps = - | 'accessibilityElementsHidden' - | 'accessibilityLanguage' - | 'accessibilityIgnoresInvertColors' - | 'accessibilityViewIsModal' - | 'aria-modal' - | 'onAccessibilityEscape' - | 'onMagicTap' - | 'shouldRasterizeIOS'; - -type ViewPropsAndroid = Prettify< - PropsWithout & { style?: ViewStyleAndroid } ->; -type ViewPropsIos = Prettify< - PropsWithout & { style?: ViewStyleIos } ->; - -// TextStyle -type AndroidOnlyTextStyleKeys = 'includeFontPadding' | 'textAlignVertical' | 'verticalAlign'; - -type IosOnlyTextStyleKeys = 'textDecorationColor' | 'textDecorationStyle' | 'writingDirection'; - -type TextStyleAndroid = Omit; -type TextStyleIos = Omit; - -// TextProps -type AndroidOnlyTextProps = - | 'android_hyphenationFrequency' - | 'dataDetectorType' - | 'disabled' - | 'selectionColor' - | 'textBreakStrategy'; - -type IosOnlyTextProps = - | 'accessibilityLanguage' - | 'dynamicTypeRamp' - | 'minimumFontScale' - | 'suppressHighlighting' - | 'lineBreakStrategyIOS'; - -type TextPropsAndroid = Prettify< - PropsWithout & { style?: TextStyleAndroid } ->; -type TextPropsIos = Prettify< - PropsWithout & { style?: TextStyleIos } ->; - -// ImageStyle -type AndroidOnlyImageStyleKeys = 'overlayColor'; - -type ImageStyleAndroid = ImageStyle; -type ImageStyleIos = Omit; - -// ImageProps -type AndroidOnlyImageProps = - | 'fadeDuration' - | 'progressiveRenderingEnabled' - | 'resizeMethod' - | 'resizeMultiplier'; - -type IosOnlyImageProps = 'capInsets' | 'onPartialLoad'; - -type ImagePropsAndroid = Prettify< - PropsWithout & { style?: ImageStyleAndroid } ->; -type ImagePropsIos = Prettify< - PropsWithout & { style?: ImageStyleIos } ->; - -type Prettify = { - [K in keyof T]: T[K]; -} & {}; +import type { Prettify } from './helper'; +export * from './rn-platform-specific'; type PropsWithout = Omit; type PropsWithoutHTML = PropsWithout>; diff --git a/packages/types/src/rn-platform-specific.ts b/packages/types/src/rn-platform-specific.ts new file mode 100644 index 00000000..f6e29ef6 --- /dev/null +++ b/packages/types/src/rn-platform-specific.ts @@ -0,0 +1,107 @@ +// TODO: adjust `filter` typing when react-native updated https://reactnative.dev/docs/view-style-props#filter + +// ViewStyle +type AndroidOnlyViewStyleKeys = 'elevation'; + +type IosOnlyViewStyleKeys = 'borderCurve' | 'shadowOffset' | 'shadowOpacity' | 'shadowRadius'; + +// ViewProps +type AndroidOnlyViewPropKeys = + | 'accessibilityLiveRegion' + | 'aria-labelledby' + | 'aria-live' + | 'focusable' + | 'importantForAccessibility' + // TODO: adjust when react-native updated https://reactnative.dev/docs/view#nextfocusdown-android + // | 'nextFocusDown' + // | 'nextFocusForward' + // | 'nextFocusLeft' + // | 'nextFocusRight' + // | 'nextFocusUp' + | 'renderToHardwareTextureAndroid' + | 'tabIndex'; + +type RemoveAndroidOnlyViewProps = Omit & { + style?: Omit; +}; + +type IosOnlyViewPropKeys = + | 'accessibilityElementsHidden' + | 'accessibilityLanguage' + | 'accessibilityIgnoresInvertColors' + | 'accessibilityViewIsModal' + | 'aria-modal' + | 'onAccessibilityEscape' + | 'onMagicTap' + | 'shouldRasterizeIOS'; + +type RemoveIosOnlyViewProps = Omit & { + style?: Omit; +}; + +// TextStyle +type AndroidOnlyTextStyleKeys = 'includeFontPadding' | 'textAlignVertical' | 'verticalAlign'; +type IosOnlyTextStyleKeys = 'textDecorationColor' | 'textDecorationStyle' | 'writingDirection'; + +// TextProps +type AndroidOnlyTextPropKeys = + | 'android_hyphenationFrequency' + | 'dataDetectorType' + | 'disabled' + | 'selectionColor' + | 'textBreakStrategy'; + +type RemoveAndroidOnlyTextProps = Omit & { + style?: Omit; +}; + +type IosOnlyTextPropKeys = + | 'accessibilityLanguage' + | 'dynamicTypeRamp' + | 'minimumFontScale' + | 'suppressHighlighting' + | 'lineBreakStrategyIOS'; + +type RemoveIosOnlyTextProps = Omit & { + style?: Omit; +}; + +// ImageStyle +type AndroidOnlyImageStyleKeys = 'overlayColor'; +type IosOnlyImageStyleKeys = never; + +// ImageProps +type AndroidOnlyImagePropKeys = 'fadeDuration' | 'progressiveRenderingEnabled' | 'resizeMethod'; +// TODO: adjust when react-native updated https://reactnative.dev/docs/image#resizemultiplier-android +// | 'resizeMultiplier'; + +type RemoveAndroidOnlyImageProps = Omit & { + style?: Omit; +}; + +type IosOnlyImagePropKeys = 'capInsets' | 'onPartialLoad'; + +type RemoveIosOnlyImageProps = Omit & { + style?: Omit; +}; + +export type { + AndroidOnlyImagePropKeys, + AndroidOnlyImageStyleKeys, + AndroidOnlyTextPropKeys, + AndroidOnlyTextStyleKeys, + AndroidOnlyViewPropKeys, + AndroidOnlyViewStyleKeys, + IosOnlyImagePropKeys, + IosOnlyImageStyleKeys, + IosOnlyTextPropKeys, + IosOnlyTextStyleKeys, + IosOnlyViewPropKeys, + IosOnlyViewStyleKeys, + RemoveAndroidOnlyImageProps, + RemoveAndroidOnlyTextProps, + RemoveAndroidOnlyViewProps, + RemoveIosOnlyImageProps, + RemoveIosOnlyTextProps, + RemoveIosOnlyViewProps, +}; From c770dcdce05a0d762e7270e1ab4ffc9a85a9b958 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 21 Feb 2025 15:58:45 -0500 Subject: [PATCH 027/106] feat(accordion): replace accordion with accordion-new --- .../components/ui/accordion.tsx | 17 +- apps/expo-nativewind/package.json | 2 +- apps/expo-stylesheet/package.json | 1 + apps/nextjs-nativewind/next.config.mjs | 1 - apps/nextjs-nativewind/package.json | 2 +- .../src/components/ui/accordion.tsx | 15 +- packages/accordion-new/package.json | 72 ----- packages/accordion-new/src/index.ts | 18 -- packages/accordion-new/tsconfig.json | 29 -- packages/accordion-new/tsup.config.ts | 35 --- packages/accordion/package.json | 28 +- packages/accordion/src/accordion.tsx | 216 ------------- packages/accordion/src/accordion.web.tsx | 294 ------------------ .../src/base-types.ts | 0 packages/accordion/src/index.ts | 20 +- .../src/native/accordion-native.native.tsx | 0 .../src/native/accordion-native.tsx | 0 .../src/native/index.ts | 0 .../src/native/types.ts | 0 packages/accordion/src/types.ts | 73 ----- .../src/universal/accordion.tsx | 0 .../src/universal/accordion.web.tsx | 0 .../src/universal/index.ts | 0 .../src/universal/types.ts | 0 .../src/utils/contexts.ts | 0 .../src/utils/get-default-value.ts | 0 .../src/utils/is-item-expanded.ts | 0 .../src/web/accordion-web.tsx | 0 .../src/web/accordion-web.web.tsx | 0 .../src/web/index.ts | 0 .../src/web/types.ts | 0 packages/accordion/tsup.config.ts | 23 +- packages/utils/src/index.ts | 17 +- pnpm-lock.yaml | 79 +---- 34 files changed, 93 insertions(+), 849 deletions(-) delete mode 100644 packages/accordion-new/package.json delete mode 100644 packages/accordion-new/src/index.ts delete mode 100644 packages/accordion-new/tsconfig.json delete mode 100644 packages/accordion-new/tsup.config.ts delete mode 100644 packages/accordion/src/accordion.tsx delete mode 100644 packages/accordion/src/accordion.web.tsx rename packages/{accordion-new => accordion}/src/base-types.ts (100%) rename packages/{accordion-new => accordion}/src/native/accordion-native.native.tsx (100%) rename packages/{accordion-new => accordion}/src/native/accordion-native.tsx (100%) rename packages/{accordion-new => accordion}/src/native/index.ts (100%) rename packages/{accordion-new => accordion}/src/native/types.ts (100%) delete mode 100644 packages/accordion/src/types.ts rename packages/{accordion-new => accordion}/src/universal/accordion.tsx (100%) rename packages/{accordion-new => accordion}/src/universal/accordion.web.tsx (100%) rename packages/{accordion-new => accordion}/src/universal/index.ts (100%) rename packages/{accordion-new => accordion}/src/universal/types.ts (100%) rename packages/{accordion-new => accordion}/src/utils/contexts.ts (100%) rename packages/{accordion-new => accordion}/src/utils/get-default-value.ts (100%) rename packages/{accordion-new => accordion}/src/utils/is-item-expanded.ts (100%) rename packages/{accordion-new => accordion}/src/web/accordion-web.tsx (100%) rename packages/{accordion-new => accordion}/src/web/accordion-web.web.tsx (100%) rename packages/{accordion-new => accordion}/src/web/index.ts (100%) rename packages/{accordion-new => accordion}/src/web/types.ts (100%) diff --git a/apps/expo-nativewind/components/ui/accordion.tsx b/apps/expo-nativewind/components/ui/accordion.tsx index ce3be2ea..17db4f5d 100644 --- a/apps/expo-nativewind/components/ui/accordion.tsx +++ b/apps/expo-nativewind/components/ui/accordion.tsx @@ -1,6 +1,8 @@ -import * as AccordionPrimitive from '@rn-primitives/accordion-new'; +import * as AccordionPrimitive from '@rn-primitives/accordion'; +import { Slot } from '@rn-primitives/slot'; +import { renderPressableChildren } from '@rn-primitives/utils'; import * as React from 'react'; -import { Platform, PressableProps, PressableStateCallbackType, View } from 'react-native'; +import { Platform, View } from 'react-native'; import Animated, { Extrapolation, FadeIn, @@ -15,7 +17,6 @@ import Animated, { import { TextClassContext } from '~/components/ui/text'; import { ChevronDown } from '~/lib/icons/ChevronDown'; import { cn } from '~/lib/utils'; -import { Slot } from '@rn-primitives/slot'; type AccordionTriggerRef = AccordionPrimitive.TriggerRef; @@ -102,16 +103,6 @@ const AccordionTrigger = React.forwardRef< ); }); -// TODO: move this to nr-primitives -function renderPressableChildren( - children: PressableProps['children'], - render: (children: React.ReactNode) => React.ReactNode -) { - return typeof children === 'function' - ? (state: PressableStateCallbackType) => render(children(state)) - : render(children); -} - function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( diff --git a/apps/expo-nativewind/package.json b/apps/expo-nativewind/package.json index 2c00d8ae..90573adc 100644 --- a/apps/expo-nativewind/package.json +++ b/apps/expo-nativewind/package.json @@ -14,7 +14,6 @@ "dependencies": { "@react-native-async-storage/async-storage": "1.23.1", "@react-navigation/native": "^7.0.0", - "@rn-primitives/accordion-new": "workspace:*", "@rn-primitives/accordion": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", @@ -45,6 +44,7 @@ "@rn-primitives/toolbar": "workspace:*", "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "expo": "^52.0.11", diff --git a/apps/expo-stylesheet/package.json b/apps/expo-stylesheet/package.json index d25413f4..c2eae673 100644 --- a/apps/expo-stylesheet/package.json +++ b/apps/expo-stylesheet/package.json @@ -44,6 +44,7 @@ "@rn-primitives/toolbar": "workspace:*", "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*", "expo": "^52.0.11", "expo-linking": "~7.0.3", "expo-navigation-bar": "~4.0.4", diff --git a/apps/nextjs-nativewind/next.config.mjs b/apps/nextjs-nativewind/next.config.mjs index 382c60c1..eaf6c4ff 100644 --- a/apps/nextjs-nativewind/next.config.mjs +++ b/apps/nextjs-nativewind/next.config.mjs @@ -10,7 +10,6 @@ const nextConfig = { 'react-native-css-interop', 'react-native-reanimated', '@rn-primitives/accordion', - '@rn-primitives/accordion-new', '@rn-primitives/alert-dialog', '@rn-primitives/aspect-ratio', '@rn-primitives/avatar', diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index 5851be11..f1ef6393 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -11,7 +11,6 @@ }, "dependencies": { "@rn-primitives/accordion": "workspace:*", - "@rn-primitives/accordion-new": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", @@ -41,6 +40,7 @@ "@rn-primitives/toolbar": "workspace:*", "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "lucide-react-native": "^0.451.0", diff --git a/apps/nextjs-nativewind/src/components/ui/accordion.tsx b/apps/nextjs-nativewind/src/components/ui/accordion.tsx index dcb010fc..2ef00f2d 100644 --- a/apps/nextjs-nativewind/src/components/ui/accordion.tsx +++ b/apps/nextjs-nativewind/src/components/ui/accordion.tsx @@ -1,9 +1,10 @@ 'use client'; -import * as AccordionPrimitive from '@rn-primitives/accordion-new'; +import * as AccordionPrimitive from '@rn-primitives/accordion'; import { Slot } from '@rn-primitives/slot'; +import { renderPressableChildren } from '@rn-primitives/utils'; import * as React from 'react'; -import { Platform, type PressableProps, type PressableStateCallbackType, View } from 'react-native'; +import { Platform, View } from 'react-native'; import Animated, { Extrapolation, FadeIn, @@ -104,16 +105,6 @@ const AccordionTrigger = React.forwardRef< ); }); -// TODO: move this to nr-primitives -function renderPressableChildren( - children: PressableProps['children'], - render: (children: React.ReactNode) => React.ReactNode -) { - return typeof children === 'function' - ? (state: PressableStateCallbackType) => render(children(state)) - : render(children); -} - function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( diff --git a/packages/accordion-new/package.json b/packages/accordion-new/package.json deleted file mode 100644 index ae082d08..00000000 --- a/packages/accordion-new/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "@rn-primitives/accordion-new", - "version": "2.0.0-alpha.1", - "description": "Primitive accordion", - "license": "MIT", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.js", - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./native": { - "import": "./dist/native/index.mjs", - "require": "./dist/native/index.js", - "types": "./dist/native/index.d.ts", - "default": "./dist/native/index.js" - }, - "./web": { - "import": "./dist/web/index.mjs", - "require": "./dist/web/index.js", - "types": "./dist/web/index.d.ts", - "default": "./dist/web/index.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "tsup", - "dev": "tsup --watch", - "clean": "rm -rf dist .turbo node_modules", - "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", - "pub:next": "pnpm publish --no-git-checks --access public --tag next", - "pub:release": "pnpm publish --access public" - }, - "dependencies": { - "@radix-ui/react-accordion": "^1.2.3", - "@rn-primitives/animatable": "workspace:*", - "@rn-primitives/hooks": "workspace:*", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*", - "@rn-primitives/web": "workspace:*" - }, - "devDependencies": { - "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", - "tsup": "^8.1.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-reanimated": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - }, - "react-native-reanimated": { - "optional": true - } - } -} diff --git a/packages/accordion-new/src/index.ts b/packages/accordion-new/src/index.ts deleted file mode 100644 index bffb6d0a..00000000 --- a/packages/accordion-new/src/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -export { - Content, - Header, - Item, - Root, - Trigger, - useItemContext, - useRootContext, -} from './universal/accordion'; - -export type { - ContentProps, - HeaderProps, - ItemProps, - RootProps, - TriggerProps, - TriggerRef, -} from './universal/types'; diff --git a/packages/accordion-new/tsconfig.json b/packages/accordion-new/tsconfig.json deleted file mode 100644 index 60ce1f95..00000000 --- a/packages/accordion-new/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "extends": "@tsconfig/react-native/tsconfig.json", - "include": [ - "./src/**/*" - ], - "compilerOptions": { - "lib": [ - "dom", - "es2019", - "es2020.bigint", - "es2020.date", - "es2020.number", - "es2020.promise", - "es2020.string", - "es2020.symbol.wellknown", - "es2021.promise", - "es2021.string", - "es2021.weakref", - "es2022.array", - "es2022.object", - "es2022.string" - ], - }, - "exclude": [ - "dist", - "build", - "node_modules" - ], -} \ No newline at end of file diff --git a/packages/accordion-new/tsup.config.ts b/packages/accordion-new/tsup.config.ts deleted file mode 100644 index d46ba4f1..00000000 --- a/packages/accordion-new/tsup.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { defineConfig, Options } from 'tsup'; - -export default defineConfig((options: Options) => ({ - entry: [ - 'src/index.ts', - 'src/universal/index.ts', - 'src/universal/accordion.tsx', - 'src/universal/accordion.web.tsx', - 'src/native/index.ts', - 'src/native/accordion-native.tsx', - 'src/native/accordion-native.native.tsx', - 'src/web/index.ts', - 'src/web/accordion-web.tsx', - 'src/web/accordion-web.web.tsx', - ], - banner: { - js: "'use client'", - }, - clean: true, - format: ['cjs', 'esm'], - external: [ - 'react', - './universal', - './accordion', - '../native', - './accordion-native', - '../web', - './accordion-web', - ], - dts: true, - ...options, - esbuildOptions(options) { - options.jsx = 'preserve'; - }, -})); diff --git a/packages/accordion/package.json b/packages/accordion/package.json index 70e31479..aa1472f4 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/accordion", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive accordion", "license": "MIT", "main": "dist/index.js", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/accordion": { - "import": "./dist/accordion.mjs", - "require": "./dist/accordion.js", - "types": "./dist/accordion.d.ts", - "default": "./dist/accordion.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -32,10 +38,12 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-accordion": "^1.2.0", + "@radix-ui/react-accordion": "^1.2.3", + "@rn-primitives/animatable": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/web": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", @@ -47,6 +55,7 @@ "peerDependencies": { "react": "*", "react-native": "*", + "react-native-reanimated": "*", "react-native-web": "*" }, "peerDependenciesMeta": { @@ -55,6 +64,9 @@ }, "react-native-web": { "optional": true + }, + "react-native-reanimated": { + "optional": true } } } diff --git a/packages/accordion/src/accordion.tsx b/packages/accordion/src/accordion.tsx deleted file mode 100644 index 5dad6761..00000000 --- a/packages/accordion/src/accordion.tsx +++ /dev/null @@ -1,216 +0,0 @@ -import { useControllableState } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; -import * as React from 'react'; -import { Pressable, View, type GestureResponderEvent } from 'react-native'; -import type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootContext, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; - -const AccordionContext = React.createContext(null); - -const Root = React.forwardRef( - ( - { - asChild, - type, - disabled, - collapsible = true, - value: valueProp, - onValueChange: onValueChangeProps, - defaultValue, - ...viewProps - }, - ref - ) => { - const [value = type === 'multiple' ? [] : undefined, onValueChange] = useControllableState< - (string | undefined) | string[] - >({ - prop: valueProp, - defaultProp: defaultValue, - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); - - const Component = asChild ? Slot.View : View; - return ( - - - - ); - } -); - -Root.displayName = 'RootNativeAccordion'; - -function useRootContext() { - const context = React.useContext(AccordionContext); - if (!context) { - throw new Error( - 'Accordion compound components cannot be rendered outside the Accordion component' - ); - } - return context; -} - -type AccordionItemContext = ItemProps & { - nativeID: string; - isExpanded: boolean; -}; - -const AccordionItemContext = React.createContext(null); - -const Item = React.forwardRef( - ({ asChild, value, disabled, ...viewProps }, ref) => { - const { value: rootValue } = useRootContext(); - const nativeID = React.useId(); - - const Component = asChild ? Slot.View : View; - return ( - - - - ); - } -); - -Item.displayName = 'ItemNativeAccordion'; - -function useItemContext() { - const context = React.useContext(AccordionItemContext); - if (!context) { - throw new Error( - 'AccordionItem compound components cannot be rendered outside the AccordionItem component' - ); - } - return context; -} - -const Header = React.forwardRef(({ asChild, ...props }, ref) => { - const { disabled: rootDisabled } = useRootContext(); - const { disabled: itemDisabled, isExpanded } = useItemContext(); - - const Component = asChild ? Slot.View : View; - return ( - - ); -}); - -Header.displayName = 'HeaderNativeAccordion'; - -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled: disabledProp, ...props }, ref) => { - const { - disabled: rootDisabled, - type, - onValueChange, - value: rootValue, - collapsible, - } = useRootContext(); - const { nativeID, disabled: itemDisabled, value, isExpanded } = useItemContext(); - - function onPress(ev: GestureResponderEvent) { - if (rootDisabled || itemDisabled) return; - if (type === 'single') { - const newValue = collapsible ? (value === rootValue ? undefined : value) : value; - onValueChange(newValue); - } - if (type === 'multiple') { - const rootToArray = toStringArray(rootValue); - const newValue = collapsible - ? rootToArray.includes(value) - ? rootToArray.filter((val) => val !== value) - : rootToArray.concat(value) - : [...new Set(rootToArray.concat(value))]; - // @ts-ignore - `newValue` is of type `string[]` which is OK - onValueChange(newValue); - } - onPressProp?.(ev); - } - - const isDisabled = disabledProp || rootDisabled || itemDisabled; - const Component = asChild ? Slot.Pressable : Pressable; - return ( - - ); - } -); - -Trigger.displayName = 'TriggerNativeAccordion'; - -const Content = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { type } = useRootContext(); - const { nativeID, isExpanded } = useItemContext(); - - if (!forceMount) { - if (!isExpanded) { - return null; - } - } - - const Component = asChild ? Slot.View : View; - return ( - - ); - } -); - -Content.displayName = 'ContentNativeAccordion'; - -export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; - -function toStringArray(value?: string | string[]) { - return Array.isArray(value) ? value : value ? [value] : []; -} - -function isItemExpanded(rootValue: string | string[] | undefined, value: string) { - return Array.isArray(rootValue) ? rootValue.includes(value) : rootValue === value; -} diff --git a/packages/accordion/src/accordion.web.tsx b/packages/accordion/src/accordion.web.tsx deleted file mode 100644 index f8650f5d..00000000 --- a/packages/accordion/src/accordion.web.tsx +++ /dev/null @@ -1,294 +0,0 @@ -import * as Accordion from '@radix-ui/react-accordion'; -import { - useAugmentedRef, - useControllableState, - useIsomorphicLayoutEffect, -} from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; -import * as React from 'react'; -import { Pressable, View } from 'react-native'; -import type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; - -const AccordionContext = React.createContext(null); - -const Root = React.forwardRef( - ( - { - asChild, - value: valueProp, - onValueChange: onValueChangeProps, - defaultValue, - type, - disabled, - dir, - orientation = 'vertical', - collapsible, - ...props - }, - ref - ) => { - const [value = type === 'multiple' ? [] : undefined, onValueChange] = useControllableState< - (string | undefined) | string[] - >({ - prop: valueProp, - defaultProp: defaultValue, - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); - - const Component = asChild ? Slot.View : View; - return ( - - - - - - ); - } -); - -Root.displayName = 'RootWebAccordion'; - -function useRootContext() { - const context = React.useContext(AccordionContext); - if (!context) { - throw new Error( - 'Accordion compound components cannot be rendered outside the Accordion component' - ); - } - return context; -} - -const AccordionItemContext = React.createContext<(ItemProps & { isExpanded: boolean }) | null>( - null -); - -const Item = React.forwardRef( - ({ asChild, value: itemValue, disabled, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { value, orientation, disabled: disabledRoot } = useRootContext(); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - const isExpanded = Array.isArray(value) ? value.includes(itemValue) : value === itemValue; - augRef.dataset.state = isExpanded ? 'open' : 'closed'; - } - }, [value, itemValue]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.orientation = orientation; - if (disabled || disabledRoot) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } - } - }, [orientation, disabled, disabledRoot]); - - const Component = asChild ? Slot.View : View; - return ( - - - - - - ); - } -); - -Item.displayName = 'ItemWebAccordion'; - -function useItemContext() { - const context = React.useContext(AccordionItemContext); - if (!context) { - throw new Error( - 'AccordionItem compound components cannot be rendered outside the AccordionItem component' - ); - } - return context; -} - -const Header = React.forwardRef(({ asChild, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { disabled, isExpanded } = useItemContext(); - const { orientation, disabled: disabledRoot } = useRootContext(); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = isExpanded ? 'open' : 'closed'; - } - }, [isExpanded]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.orientation = orientation; - if (disabled || disabledRoot) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } - } - }, [orientation, disabled, disabledRoot]); - - const Component = asChild ? Slot.View : View; - return ( - - - - ); -}); - -Header.displayName = 'HeaderWebAccordion'; - -const HIDDEN_STYLE: React.CSSProperties = { - position: 'absolute', - top: 0, - left: 0, - zIndex: -999999, - opacity: 0, -}; - -const Trigger = React.forwardRef( - ({ asChild, disabled: disabledProp, ...props }, ref) => { - const { disabled: disabledRoot } = useRootContext(); - const { disabled, isExpanded } = useItemContext(); - const triggerRef = React.useRef(null); - const augmentedRef = useAugmentedRef({ ref }); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - - augRef.dataset.state = isExpanded ? 'expanded' : 'closed'; - } - }, [isExpanded]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - - if (disabled || disabledRoot || disabledProp) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } - } - }, [disabled, disabledRoot, disabledProp]); - - useIsomorphicLayoutEffect(() => { - if (triggerRef.current) { - triggerRef.current.disabled = true; - } - }, []); - - const isDisabled = disabledProp ?? disabledRoot ?? disabled; - const Component = asChild ? Slot.Pressable : Pressable; - return ( - <> - - - { - if (triggerRef.current && !isDisabled) { - triggerRef.current.disabled = false; - triggerRef.current.click(); - triggerRef.current.disabled = true; - } - props.onPress?.(ev); - }} - /> - - - ); - } -); - -Trigger.displayName = 'TriggerWebAccordion'; - -const Content = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - - const { orientation, disabled: disabledRoot } = useRootContext(); - const { disabled, isExpanded } = useItemContext(); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = isExpanded ? 'expanded' : 'closed'; - } - }, [isExpanded]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.orientation = orientation; - - if (disabled || disabledRoot) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } - } - }, [orientation, disabled, disabledRoot]); - - const Component = asChild ? Slot.View : View; - return ( - - - - ); - } -); - -Content.displayName = 'ContentWebAccordion'; - -export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; - -function isItemExpanded(rootValue: string | string[] | undefined, value: string) { - return Array.isArray(rootValue) ? rootValue.includes(value) : rootValue === value; -} diff --git a/packages/accordion-new/src/base-types.ts b/packages/accordion/src/base-types.ts similarity index 100% rename from packages/accordion-new/src/base-types.ts rename to packages/accordion/src/base-types.ts diff --git a/packages/accordion/src/index.ts b/packages/accordion/src/index.ts index dcbd3291..bffb6d0a 100644 --- a/packages/accordion/src/index.ts +++ b/packages/accordion/src/index.ts @@ -1,2 +1,18 @@ -export * from './accordion'; -export * from './types'; +export { + Content, + Header, + Item, + Root, + Trigger, + useItemContext, + useRootContext, +} from './universal/accordion'; + +export type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './universal/types'; diff --git a/packages/accordion-new/src/native/accordion-native.native.tsx b/packages/accordion/src/native/accordion-native.native.tsx similarity index 100% rename from packages/accordion-new/src/native/accordion-native.native.tsx rename to packages/accordion/src/native/accordion-native.native.tsx diff --git a/packages/accordion-new/src/native/accordion-native.tsx b/packages/accordion/src/native/accordion-native.tsx similarity index 100% rename from packages/accordion-new/src/native/accordion-native.tsx rename to packages/accordion/src/native/accordion-native.tsx diff --git a/packages/accordion-new/src/native/index.ts b/packages/accordion/src/native/index.ts similarity index 100% rename from packages/accordion-new/src/native/index.ts rename to packages/accordion/src/native/index.ts diff --git a/packages/accordion-new/src/native/types.ts b/packages/accordion/src/native/types.ts similarity index 100% rename from packages/accordion-new/src/native/types.ts rename to packages/accordion/src/native/types.ts diff --git a/packages/accordion/src/types.ts b/packages/accordion/src/types.ts deleted file mode 100644 index 643e5c93..00000000 --- a/packages/accordion/src/types.ts +++ /dev/null @@ -1,73 +0,0 @@ -import type { - ForceMountable, - PressableRef, - SlottablePressableProps, - SlottableViewProps, - ViewRef, -} from '@rn-primitives/types'; - -type RootContext = { - type: 'single' | 'multiple'; - value: (string | undefined) | string[]; - onValueChange: (value: string | undefined) => void | ((value: string[]) => void); - collapsible: boolean; - disabled?: boolean; -}; - -type SingleRootProps = { - type: 'single'; - defaultValue?: string | undefined; - value?: string | undefined; - onValueChange?: (value: string | undefined) => void; -}; - -type MultipleRootProps = { - type: 'multiple'; - defaultValue?: string[]; - value?: string[]; - onValueChange?: (value: string[]) => void; -}; - -type RootProps = (SingleRootProps | MultipleRootProps) & { - defaultValue?: string | string[]; - disabled?: boolean; - collapsible?: boolean; - /** - * Platform: WEB ONLY - */ - dir?: 'ltr' | 'rtl'; - /** - * Platform: WEB ONLY - */ - orientation?: 'vertical' | 'horizontal'; -} & SlottableViewProps; - -type RootRef = ViewRef; - -type ItemProps = { - value: string; - disabled?: boolean; -} & SlottableViewProps; - -type ItemRef = ViewRef; - -type ContentProps = ForceMountable & SlottableViewProps; -type ContentRef = ViewRef; -type HeaderProps = SlottableViewProps; -type HeaderRef = ViewRef; -type TriggerProps = SlottablePressableProps; -type TriggerRef = PressableRef; - -export type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootContext, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -}; diff --git a/packages/accordion-new/src/universal/accordion.tsx b/packages/accordion/src/universal/accordion.tsx similarity index 100% rename from packages/accordion-new/src/universal/accordion.tsx rename to packages/accordion/src/universal/accordion.tsx diff --git a/packages/accordion-new/src/universal/accordion.web.tsx b/packages/accordion/src/universal/accordion.web.tsx similarity index 100% rename from packages/accordion-new/src/universal/accordion.web.tsx rename to packages/accordion/src/universal/accordion.web.tsx diff --git a/packages/accordion-new/src/universal/index.ts b/packages/accordion/src/universal/index.ts similarity index 100% rename from packages/accordion-new/src/universal/index.ts rename to packages/accordion/src/universal/index.ts diff --git a/packages/accordion-new/src/universal/types.ts b/packages/accordion/src/universal/types.ts similarity index 100% rename from packages/accordion-new/src/universal/types.ts rename to packages/accordion/src/universal/types.ts diff --git a/packages/accordion-new/src/utils/contexts.ts b/packages/accordion/src/utils/contexts.ts similarity index 100% rename from packages/accordion-new/src/utils/contexts.ts rename to packages/accordion/src/utils/contexts.ts diff --git a/packages/accordion-new/src/utils/get-default-value.ts b/packages/accordion/src/utils/get-default-value.ts similarity index 100% rename from packages/accordion-new/src/utils/get-default-value.ts rename to packages/accordion/src/utils/get-default-value.ts diff --git a/packages/accordion-new/src/utils/is-item-expanded.ts b/packages/accordion/src/utils/is-item-expanded.ts similarity index 100% rename from packages/accordion-new/src/utils/is-item-expanded.ts rename to packages/accordion/src/utils/is-item-expanded.ts diff --git a/packages/accordion-new/src/web/accordion-web.tsx b/packages/accordion/src/web/accordion-web.tsx similarity index 100% rename from packages/accordion-new/src/web/accordion-web.tsx rename to packages/accordion/src/web/accordion-web.tsx diff --git a/packages/accordion-new/src/web/accordion-web.web.tsx b/packages/accordion/src/web/accordion-web.web.tsx similarity index 100% rename from packages/accordion-new/src/web/accordion-web.web.tsx rename to packages/accordion/src/web/accordion-web.web.tsx diff --git a/packages/accordion-new/src/web/index.ts b/packages/accordion/src/web/index.ts similarity index 100% rename from packages/accordion-new/src/web/index.ts rename to packages/accordion/src/web/index.ts diff --git a/packages/accordion-new/src/web/types.ts b/packages/accordion/src/web/types.ts similarity index 100% rename from packages/accordion-new/src/web/types.ts rename to packages/accordion/src/web/types.ts diff --git a/packages/accordion/tsup.config.ts b/packages/accordion/tsup.config.ts index 725b6cb5..d46ba4f1 100644 --- a/packages/accordion/tsup.config.ts +++ b/packages/accordion/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/accordion.tsx', 'src/accordion.web.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/accordion.tsx', + 'src/universal/accordion.web.tsx', + 'src/native/index.ts', + 'src/native/accordion-native.tsx', + 'src/native/accordion-native.native.tsx', + 'src/web/index.ts', + 'src/web/accordion-web.tsx', + 'src/web/accordion-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './accordion'], + external: [ + 'react', + './universal', + './accordion', + '../native', + './accordion-native', + '../web', + './accordion-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 8453d374..2bd288ed 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,4 +1,17 @@ -import type { GestureResponderEvent } from 'react-native'; +import type { + GestureResponderEvent, + PressableProps, + PressableStateCallbackType, +} from 'react-native'; + +function renderPressableChildren( + children: PressableProps['children'], + render: (children: React.ReactNode) => React.ReactNode +) { + return typeof children === 'function' + ? (state: PressableStateCallbackType) => render(children(state)) + : render(children); +} const ToggleGroupUtils = { getIsSelected(value: string | string[] | undefined, itemValue: string) { @@ -58,4 +71,4 @@ const EmptyGestureResponderEvent: GestureResponderEvent = { type: '', }; -export { ToggleGroupUtils, EmptyGestureResponderEvent }; +export { EmptyGestureResponderEvent, renderPressableChildren, ToggleGroupUtils }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ca2a56a..51f153d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -199,9 +199,6 @@ importers: '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion - '@rn-primitives/accordion-new': - specifier: workspace:* - version: link:../../packages/accordion-new '@rn-primitives/alert-dialog': specifier: workspace:* version: link:../../packages/alert-dialog @@ -289,6 +286,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../../packages/types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../../packages/utils class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -467,6 +467,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../../packages/types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../../packages/utils expo: specifier: ^52.0.11 version: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) @@ -534,9 +537,6 @@ importers: '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion - '@rn-primitives/accordion-new': - specifier: workspace:* - version: link:../../packages/accordion-new '@rn-primitives/alert-dialog': specifier: workspace:* version: link:../../packages/alert-dialog @@ -624,6 +624,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../../packages/types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../../packages/utils class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -681,40 +684,6 @@ importers: version: 5.7.2 packages/accordion: - dependencies: - '@radix-ui/react-accordion': - specifier: ^1.2.0 - version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rn-primitives/hooks': - specifier: workspace:* - version: link:../hooks - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot - '@rn-primitives/types': - specifier: workspace:* - version: link:../types - react-native-web: - specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - devDependencies: - '@tsconfig/react-native': - specifier: ^1.0.1 - version: 1.0.5 - '@types/react': - specifier: ~18.3.12 - version: 18.3.12 - react: - specifier: 18.3.1 - version: 18.3.1 - react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - tsup: - specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) - - packages/accordion-new: dependencies: '@radix-ui/react-accordion': specifier: ^1.2.3 @@ -3334,19 +3303,6 @@ packages: '@radix-ui/primitive@1.1.1': resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} - '@radix-ui/react-accordion@1.2.1': - resolution: {integrity: sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-accordion@1.2.3': resolution: {integrity: sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A==} peerDependencies: @@ -10848,23 +10804,6 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-accordion@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collapsible': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 - '@radix-ui/react-accordion@1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 From 5e1e4c33de243ec7f20fc0626d53cd5b2c1f2afb Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 21 Feb 2025 16:37:10 -0500 Subject: [PATCH 028/106] feat: use generic slot + radix-ui slot on the web --- apps/expo-nativewind/components/ui/text.tsx | 4 +- .../components/ui/typography.tsx | 24 ++++---- .../src/components/ui/text.tsx | 4 +- .../src/components/ui/typography.tsx | 24 ++++---- .../accordion/src/web/accordion-web.web.tsx | 1 + packages/alert-dialog/src/alert-dialog.tsx | 18 +++--- .../alert-dialog/src/alert-dialog.web.tsx | 18 +++--- packages/aspect-ratio/src/aspect-ratio.tsx | 4 +- packages/avatar/src/avatar.tsx | 8 +-- packages/checkbox/src/checkbox.tsx | 6 +- packages/checkbox/src/checkbox.web.tsx | 6 +- packages/collapsible/src/collapsible.tsx | 8 +-- packages/collapsible/src/collapsible.web.tsx | 8 +-- packages/context-menu/src/context-menu.tsx | 32 +++++----- .../context-menu/src/context-menu.web.tsx | 41 ++++++------- packages/dialog/src/dialog.tsx | 12 ++-- packages/dialog/src/dialog.web.tsx | 16 ++--- packages/dropdown-menu/src/dropdown-menu.tsx | 32 +++++----- .../dropdown-menu/src/dropdown-menu.web.tsx | 57 ++++++------------ packages/hover-card/src/hover-card.tsx | 10 ++-- packages/hover-card/src/hover-card.web.tsx | 10 ++-- packages/label/src/label.tsx | 6 +- packages/label/src/label.web.tsx | 6 +- packages/menubar/src/menubar.tsx | 34 +++++------ packages/menubar/src/menubar.web.tsx | 59 +++++++------------ .../navigation-menu/src/navigation-menu.tsx | 16 ++--- .../src/navigation-menu.web.tsx | 37 ++++-------- packages/popover/src/popover.tsx | 12 ++-- packages/popover/src/popover.web.tsx | 12 ++-- packages/progress/src/progress.tsx | 6 +- packages/progress/src/progress.web.tsx | 6 +- packages/radio-group/src/radio-group.tsx | 8 +-- packages/radio-group/src/radio-group.web.tsx | 8 +-- packages/select/src/select.tsx | 24 ++++---- packages/select/src/select.web.tsx | 28 ++++----- packages/separator/src/separator.tsx | 4 +- packages/slider/src/slider.tsx | 10 ++-- packages/slider/src/slider.web.tsx | 10 ++-- packages/slot/package.json | 3 + packages/slot/src/slot.tsx | 18 +++++- packages/slot/src/slot.web.ts | 7 +++ packages/slot/tsup.config.ts | 6 +- packages/switch/src/switch.tsx | 6 +- packages/switch/src/switch.web.tsx | 7 +-- packages/table/src/table.tsx | 16 ++--- packages/tabs/src/tabs.tsx | 10 ++-- packages/tabs/src/tabs.web.tsx | 10 ++-- packages/toast/src/toast.tsx | 12 ++-- packages/toggle-group/src/toggle-group.tsx | 6 +- .../toggle-group/src/toggle-group.web.tsx | 6 +- packages/toggle/src/toggle.tsx | 4 +- packages/toggle/src/toggle.web.tsx | 4 +- packages/toolbar/src/toolbar.tsx | 14 ++--- packages/toolbar/src/toolbar.web.tsx | 14 ++--- packages/tooltip/src/tooltip.tsx | 10 ++-- packages/tooltip/src/tooltip.web.tsx | 10 ++-- pnpm-lock.yaml | 3 + 57 files changed, 380 insertions(+), 415 deletions(-) create mode 100644 packages/slot/src/slot.web.ts diff --git a/apps/expo-nativewind/components/ui/text.tsx b/apps/expo-nativewind/components/ui/text.tsx index 0d7af0f9..4b3b5c22 100644 --- a/apps/expo-nativewind/components/ui/text.tsx +++ b/apps/expo-nativewind/components/ui/text.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import type { SlottableTextProps, TextRef } from '@rn-primitives/types'; import * as React from 'react'; import { Text as RNText } from 'react-native'; @@ -9,7 +9,7 @@ const TextClassContext = React.createContext(undefined); const Text = React.forwardRef( ({ className, asChild = false, ...props }, ref) => { const textClass = React.useContext(TextClassContext); - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( (undefined); const Text = React.forwardRef( ({ className, asChild = false, ...props }, ref) => { const textClass = React.useContext(TextClassContext); - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( ( {...({ ...props, value: rootValue, + defaultValue, onValueChange: onRootValueChange, collapsible: collapsible?.toString(), // fixes radix-ui/accordion console error } as BaseAccordionSingleProps | BaseAccordionMultipleProps)} diff --git a/packages/alert-dialog/src/alert-dialog.tsx b/packages/alert-dialog/src/alert-dialog.tsx index 1f0527b3..d115c090 100644 --- a/packages/alert-dialog/src/alert-dialog.tsx +++ b/packages/alert-dialog/src/alert-dialog.tsx @@ -1,6 +1,6 @@ import { useControllableState } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, Pressable, Text, View, type GestureResponderEvent } from 'react-native'; import type { @@ -34,7 +34,7 @@ const Root = React.forwardRef( defaultProp: defaultOpen, onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -143,7 +143,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( (({ asChild, ...props }, ref) => { const { nativeID } = useRootContext(); - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; }); @@ -223,7 +223,7 @@ Title.displayName = 'TitleNativeAlertDialog'; const Description = React.forwardRef( ({ asChild, ...props }, ref) => { const { nativeID } = useRootContext(); - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; } ); diff --git a/packages/alert-dialog/src/alert-dialog.web.tsx b/packages/alert-dialog/src/alert-dialog.web.tsx index e2bfc96f..06942967 100644 --- a/packages/alert-dialog/src/alert-dialog.web.tsx +++ b/packages/alert-dialog/src/alert-dialog.web.tsx @@ -4,7 +4,7 @@ import { useControllableState, useIsomorphicLayoutEffect, } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, Text, View, type GestureResponderEvent } from 'react-native'; import type { @@ -37,7 +37,7 @@ const Root = React.forwardRef( defaultProp: defaultOpen, onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -79,7 +79,7 @@ const Trigger = React.forwardRef( } }, [open]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -125,7 +125,7 @@ const Content = React.forwardRef( } }, [open]); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } }, []); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( <> @@ -199,7 +199,7 @@ const Action = React.forwardRef( } }, []); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( <> @@ -219,7 +219,7 @@ const Action = React.forwardRef( Action.displayName = 'ActionAlertWebDialog'; const Title = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( @@ -231,7 +231,7 @@ Title.displayName = 'TitleAlertWebDialog'; const Description = React.forwardRef( ({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( diff --git a/packages/aspect-ratio/src/aspect-ratio.tsx b/packages/aspect-ratio/src/aspect-ratio.tsx index c7871b36..1d9454ca 100644 --- a/packages/aspect-ratio/src/aspect-ratio.tsx +++ b/packages/aspect-ratio/src/aspect-ratio.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import type { SlottableViewProps, ViewRef } from '@rn-primitives/types'; import * as React from 'react'; import { View, type ViewStyle } from 'react-native'; @@ -12,7 +12,7 @@ type RootRef = ViewRef; const Root = React.forwardRef( ({ asChild, ratio = 1, style, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); diff --git a/packages/avatar/src/avatar.tsx b/packages/avatar/src/avatar.tsx index 5d68d434..5be677cc 100644 --- a/packages/avatar/src/avatar.tsx +++ b/packages/avatar/src/avatar.tsx @@ -1,5 +1,5 @@ import { useIsomorphicLayoutEffect } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { type ImageErrorEventData, @@ -22,7 +22,7 @@ const RootContext = React.createContext(null); const Root = React.forwardRef(({ asChild, alt, ...viewProps }, ref) => { const [status, setStatus] = React.useState('error'); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -79,7 +79,7 @@ const Image = React.forwardRef( return null; } - const Component = asChild ? Slot.Image : RNImage; + const Component = asChild ? Slot : RNImage; return ; } ); @@ -92,7 +92,7 @@ const Fallback = React.forwardRef(({ asChild, ...pro if (status !== 'error') { return null; } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); diff --git a/packages/checkbox/src/checkbox.tsx b/packages/checkbox/src/checkbox.tsx index f5a87220..d15f372b 100644 --- a/packages/checkbox/src/checkbox.tsx +++ b/packages/checkbox/src/checkbox.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import type { PressableRef, SlottablePressableProps } from '@rn-primitives/types'; import * as React from 'react'; import { GestureResponderEvent, Pressable, View } from 'react-native'; @@ -50,7 +50,7 @@ const Trigger = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } }, [disabled]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } }, [disabled]); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/collapsible/src/collapsible.tsx b/packages/collapsible/src/collapsible.tsx index c202fae9..b60ba5a2 100644 --- a/packages/collapsible/src/collapsible.tsx +++ b/packages/collapsible/src/collapsible.tsx @@ -1,5 +1,5 @@ import { useControllableState } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; import type { @@ -33,7 +33,7 @@ const Root = React.forwardRef( onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } }, [disabled]); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onOpenChange(!open); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } }, [open]); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/context-menu/src/context-menu.tsx b/packages/context-menu/src/context-menu.tsx index b67a4fe5..2ae065db 100644 --- a/packages/context-menu/src/context-menu.tsx +++ b/packages/context-menu/src/context-menu.tsx @@ -5,7 +5,7 @@ import { type LayoutPosition, } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -75,7 +75,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onAccessibilityActionProp?.(event); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -304,7 +304,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( Item.displayName = 'ItemNativeContextMenu'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Group.displayName = 'GroupNativeContextMenu'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; }); @@ -405,7 +405,7 @@ const CheckboxItem = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -481,7 +481,7 @@ const RadioItem = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( return null; } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -530,7 +530,7 @@ ItemIndicator.displayName = 'ItemIndicatorNativeContextMenu'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -552,7 +552,7 @@ const Sub = React.forwardRef( onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); diff --git a/packages/context-menu/src/context-menu.web.tsx b/packages/context-menu/src/context-menu.web.tsx index 5e384b9e..79974991 100644 --- a/packages/context-menu/src/context-menu.web.tsx +++ b/packages/context-menu/src/context-menu.web.tsx @@ -4,7 +4,7 @@ import { useControllableState, useIsomorphicLayoutEffect, } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; import * as React from 'react'; import { GestureResponderEvent, Pressable, Text, View } from 'react-native'; @@ -56,7 +56,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -112,7 +112,7 @@ const Trigger = React.forwardRef( } }, [disabled]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -128,7 +128,7 @@ function Portal({ forceMount, container, children }: PortalProps) { } const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); @@ -168,7 +168,7 @@ const Content = React.forwardRef( itemRef.current?.click(); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( Item.displayName = 'ItemWebContextMenu'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -261,7 +261,7 @@ const Group = React.forwardRef(({ asChild, ...props }, ref Group.displayName = 'GroupWebContextMenu'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( @@ -307,7 +307,7 @@ const CheckboxItem = React.forwardRef( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ( ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -397,7 +396,7 @@ const RadioItem = React.forwardRef( close(); } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onSelect={closeOnPress ? undefined : onSelected} asChild > - + ); } @@ -422,7 +415,7 @@ RadioItem.displayName = 'RadioItemWebContextMenu'; const ItemIndicator = React.forwardRef( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -435,7 +428,7 @@ ItemIndicator.displayName = 'ItemIndicatorWebContextMenu'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -459,7 +452,7 @@ const Sub = React.forwardRef( onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -491,7 +484,7 @@ const SubTrigger = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -504,7 +497,7 @@ SubTrigger.displayName = 'SubTriggerWebContextMenu'; const SubContent = React.forwardRef( ({ asChild = false, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( diff --git a/packages/dialog/src/dialog.tsx b/packages/dialog/src/dialog.tsx index eb9f6ee5..45361be1 100644 --- a/packages/dialog/src/dialog.tsx +++ b/packages/dialog/src/dialog.tsx @@ -1,6 +1,6 @@ import { useControllableState } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, GestureResponderEvent, Pressable, Text, View } from 'react-native'; import type { @@ -33,7 +33,7 @@ const Root = React.forwardRef( onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -149,7 +149,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( defaultProp: defaultOpen, onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -75,7 +75,7 @@ const Trigger = React.forwardRef( } }, [open]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -123,7 +123,7 @@ const Content = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } }, []); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( <> @@ -180,7 +180,7 @@ const Close = React.forwardRef( Close.displayName = 'CloseWebDialog'; const Title = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( @@ -192,7 +192,7 @@ Title.displayName = 'TitleWebDialog'; const Description = React.forwardRef( ({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( diff --git a/packages/dropdown-menu/src/dropdown-menu.tsx b/packages/dropdown-menu/src/dropdown-menu.tsx index b7d3da6d..2070af68 100644 --- a/packages/dropdown-menu/src/dropdown-menu.tsx +++ b/packages/dropdown-menu/src/dropdown-menu.tsx @@ -5,7 +5,7 @@ import { type LayoutPosition, } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -74,7 +74,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(open); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -269,7 +269,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( Item.displayName = 'ItemNativeDropdownMenu'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Group.displayName = 'GroupNativeDropdownMenu'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; }); @@ -369,7 +369,7 @@ const CheckboxItem = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -445,7 +445,7 @@ const RadioItem = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( return null; } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -494,7 +494,7 @@ ItemIndicator.displayName = 'ItemIndicatorNativeDropdownMenu'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -516,7 +516,7 @@ const Sub = React.forwardRef( onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); diff --git a/packages/dropdown-menu/src/dropdown-menu.web.tsx b/packages/dropdown-menu/src/dropdown-menu.web.tsx index bf1e558c..d6877800 100644 --- a/packages/dropdown-menu/src/dropdown-menu.web.tsx +++ b/packages/dropdown-menu/src/dropdown-menu.web.tsx @@ -4,7 +4,7 @@ import { useControllableState, useIsomorphicLayoutEffect, } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; import * as React from 'react'; import { GestureResponderEvent, Pressable, Text, View } from 'react-native'; @@ -56,7 +56,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(open); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -112,7 +112,7 @@ const Trigger = React.forwardRef( } }, [disabled]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -128,7 +128,7 @@ function Portal({ forceMount, container, children }: PortalProps) { } const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); @@ -167,7 +167,7 @@ const Content = React.forwardRef( function close() { itemRef.current?.click(); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onSelect={closeOnPress ? undefined : onSelected} asChild > - + ); } @@ -269,7 +263,7 @@ const Item = React.forwardRef( Item.displayName = 'ItemWebDropdownMenu'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -280,7 +274,7 @@ const Group = React.forwardRef(({ asChild, ...props }, ref Group.displayName = 'GroupWebDropdownMenu'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( @@ -325,7 +319,7 @@ const CheckboxItem = React.forwardRef( close(); } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( disabled={disabled ?? undefined} asChild > - + ); } @@ -357,7 +344,7 @@ const DropdownMenuRadioGroupContext = React.createContext<{ const RadioGroup = React.forwardRef( ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -414,7 +401,7 @@ const RadioItem = React.forwardRef( close(); } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onSelect={closeOnPress ? undefined : onSelected} asChild > - + ); } @@ -439,7 +420,7 @@ RadioItem.displayName = 'RadioItemWebDropdownMenu'; const ItemIndicator = React.forwardRef( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -452,7 +433,7 @@ ItemIndicator.displayName = 'ItemIndicatorWebDropdownMenu'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -476,7 +457,7 @@ const Sub = React.forwardRef( onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -508,7 +489,7 @@ const SubTrigger = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -521,7 +502,7 @@ SubTrigger.displayName = 'SubTriggerWebDropdownMenu'; const SubContent = React.forwardRef( ({ asChild = false, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( diff --git a/packages/hover-card/src/hover-card.tsx b/packages/hover-card/src/hover-card.tsx index 1915c629..15694a1a 100644 --- a/packages/hover-card/src/hover-card.tsx +++ b/packages/hover-card/src/hover-card.tsx @@ -1,6 +1,6 @@ import { useAugmentedRef, useRelativePosition, type LayoutPosition } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -56,7 +56,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -250,7 +250,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (({ asChild, ...props }, }); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -84,7 +84,7 @@ function Portal({ forceMount, container, children }: PortalProps) { } const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); @@ -114,7 +114,7 @@ const Content = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( (({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); Root.displayName = 'RootNativeLabel'; const Text = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ; }); diff --git a/packages/label/src/label.web.tsx b/packages/label/src/label.web.tsx index f7750e94..a5e90faf 100644 --- a/packages/label/src/label.web.tsx +++ b/packages/label/src/label.web.tsx @@ -1,11 +1,11 @@ import * as Label from '@radix-ui/react-label'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, Text as RNText } from 'react-native'; import type { RootProps, RootRef, TextProps, TextRef } from './types'; const Root = React.forwardRef(({ asChild, tabIndex = -1, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); @@ -13,7 +13,7 @@ Root.displayName = 'RootWebLabel'; const Text = React.forwardRef( ({ asChild, nativeID, htmlFor, ...props }, ref) => { - const Component = asChild ? Slot.Text : RNText; + const Component = asChild ? Slot : RNText; return ( diff --git a/packages/menubar/src/menubar.tsx b/packages/menubar/src/menubar.tsx index 7d12654d..02b20278 100644 --- a/packages/menubar/src/menubar.tsx +++ b/packages/menubar/src/menubar.tsx @@ -5,7 +5,7 @@ import { type LayoutPosition, } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -68,7 +68,7 @@ const Root = React.forwardRef( const [triggerPosition, setTriggerPosition] = React.useState(null); const [contentLayout, setContentLayout] = React.useState(null); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (null); const Menu = React.forwardRef(({ asChild, value, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -278,7 +278,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( Item.displayName = 'ItemMenubar'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Group.displayName = 'GroupMenubar'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; }); @@ -379,7 +379,7 @@ const CheckboxItem = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -459,7 +459,7 @@ const RadioItem = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( return null; } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -508,7 +508,7 @@ ItemIndicator.displayName = 'ItemIndicatorMenubar'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -530,7 +530,7 @@ const Sub = React.forwardRef( onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); diff --git a/packages/menubar/src/menubar.web.tsx b/packages/menubar/src/menubar.web.tsx index 8fc6e964..3b32c770 100644 --- a/packages/menubar/src/menubar.web.tsx +++ b/packages/menubar/src/menubar.web.tsx @@ -4,7 +4,7 @@ import { useControllableState, useIsomorphicLayoutEffect, } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; import * as React from 'react'; import { GestureResponderEvent, Pressable, Text, View } from 'react-native'; @@ -48,7 +48,7 @@ const RootContext = React.createContext(null); const Root = React.forwardRef( ({ asChild, value, onValueChange, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -72,7 +72,7 @@ function useRootContext() { const MenuContext = React.createContext(null); const Menu = React.forwardRef(({ asChild, value, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -116,7 +116,7 @@ const Trigger = React.forwardRef( } }, [disabled]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -132,7 +132,7 @@ function Portal({ forceMount, container, children }: PortalProps) { } const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); @@ -172,7 +172,7 @@ const Content = React.forwardRef( itemRef.current?.click(); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onSelect={closeOnPress ? undefined : onSelected} asChild > - + ); } @@ -274,7 +268,7 @@ const Item = React.forwardRef( Item.displayName = 'ItemWebMenubar'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -285,7 +279,7 @@ const Group = React.forwardRef(({ asChild, ...props }, ref Group.displayName = 'GroupWebMenubar'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( @@ -328,7 +322,7 @@ const CheckboxItem = React.forwardRef( close(); } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( disabled={disabled ?? undefined} asChild > - + ); } @@ -360,7 +347,7 @@ const MenubarRadioGroupContext = React.createContext<{ const RadioGroup = React.forwardRef( ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -417,7 +404,7 @@ const RadioItem = React.forwardRef( close(); } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onSelect={closeOnPress ? undefined : onSelected} asChild > - + ); } @@ -442,7 +423,7 @@ RadioItem.displayName = 'RadioItemWebMenubar'; const ItemIndicator = React.forwardRef( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -455,7 +436,7 @@ ItemIndicator.displayName = 'ItemIndicatorWebMenubar'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -478,7 +459,7 @@ const Sub = React.forwardRef( defaultProp: defaultOpen, onChange: onOpenChangeProp, }); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -510,7 +491,7 @@ const SubTrigger = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -523,7 +504,7 @@ SubTrigger.displayName = 'SubTriggerWebMenubar'; const SubContent = React.forwardRef( ({ asChild = false, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/navigation-menu/src/navigation-menu.tsx b/packages/navigation-menu/src/navigation-menu.tsx index 51cd15c7..729c7887 100644 --- a/packages/navigation-menu/src/navigation-menu.tsx +++ b/packages/navigation-menu/src/navigation-menu.tsx @@ -1,6 +1,6 @@ import { useRelativePosition, type LayoutPosition } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -46,7 +46,7 @@ const Root = React.forwardRef( const [triggerPosition, setTriggerPosition] = React.useState(null); const [contentLayout, setContentLayout] = React.useState(null); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (({ asChild, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); @@ -89,7 +89,7 @@ const ItemContext = React.createContext<(ItemProps & { nativeID: string }) | nul const Item = React.forwardRef(({ asChild, value, ...viewProps }, ref) => { const nativeID = React.useId(); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( Content.displayName = 'ContentNativeNavigationMenu'; const Link = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); @@ -287,7 +287,7 @@ const Viewport = React.forwardRef((props, ref) => { Viewport.displayName = 'ViewportNativeNavigationMenu'; const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); diff --git a/packages/navigation-menu/src/navigation-menu.web.tsx b/packages/navigation-menu/src/navigation-menu.web.tsx index d9ab6fc3..443d53c3 100644 --- a/packages/navigation-menu/src/navigation-menu.web.tsx +++ b/packages/navigation-menu/src/navigation-menu.web.tsx @@ -1,6 +1,6 @@ import * as NavigationMenu from '@radix-ui/react-navigation-menu'; import { useAugmentedRef, useIsomorphicLayoutEffect } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; import * as React from 'react'; import { GestureResponderEvent, Pressable, View } from 'react-native'; @@ -40,7 +40,7 @@ const Root = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (({ asChild, ...viewProps }, re } }, [orientation]); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -94,7 +94,7 @@ List.displayName = 'ListWebNavigationMenu'; const ItemContext = React.createContext(null); const Item = React.forwardRef(({ asChild, value, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -136,16 +136,10 @@ const Trigger = React.forwardRef( onValueChange(value === rootValue ? '' : value); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( - + ); } @@ -178,7 +172,7 @@ const Content = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onValueChange(''); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( - + ); } @@ -231,16 +218,16 @@ Link.displayName = 'LinkWebNavigationMenu'; const Viewport = React.forwardRef((props, ref) => { return ( - + - + ); }); Viewport.displayName = 'ViewportWebNavigationMenu'; const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/popover/src/popover.tsx b/packages/popover/src/popover.tsx index 7da87de7..cfeb74de 100644 --- a/packages/popover/src/popover.tsx +++ b/packages/popover/src/popover.tsx @@ -1,6 +1,6 @@ import { useAugmentedRef, useRelativePosition, type LayoutPosition } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -48,7 +48,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -240,7 +240,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -80,7 +80,7 @@ const Trigger = React.forwardRef( } }, [open]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -131,7 +131,7 @@ const Content = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } }, []); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( <> diff --git a/packages/progress/src/progress.tsx b/packages/progress/src/progress.tsx index 46e991a5..0da6dd8b 100644 --- a/packages/progress/src/progress.tsx +++ b/packages/progress/src/progress.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { View } from 'react-native'; import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; @@ -17,7 +17,7 @@ const Root = React.forwardRef( const max = maxProp ?? DEFAULT_MAX; const value = isValidValueNumber(valueProp, max) ? valueProp : 0; - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( Root.displayName = 'RootProgress'; const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); diff --git a/packages/progress/src/progress.web.tsx b/packages/progress/src/progress.web.tsx index 4b32e8e3..2f96f72a 100644 --- a/packages/progress/src/progress.web.tsx +++ b/packages/progress/src/progress.web.tsx @@ -1,5 +1,5 @@ import * as Progress from '@radix-ui/react-progress'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { View } from 'react-native'; import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; @@ -8,7 +8,7 @@ const ProgressContext = React.createContext(null); const Root = React.forwardRef( ({ asChild, value, max, getValueLabel, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -22,7 +22,7 @@ const Root = React.forwardRef( Root.displayName = 'RootProgress'; const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/radio-group/src/radio-group.tsx b/packages/radio-group/src/radio-group.tsx index de533a57..56be6a9a 100644 --- a/packages/radio-group/src/radio-group.tsx +++ b/packages/radio-group/src/radio-group.tsx @@ -1,13 +1,13 @@ import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import type { IndicatorProps, IndicatorRef, ItemProps, ItemRef, RootProps, RootRef } from './types'; const RadioGroupContext = React.createContext(null); const Root = React.forwardRef( ({ asChild, value, onValueChange, disabled = false, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( return null; } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); diff --git a/packages/radio-group/src/radio-group.web.tsx b/packages/radio-group/src/radio-group.web.tsx index 497ffb37..cc9a0404 100644 --- a/packages/radio-group/src/radio-group.web.tsx +++ b/packages/radio-group/src/radio-group.web.tsx @@ -1,5 +1,5 @@ import * as RadioGroup from '@radix-ui/react-radio-group'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { GestureResponderEvent, Pressable, View } from 'react-native'; import type { IndicatorProps, IndicatorRef, ItemProps, ItemRef, RootProps, RootRef } from './types'; @@ -8,7 +8,7 @@ const RadioGroupContext = React.createContext(null); const Root = React.forwardRef( ({ asChild, value, onValueChange, disabled = false, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onValueChange(value); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -59,7 +59,7 @@ Item.displayName = 'ItemRadioGroup'; const Indicator = React.forwardRef( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/select/src/select.tsx b/packages/select/src/select.tsx index d316a9b5..6147f7d1 100644 --- a/packages/select/src/select.tsx +++ b/packages/select/src/select.tsx @@ -5,7 +5,7 @@ import { type LayoutPosition, } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -86,7 +86,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( (({ asChild, placeholder, ...props }, ref) => { const { value } = useRootContext(); - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( {value?.label ?? placeholder} @@ -218,7 +218,7 @@ const Overlay = React.forwardRef( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -294,7 +294,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( (({ asChild, ...props }, ref) => { const { label } = useItemContext(); - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( {label} @@ -398,7 +398,7 @@ const ItemIndicator = React.forwardRef( return null; } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -406,14 +406,14 @@ const ItemIndicator = React.forwardRef( ItemIndicator.displayName = 'ItemIndicatorNativeSelect'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Group.displayName = 'GroupNativeSelect'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; }); @@ -421,7 +421,7 @@ Label.displayName = 'LabelNativeSelect'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); diff --git a/packages/select/src/select.web.tsx b/packages/select/src/select.web.tsx index 62d03fc1..43aa79bf 100644 --- a/packages/select/src/select.web.tsx +++ b/packages/select/src/select.web.tsx @@ -4,7 +4,7 @@ import { useControllableState, useIsomorphicLayoutEffect, } from '@rn-primitives/hooks'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, Text, View } from 'react-native'; import type { @@ -77,7 +77,7 @@ const Root = React.forwardRef( onValueChange({ value: val, label: val }); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } }, [open]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -148,9 +148,9 @@ Trigger.displayName = 'TriggerWebSelect'; const Value = React.forwardRef( ({ asChild, placeholder, children, ...props }, ref) => { return ( - + {children} - + ); } ); @@ -165,7 +165,7 @@ const Overlay = React.forwardRef( ({ asChild, forceMount, children, ...props }, ref) => { const { open } = useRootContext(); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( <> {open && } @@ -197,7 +197,7 @@ const Content = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( ({ asChild, closeOnPress = true, label, value, children, ...props }, ref) => { return ( - + <>{children as React.ReactNode} - + ); } @@ -251,7 +251,7 @@ const ItemText = React.forwardRef>( ({ asChild, ...props }, ref) => { const { label } = useItemContext(); - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( @@ -266,7 +266,7 @@ ItemText.displayName = 'ItemTextWebSelect'; const ItemIndicator = React.forwardRef( ({ asChild, forceMount: _forceMount, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -278,7 +278,7 @@ const ItemIndicator = React.forwardRef( ItemIndicator.displayName = 'ItemIndicatorWebSelect'; const Group = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -289,7 +289,7 @@ const Group = React.forwardRef(({ asChild, ...props }, ref Group.displayName = 'GroupWebSelect'; const Label = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ( @@ -301,7 +301,7 @@ Label.displayName = 'LabelWebSelect'; const Separator = React.forwardRef( ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/separator/src/separator.tsx b/packages/separator/src/separator.tsx index 735444f1..f744921f 100644 --- a/packages/separator/src/separator.tsx +++ b/packages/separator/src/separator.tsx @@ -1,11 +1,11 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { View } from 'react-native'; import type { RootProps, RootRef } from './types'; const Root = React.forwardRef( ({ asChild, decorative, orientation = 'horizontal', ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -52,7 +52,7 @@ function useSliderContext() { const Track = React.forwardRef(({ asChild, ...props }, ref) => { const { value, min, max, disabled } = useSliderContext(); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (({ asChild, ...props }, ref Track.displayName = 'TrackNativeSlider'; const Range = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Range.displayName = 'RangeNativeSlider'; const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); diff --git a/packages/slider/src/slider.web.tsx b/packages/slider/src/slider.web.tsx index 2c6522ac..6756f9ba 100644 --- a/packages/slider/src/slider.web.tsx +++ b/packages/slider/src/slider.web.tsx @@ -1,5 +1,5 @@ import * as Slider from '@radix-ui/react-slider'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { View } from 'react-native'; import type { @@ -18,7 +18,7 @@ const Root = React.forwardRef( { asChild, value, disabled, min, max, dir, inverted, step = 1, onValueChange, ...props }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( Root.displayName = 'RootWebSlider'; const Track = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -51,7 +51,7 @@ const Track = React.forwardRef(({ asChild, ...props }, ref Track.displayName = 'TrackWebSlider'; const Range = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -62,7 +62,7 @@ const Range = React.forwardRef(({ asChild, ...props }, ref Range.displayName = 'RangeWebSlider'; const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/slot/package.json b/packages/slot/package.json index 5cd49b3f..18c8e198 100644 --- a/packages/slot/package.json +++ b/packages/slot/package.json @@ -44,5 +44,8 @@ "react-native-web": { "optional": true } + }, + "dependencies": { + "@radix-ui/react-slot": "^1.1.0" } } diff --git a/packages/slot/src/slot.tsx b/packages/slot/src/slot.tsx index f4c73588..ace2aa31 100644 --- a/packages/slot/src/slot.tsx +++ b/packages/slot/src/slot.tsx @@ -39,12 +39,15 @@ function SlotImplementation( } as unknown as Partial>); } -export const Slot = React.forwardRef(SlotImplementation) as ( - props: React.ComponentPropsWithoutRef & { as?: T; ref?: React.Ref> } +const Slot = React.forwardRef(SlotImplementation) as ( + props: React.ComponentPropsWithoutRef & { ref?: React.Ref> } ) => React.ReactElement | null; (Slot as React.NamedExoticComponent).displayName = 'Slot'; +/** + * Deprecated: Use Slot instead + */ const Pressable = React.forwardRef, RNPressableProps>( (props, forwardedRef) => { const { children, ...pressableSlotProps } = props; @@ -66,6 +69,9 @@ const Pressable = React.forwardRef, RNPress Pressable.displayName = 'SlotPressable'; +/** + * Deprecated: Use Slot instead + */ const View = React.forwardRef, RNViewProps>( (props, forwardedRef) => { const { children, ...viewSlotProps } = props; @@ -87,6 +93,9 @@ const View = React.forwardRef, RNViewProps>( View.displayName = 'SlotView'; +/** + * Deprecated: Use Slot instead + */ const Text = React.forwardRef, RNTextProps>( (props, forwardedRef) => { const { children, ...textSlotProps } = props; @@ -112,6 +121,9 @@ type ImageSlotProps = RNImageProps & { children?: React.ReactNode; }; +/** + * Deprecated: Use Slot instead + */ const Image = React.forwardRef, ImageSlotProps>( (props, forwardedRef) => { const { children, ...imageSlotProps } = props; @@ -133,7 +145,7 @@ const Image = React.forwardRef, ImageSlotProps> Image.displayName = 'SlotImage'; -export { Image, Pressable, Text, View }; +export { Slot, Image, Pressable, Text, View }; // This project uses code from WorkOS/Radix Primitives. // The code is licensed under the MIT License. diff --git a/packages/slot/src/slot.web.ts b/packages/slot/src/slot.web.ts new file mode 100644 index 00000000..c8454dd0 --- /dev/null +++ b/packages/slot/src/slot.web.ts @@ -0,0 +1,7 @@ +import { Root } from '@radix-ui/react-slot'; + +const Slot = Root as ( + props: React.ComponentPropsWithoutRef & { ref?: React.Ref> } +) => React.ReactElement | null; + +export { Slot }; diff --git a/packages/slot/tsup.config.ts b/packages/slot/tsup.config.ts index 5a51f537..4172367e 100644 --- a/packages/slot/tsup.config.ts +++ b/packages/slot/tsup.config.ts @@ -1,15 +1,13 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: { - index: 'src/index.ts', - }, + entry: ['src/index.ts', 'src/slot.tsx', 'src/slot.web.ts'], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react'], + external: ['react', './slot'], dts: true, ...options, esbuildOptions(options) { diff --git a/packages/switch/src/switch.tsx b/packages/switch/src/switch.tsx index 689fa29c..a3520c62 100644 --- a/packages/switch/src/switch.tsx +++ b/packages/switch/src/switch.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; import type { RootProps, RootRef, ThumbProps, ThumbRef } from './types'; @@ -22,7 +22,7 @@ const Root = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( Root.displayName = 'RootNativeSwitch'; const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); diff --git a/packages/switch/src/switch.web.tsx b/packages/switch/src/switch.web.tsx index dbbec2ed..ec8b1bbf 100644 --- a/packages/switch/src/switch.web.tsx +++ b/packages/switch/src/switch.web.tsx @@ -1,5 +1,5 @@ import * as Switch from '@radix-ui/react-switch'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; import type { RootProps, RootRef, ThumbProps, ThumbRef } from './types'; @@ -29,14 +29,13 @@ const Root = React.forwardRef( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -48,7 +47,7 @@ const Root = React.forwardRef( Root.displayName = 'RootWebSwitch'; const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/table/src/table.tsx b/packages/table/src/table.tsx index b7e1cdcd..ae49afdf 100644 --- a/packages/table/src/table.tsx +++ b/packages/table/src/table.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import type { PressableRef, SlottablePressableProps, @@ -12,7 +12,7 @@ type RootProps = SlottableViewProps; type RootRef = ViewRef; const Root = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Root.displayName = 'RootTable'; @@ -21,7 +21,7 @@ type HeaderProps = SlottableViewProps; type HeaderRef = ViewRef; const Header = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Header.displayName = 'HeaderTable'; @@ -30,7 +30,7 @@ type RowProps = SlottablePressableProps; type RowRef = PressableRef; const Row = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); Row.displayName = 'RowTable'; @@ -39,7 +39,7 @@ type HeadProps = SlottableViewProps; type HeadRef = ViewRef; const Head = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Head.displayName = 'HeadTable'; @@ -48,7 +48,7 @@ type BodyProps = SlottableViewProps; type BodyRef = ViewRef; const Body = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Body.displayName = 'BodyTable'; @@ -57,7 +57,7 @@ type CellProps = SlottableViewProps; type CellRef = ViewRef; const Cell = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Cell.displayName = 'CellTable'; @@ -66,7 +66,7 @@ type FooterProps = SlottableViewProps; type FooterRef = ViewRef; const Footer = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Footer.displayName = 'FooterTable'; diff --git a/packages/tabs/src/tabs.tsx b/packages/tabs/src/tabs.tsx index 2fd08d5d..02619b8e 100644 --- a/packages/tabs/src/tabs.tsx +++ b/packages/tabs/src/tabs.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; import type { @@ -32,7 +32,7 @@ const Root = React.forwardRef( ref ) => { const nativeID = React.useId(); - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); @@ -76,7 +76,7 @@ const Trigger = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (null); const Root = React.forwardRef( ({ asChild, value, onValueChange, orientation, dir, activationMode, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( (({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -63,7 +63,7 @@ List.displayName = 'ListWebTabs'; const TriggerContext = React.createContext<{ value: string } | null>(null); const Trigger = React.forwardRef( ({ asChild, value: tabValue, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -88,7 +88,7 @@ function useTriggerContext() { const Content = React.forwardRef( ({ asChild, forceMount, value, tabIndex = -1, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( diff --git a/packages/toast/src/toast.tsx b/packages/toast/src/toast.tsx index 2f54ba0f..3babdf99 100644 --- a/packages/toast/src/toast.tsx +++ b/packages/toast/src/toast.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, Text, View, type GestureResponderEvent } from 'react-native'; import type { @@ -27,7 +27,7 @@ const Root = React.forwardRef( return null; } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( (({ asChild, ...props }, ref) => { const { nativeID } = useToastContext(); - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; }); @@ -123,7 +123,7 @@ const Description = React.forwardRef( ({ asChild, ...props }, ref) => { const { nativeID } = useToastContext(); - const Component = asChild ? Slot.Text : Text; + const Component = asChild ? Slot : Text; return ; } ); diff --git a/packages/toggle-group/src/toggle-group.tsx b/packages/toggle-group/src/toggle-group.tsx index 2d720f15..b12e4996 100644 --- a/packages/toggle-group/src/toggle-group.tsx +++ b/packages/toggle-group/src/toggle-group.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import { ToggleGroupUtils } from '@rn-primitives/utils'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; @@ -22,7 +22,7 @@ const Root = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( const isSelected = type === 'multiple' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( diff --git a/packages/toggle/src/toggle.tsx b/packages/toggle/src/toggle.tsx index 606cfad3..f4701545 100644 --- a/packages/toggle/src/toggle.tsx +++ b/packages/toggle/src/toggle.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, type GestureResponderEvent } from 'react-native'; import type { RootProps, RootRef } from './types'; @@ -12,7 +12,7 @@ const Root = React.forwardRef( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( onPressedChange(!pressed); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( diff --git a/packages/toolbar/src/toolbar.tsx b/packages/toolbar/src/toolbar.tsx index f572bcf5..d461842a 100644 --- a/packages/toolbar/src/toolbar.tsx +++ b/packages/toolbar/src/toolbar.tsx @@ -1,4 +1,4 @@ -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import { ToggleGroupUtils } from '@rn-primitives/utils'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; @@ -19,7 +19,7 @@ import type { const Root = React.forwardRef( ({ asChild, orientation: _orientation, dir: _dir, loop: _loop, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -30,7 +30,7 @@ const ToggleGroupContext = React.createContext(null); const ToggleGroup = React.forwardRef( ({ asChild, type, value, onValueChange, disabled = false, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( const isSelected = type === 'multiple' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ToggleItem.displayName = 'ToggleItemNativeToolbar'; const Separator = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; }); Separator.displayName = 'SeparatorNativeToolbar'; const Link = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); Link.displayName = 'LinkNativeToolbar'; const Button = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; }); diff --git a/packages/toolbar/src/toolbar.web.tsx b/packages/toolbar/src/toolbar.web.tsx index f7fa25dc..f46fda24 100644 --- a/packages/toolbar/src/toolbar.web.tsx +++ b/packages/toolbar/src/toolbar.web.tsx @@ -1,5 +1,5 @@ import * as Toolbar from '@radix-ui/react-toolbar'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import { ToggleGroupUtils } from '@rn-primitives/utils'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; @@ -20,7 +20,7 @@ import type { const Root = React.forwardRef( ({ asChild, orientation, dir, loop, style, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( @@ -35,7 +35,7 @@ const ToggleGroupContext = React.createContext(null); const ToggleGroup = React.forwardRef( ({ asChild, type, value, onValueChange, disabled = false, style, ...viewProps }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -111,7 +111,7 @@ ToggleItem.displayName = 'ToggleItemWebToolbar'; const Separator = React.forwardRef( ({ asChild, style, ...props }, ref) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ; } ); @@ -119,7 +119,7 @@ const Separator = React.forwardRef( Separator.displayName = 'SeparatorWebToolbar'; const Link = React.forwardRef(({ asChild, style, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( @@ -130,7 +130,7 @@ const Link = React.forwardRef(({ asChild, style, ...props }, Link.displayName = 'LinkWebToolbar'; const Button = React.forwardRef(({ asChild, style, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( diff --git a/packages/tooltip/src/tooltip.tsx b/packages/tooltip/src/tooltip.tsx index c285d400..44ffb689 100644 --- a/packages/tooltip/src/tooltip.tsx +++ b/packages/tooltip/src/tooltip.tsx @@ -1,6 +1,6 @@ import { useAugmentedRef, useRelativePosition, type LayoutPosition } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import * as Slot from '@rn-primitives/slot'; +import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, @@ -56,7 +56,7 @@ const Root = React.forwardRef( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onPressProp?.(ev); } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( } } - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -248,7 +248,7 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( onOpenChangeProp?.(value); } - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( ( } }, [open]); - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ( ( ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot.Pressable : Pressable; + const Component = asChild ? Slot : Pressable; return ; } ); @@ -152,7 +152,7 @@ const Content = React.forwardRef( }, ref ) => { - const Component = asChild ? Slot.View : View; + const Component = asChild ? Slot : View; return ( Date: Fri, 21 Feb 2025 16:56:10 -0500 Subject: [PATCH 029/106] add use-relative-position file for web to prevent importing react-native --- apps/nextjs-nativewind/package.json | 1 + packages/hooks/src/use-relative-position.tsx | 1 + .../hooks/src/use-relative-position.web.tsx | 43 +++++++++++++++++++ packages/hooks/tsup.config.ts | 13 ++++-- pnpm-lock.yaml | 3 ++ 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 packages/hooks/src/use-relative-position.web.tsx diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index f1ef6393..5cad2a6f 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -19,6 +19,7 @@ "@rn-primitives/context-menu": "workspace:*", "@rn-primitives/dialog": "workspace:*", "@rn-primitives/dropdown-menu": "workspace:*", + "@rn-primitives/hooks": "workspace:*", "@rn-primitives/hover-card": "workspace:*", "@rn-primitives/label": "workspace:*", "@rn-primitives/menubar": "workspace:*", diff --git a/packages/hooks/src/use-relative-position.tsx b/packages/hooks/src/use-relative-position.tsx index ba28165e..7ef76524 100644 --- a/packages/hooks/src/use-relative-position.tsx +++ b/packages/hooks/src/use-relative-position.tsx @@ -21,6 +21,7 @@ type UseRelativePositionArgs = Omit< disablePositioningStyle?: boolean; }; +// TODO(zach): Re-analyze this, especially with new arch but caution of https://github.com/software-mansion/react-native-screens/issues/2539 export function useRelativePosition({ align, avoidCollisions, diff --git a/packages/hooks/src/use-relative-position.web.tsx b/packages/hooks/src/use-relative-position.web.tsx new file mode 100644 index 00000000..39225938 --- /dev/null +++ b/packages/hooks/src/use-relative-position.web.tsx @@ -0,0 +1,43 @@ +import type { Insets } from '@rn-primitives/types'; +import type { LayoutRectangle, ScaledSize } from 'react-native'; + +type UseRelativePositionArgs = Omit< + GetContentStyleArgs, + 'triggerPosition' | 'contentLayout' | 'dimensions' +> & { + triggerPosition: LayoutPosition | null; + contentLayout: LayoutRectangle | null; + disablePositioningStyle?: boolean; +}; + +// TODO(zach): this prevents from importing react-native on web - should be dealt with after useRelativePosition's TODO is done +export function useRelativePosition(_args: UseRelativePositionArgs) { + return {}; +} + +interface LayoutPosition { + pageY: number; + pageX: number; + width: number; + height: number; +} + +interface GetPositionArgs { + dimensions: ScaledSize; + avoidCollisions: boolean; + triggerPosition: LayoutPosition; + contentLayout: LayoutRectangle; + insets?: Insets; +} + +interface GetSidePositionArgs extends GetPositionArgs { + side: 'top' | 'bottom'; + sideOffset: number; +} + +interface GetAlignPositionArgs extends GetPositionArgs { + align: 'start' | 'center' | 'end'; + alignOffset: number; +} + +type GetContentStyleArgs = GetPositionArgs & GetSidePositionArgs & GetAlignPositionArgs; diff --git a/packages/hooks/tsup.config.ts b/packages/hooks/tsup.config.ts index 5a51f537..9b664ca9 100644 --- a/packages/hooks/tsup.config.ts +++ b/packages/hooks/tsup.config.ts @@ -1,15 +1,20 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: { - index: 'src/index.ts', - }, + entry: [ + 'src/index.ts', + 'src/use-augmented-ref.tsx', + 'src/use-controllable-state.tsx', + 'src/use-isomorphic-layout-effect.tsx', + 'src/use-relative-position.tsx', + 'src/use-relative-position.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react'], + external: ['react', './use-relative-position'], dts: true, ...options, esbuildOptions(options) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4eb12fcc..40a3fe65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -561,6 +561,9 @@ importers: '@rn-primitives/dropdown-menu': specifier: workspace:* version: link:../../packages/dropdown-menu + '@rn-primitives/hooks': + specifier: workspace:* + version: link:../../packages/hooks '@rn-primitives/hover-card': specifier: workspace:* version: link:../../packages/hover-card From f27b252009817f1815349645bafe1229559cdbbe Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 21 Feb 2025 17:03:29 -0500 Subject: [PATCH 030/106] add use-isomorphic-layout-effect file for web to prevent importing react-native --- .../hooks/src/use-isomorphic-layout-effect.tsx | 7 +------ .../hooks/src/use-isomorphic-layout-effect.web.tsx | 14 ++++++++++++++ packages/hooks/tsup.config.ts | 3 ++- 3 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 packages/hooks/src/use-isomorphic-layout-effect.web.tsx diff --git a/packages/hooks/src/use-isomorphic-layout-effect.tsx b/packages/hooks/src/use-isomorphic-layout-effect.tsx index a6cbc3f6..c5783533 100644 --- a/packages/hooks/src/use-isomorphic-layout-effect.tsx +++ b/packages/hooks/src/use-isomorphic-layout-effect.tsx @@ -1,15 +1,10 @@ import * as React from 'react'; -import { Platform } from 'react-native'; function useIsomorphicLayoutEffect( effect: React.EffectCallback, dependencies?: React.DependencyList ) { - if (Platform.OS === 'web' && typeof window === 'undefined') { - React.useEffect(effect, dependencies); - } else { - React.useLayoutEffect(effect, dependencies); - } + React.useLayoutEffect(effect, dependencies); } export { useIsomorphicLayoutEffect }; diff --git a/packages/hooks/src/use-isomorphic-layout-effect.web.tsx b/packages/hooks/src/use-isomorphic-layout-effect.web.tsx new file mode 100644 index 00000000..f97cdda8 --- /dev/null +++ b/packages/hooks/src/use-isomorphic-layout-effect.web.tsx @@ -0,0 +1,14 @@ +import * as React from 'react'; + +function useIsomorphicLayoutEffect( + effect: React.EffectCallback, + dependencies?: React.DependencyList +) { + if (typeof window === 'undefined') { + React.useEffect(effect, dependencies); + } else { + React.useLayoutEffect(effect, dependencies); + } +} + +export { useIsomorphicLayoutEffect }; diff --git a/packages/hooks/tsup.config.ts b/packages/hooks/tsup.config.ts index 9b664ca9..ac63f75c 100644 --- a/packages/hooks/tsup.config.ts +++ b/packages/hooks/tsup.config.ts @@ -6,6 +6,7 @@ export default defineConfig((options: Options) => ({ 'src/use-augmented-ref.tsx', 'src/use-controllable-state.tsx', 'src/use-isomorphic-layout-effect.tsx', + 'src/use-isomorphic-layout-effect.web.tsx', 'src/use-relative-position.tsx', 'src/use-relative-position.web.tsx', ], @@ -14,7 +15,7 @@ export default defineConfig((options: Options) => ({ }, clean: true, format: ['cjs', 'esm'], - external: ['react', './use-relative-position'], + external: ['react', './use-relative-position', './use-isomorphic-layout-effect'], dts: true, ...options, esbuildOptions(options) { From d8c0444963dea8efe68eab2bfd8ddce4845f42d4 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 23 Feb 2025 16:28:33 -0500 Subject: [PATCH 031/106] fix: rename web to web-light + start pressable + use aria-labelledby instaed --- .../app/(components)/checkbox.tsx | 2 +- .../app/(components)/popover.tsx | 2 +- .../app/(components)/radio-group.tsx | 2 +- .../app/(components)/table.tsx | 2 +- .../expo-nativewind/app/(components)/tabs.tsx | 6 +- .../src/components/RadioGroupExample.tsx | 2 +- .../src/components/TabsExample.tsx | 6 +- packages/alert-dialog/src/alert-dialog.tsx | 2 +- packages/collapsible/src/collapsible.tsx | 2 +- packages/context-menu/src/context-menu.tsx | 2 +- packages/dialog/src/dialog.tsx | 2 +- packages/dropdown-menu/src/dropdown-menu.tsx | 2 +- packages/label/src/types.ts | 2 +- packages/menubar/src/menubar.tsx | 2 +- packages/radio-group/src/types.ts | 2 +- packages/tabs/src/tabs.tsx | 2 +- packages/{web => web-light}/package.json | 13 +- packages/{web => web-light}/src/index.ts | 2 +- .../web-light/src/pressable/pressable.tsx | 3 + .../web-light/src/pressable/pressable.web.tsx | 166 ++++++++++++++++++ .../pressable}/use-web-pressable-props.tsx | 2 +- .../src/style/flatten-style.ts | 0 .../src/style/rn-style-to-web-style.ts | 0 packages/{web => web-light}/src/style/type.ts | 0 packages/{web => web-light}/tsconfig.json | 0 packages/{web => web-light}/tsup.config.ts | 0 26 files changed, 201 insertions(+), 25 deletions(-) rename packages/{web => web-light}/package.json (78%) rename packages/{web => web-light}/src/index.ts (61%) create mode 100644 packages/web-light/src/pressable/pressable.tsx create mode 100644 packages/web-light/src/pressable/pressable.web.tsx rename packages/{web/src => web-light/src/pressable}/use-web-pressable-props.tsx (97%) rename packages/{web => web-light}/src/style/flatten-style.ts (100%) rename packages/{web => web-light}/src/style/rn-style-to-web-style.ts (100%) rename packages/{web => web-light}/src/style/type.ts (100%) rename packages/{web => web-light}/tsconfig.json (100%) rename packages/{web => web-light}/tsup.config.ts (100%) diff --git a/apps/expo-nativewind/app/(components)/checkbox.tsx b/apps/expo-nativewind/app/(components)/checkbox.tsx index 6dde8a94..09287fbf 100644 --- a/apps/expo-nativewind/app/(components)/checkbox.tsx +++ b/apps/expo-nativewind/app/(components)/checkbox.tsx @@ -10,7 +10,7 @@ export default function CheckboxScreen() { diff --git a/apps/expo-nativewind/app/(components)/popover.tsx b/apps/expo-nativewind/app/(components)/popover.tsx index 76195912..28003cec 100644 --- a/apps/expo-nativewind/app/(components)/popover.tsx +++ b/apps/expo-nativewind/app/(components)/popover.tsx @@ -80,7 +80,7 @@ function LabelledInput({ diff --git a/apps/expo-nativewind/app/(components)/radio-group.tsx b/apps/expo-nativewind/app/(components)/radio-group.tsx index 94a09f34..cb42f989 100644 --- a/apps/expo-nativewind/app/(components)/radio-group.tsx +++ b/apps/expo-nativewind/app/(components)/radio-group.tsx @@ -31,7 +31,7 @@ function RadioGroupItemWithLabel({ }) { return ( - + diff --git a/apps/expo-nativewind/app/(components)/table.tsx b/apps/expo-nativewind/app/(components)/table.tsx index 924ab31c..24e59dfe 100644 --- a/apps/expo-nativewind/app/(components)/table.tsx +++ b/apps/expo-nativewind/app/(components)/table.tsx @@ -35,7 +35,7 @@ export default function TableScreen() { <> -
+
diff --git a/apps/expo-nativewind/app/(components)/tabs.tsx b/apps/expo-nativewind/app/(components)/tabs.tsx index a5b21811..8dca2e02 100644 --- a/apps/expo-nativewind/app/(components)/tabs.tsx +++ b/apps/expo-nativewind/app/(components)/tabs.tsx @@ -42,7 +42,7 @@ export default function TabsScreen() { - + @@ -67,11 +67,11 @@ export default function TabsScreen() { - + - + diff --git a/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx b/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx index 6a51dc0c..04974551 100644 --- a/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx +++ b/apps/nextjs-nativewind/src/components/RadioGroupExample.tsx @@ -31,7 +31,7 @@ function RadioGroupItemWithLabel({ }) { return ( - + diff --git a/apps/nextjs-nativewind/src/components/TabsExample.tsx b/apps/nextjs-nativewind/src/components/TabsExample.tsx index 4051bc2f..446ee8e1 100644 --- a/apps/nextjs-nativewind/src/components/TabsExample.tsx +++ b/apps/nextjs-nativewind/src/components/TabsExample.tsx @@ -37,7 +37,7 @@ export function TabsExample() { - + @@ -62,11 +62,11 @@ export function TabsExample() { - + - + diff --git a/packages/alert-dialog/src/alert-dialog.tsx b/packages/alert-dialog/src/alert-dialog.tsx index d115c090..fcaa291c 100644 --- a/packages/alert-dialog/src/alert-dialog.tsx +++ b/packages/alert-dialog/src/alert-dialog.tsx @@ -149,7 +149,7 @@ const Content = React.forwardRef( ref={ref} role='alertdialog' nativeID={nativeID} - accessibilityLabelledBy={`${nativeID}_label`} + aria-labelledby={`${nativeID}_label`} aria-describedby={`${nativeID}_desc`} aria-modal={true} {...props} diff --git a/packages/collapsible/src/collapsible.tsx b/packages/collapsible/src/collapsible.tsx index b60ba5a2..db1ff5b2 100644 --- a/packages/collapsible/src/collapsible.tsx +++ b/packages/collapsible/src/collapsible.tsx @@ -107,7 +107,7 @@ const Content = React.forwardRef( diff --git a/packages/context-menu/src/context-menu.tsx b/packages/context-menu/src/context-menu.tsx index 2ae065db..d2ad8b34 100644 --- a/packages/context-menu/src/context-menu.tsx +++ b/packages/context-menu/src/context-menu.tsx @@ -617,7 +617,7 @@ const SubContent = React.forwardRef( } const Component = asChild ? Slot : Pressable; - return ; + return ; } ); diff --git a/packages/dialog/src/dialog.tsx b/packages/dialog/src/dialog.tsx index 45361be1..77712a1b 100644 --- a/packages/dialog/src/dialog.tsx +++ b/packages/dialog/src/dialog.tsx @@ -155,7 +155,7 @@ const Content = React.forwardRef( ref={ref} role='dialog' nativeID={nativeID} - accessibilityLabelledBy={`${nativeID}_label`} + aria-labelledby={`${nativeID}_label`} aria-describedby={`${nativeID}_desc`} aria-modal={true} onStartShouldSetResponder={onStartShouldSetResponder} diff --git a/packages/dropdown-menu/src/dropdown-menu.tsx b/packages/dropdown-menu/src/dropdown-menu.tsx index 2070af68..b6477840 100644 --- a/packages/dropdown-menu/src/dropdown-menu.tsx +++ b/packages/dropdown-menu/src/dropdown-menu.tsx @@ -581,7 +581,7 @@ const SubContent = React.forwardRef( } const Component = asChild ? Slot : Pressable; - return ; + return ; } ); diff --git a/packages/label/src/types.ts b/packages/label/src/types.ts index ca547d22..a6997c50 100644 --- a/packages/label/src/types.ts +++ b/packages/label/src/types.ts @@ -13,7 +13,7 @@ type RootProps = Omit type TextProps = SlottableTextProps & { /** - * Equivalent to `id` so that the same value can be passed as `accessibilityLabelledBy` to the input element. + * Equivalent to `id` so that the same value can be passed as `aria-labelledby` to the input element. */ nativeID?: string; /** diff --git a/packages/menubar/src/menubar.tsx b/packages/menubar/src/menubar.tsx index 02b20278..8637e996 100644 --- a/packages/menubar/src/menubar.tsx +++ b/packages/menubar/src/menubar.tsx @@ -595,7 +595,7 @@ const SubContent = React.forwardRef( } const Component = asChild ? Slot : View; - return ; + return ; } ); diff --git a/packages/radio-group/src/types.ts b/packages/radio-group/src/types.ts index 49bc7e46..071e9f83 100644 --- a/packages/radio-group/src/types.ts +++ b/packages/radio-group/src/types.ts @@ -17,7 +17,7 @@ type ItemProps = SlottablePressableProps & { /** * nativeID of the label element that describes this radio group item */ - accessibilityLabelledBy?: string; + 'aria-labelledby'?: string; }; type IndicatorProps = SlottableViewProps & ForceMountable; diff --git a/packages/tabs/src/tabs.tsx b/packages/tabs/src/tabs.tsx index 02619b8e..83ab5e69 100644 --- a/packages/tabs/src/tabs.tsx +++ b/packages/tabs/src/tabs.tsx @@ -125,7 +125,7 @@ const Content = React.forwardRef( diff --git a/packages/web/package.json b/packages/web-light/package.json similarity index 78% rename from packages/web/package.json rename to packages/web-light/package.json index 07f63780..98d57e2e 100644 --- a/packages/web/package.json +++ b/packages/web-light/package.json @@ -1,5 +1,5 @@ { - "name": "@rn-primitives/web", + "name": "@rn-primitives/web-light", "version": "2.0.0-alpha.1", "description": "Styling utilities for React Native and Web", "license": "MIT", @@ -26,7 +26,8 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@react-native/normalize-colors": "^0.77.1" + "@react-native/normalize-colors": "^0.77.1", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", @@ -36,6 +37,12 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*" + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + } } } diff --git a/packages/web/src/index.ts b/packages/web-light/src/index.ts similarity index 61% rename from packages/web/src/index.ts rename to packages/web-light/src/index.ts index 5fc55f02..0039e672 100644 --- a/packages/web/src/index.ts +++ b/packages/web-light/src/index.ts @@ -1,3 +1,3 @@ export { flattenStyle } from './style/flatten-style'; export { rnStyleToWebStyle } from './style/rn-style-to-web-style'; -export { useWebPressableProps } from './use-web-pressable-props'; +export { useWebPressableProps } from './pressable/use-web-pressable-props'; diff --git a/packages/web-light/src/pressable/pressable.tsx b/packages/web-light/src/pressable/pressable.tsx new file mode 100644 index 00000000..2d333676 --- /dev/null +++ b/packages/web-light/src/pressable/pressable.tsx @@ -0,0 +1,3 @@ +// TODO: use universal props + +export { Pressable } from 'react-native'; diff --git a/packages/web-light/src/pressable/pressable.web.tsx b/packages/web-light/src/pressable/pressable.web.tsx new file mode 100644 index 00000000..d502e0b2 --- /dev/null +++ b/packages/web-light/src/pressable/pressable.web.tsx @@ -0,0 +1,166 @@ +import type { PressableProps as RNPressableProps, Role } from 'react-native'; +import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; +import * as React from 'react'; +import { useWebPressableProps } from './use-web-pressable-props'; + +// TODO: type props an share with native universal + use native and web props +const Pressable = React.memo(({ native: _native, web, role = 'button', ...props }: any) => { + const { children, events, style } = useWebPressableProps({ + styleProp: props.style, + childrenProp: props.children, + webProps: props.web, + onPressInProp: props.onPressIn, + onPressOutProp: props.onPressOut, + }); + + const mappedProps = mapPressableToButtonProps({ ...props }); + const Component = getComponent(role); + + return ; +}); + +export { Pressable }; + +type PressableProps = Pick< + RNPressableProps, + | 'onPress' + | 'onPressIn' + | 'onPressOut' + | 'disabled' + | 'role' + | 'aria-busy' + | 'aria-checked' + | 'aria-expanded' + | 'aria-hidden' + | 'aria-label' + | 'aria-selected' + | 'aria-labelledby' + | 'aria-live' + | 'aria-modal' +>; + +function mapPressableToButtonProps( + pressableProps: PressableProps +): React.ButtonHTMLAttributes { + const { + onPress, + onPressIn, + onPressOut, + disabled, + role, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-expanded': ariaExpanded, + 'aria-hidden': ariaHidden, + 'aria-label': ariaLabel, + 'aria-selected': ariaSelected, + 'aria-labelledby': ariaLabelledby, + 'aria-live': ariaLive, + 'aria-modal': ariaModal, + } = pressableProps; + + const handlePress = () => { + if (disabled || !onPress) return; + onPress(EmptyGestureResponderEvent); + }; + + const handlePressIn = () => { + if (disabled) return; + onPressIn?.(EmptyGestureResponderEvent); + }; + + const handlePressOut = () => { + if (disabled) return; + onPressOut?.(EmptyGestureResponderEvent); + }; + + const buttonProps: React.ButtonHTMLAttributes = { + type: 'button', + }; + + if (disabled) { + buttonProps.disabled = true; + } + + if (onPress) { + buttonProps.onClick = handlePress; + } + + if (onPressIn) { + buttonProps.onMouseDown = handlePressIn; + buttonProps.onTouchStart = handlePressIn; + } + + if (onPressOut) { + buttonProps.onMouseUp = handlePressOut; + buttonProps.onTouchEnd = handlePressOut; + } + + if (ariaLabel) { + buttonProps['aria-label'] = ariaLabel; + } + + if (ariaBusy) { + buttonProps['aria-busy'] = ariaBusy; + } + + if (ariaChecked) { + buttonProps['aria-checked'] = ariaChecked; + } + + if (ariaExpanded) { + buttonProps['aria-expanded'] = ariaExpanded; + } + + if (ariaHidden) { + buttonProps['aria-hidden'] = ariaHidden; + } + + if (ariaSelected) { + buttonProps['aria-selected'] = ariaSelected; + } + + if (ariaLabelledby) { + buttonProps['aria-labelledby'] = ariaLabelledby; + } + + if (ariaLive) { + buttonProps['aria-live'] = ariaLive; + } + + if (ariaModal) { + buttonProps['aria-modal'] = ariaModal; + } + + const accessibilityRole = role ?? 'button'; + + // Only set role if it's not the default 'button' + if (role && role !== 'button') { + buttonProps.role = accessibilityRole; + } + + return buttonProps; +} + +const roleComponents: Partial> = { + article: 'article', + banner: 'header', + button: 'button', + complementary: 'aside', + contentinfo: 'footer', + figure: 'figure', + form: 'form', + list: 'ul', + listitem: 'li', + main: 'main', + navigation: 'nav', + region: 'section', +}; + +function getComponent(role: string) { + if (role === 'button') { + return 'button'; + } + + return roleComponents[role as Role] ?? 'div'; +} diff --git a/packages/web/src/use-web-pressable-props.tsx b/packages/web-light/src/pressable/use-web-pressable-props.tsx similarity index 97% rename from packages/web/src/use-web-pressable-props.tsx rename to packages/web-light/src/pressable/use-web-pressable-props.tsx index fc98d218..4ea43a89 100644 --- a/packages/web/src/use-web-pressable-props.tsx +++ b/packages/web-light/src/pressable/use-web-pressable-props.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import type { PressableProps, PressableStateCallbackType } from 'react-native'; -import { rnStyleToWebStyle } from './style/rn-style-to-web-style'; +import { rnStyleToWebStyle } from '../style/rn-style-to-web-style'; type WebPressableProps = Pick< React.ComponentPropsWithoutRef<'button'>, diff --git a/packages/web/src/style/flatten-style.ts b/packages/web-light/src/style/flatten-style.ts similarity index 100% rename from packages/web/src/style/flatten-style.ts rename to packages/web-light/src/style/flatten-style.ts diff --git a/packages/web/src/style/rn-style-to-web-style.ts b/packages/web-light/src/style/rn-style-to-web-style.ts similarity index 100% rename from packages/web/src/style/rn-style-to-web-style.ts rename to packages/web-light/src/style/rn-style-to-web-style.ts diff --git a/packages/web/src/style/type.ts b/packages/web-light/src/style/type.ts similarity index 100% rename from packages/web/src/style/type.ts rename to packages/web-light/src/style/type.ts diff --git a/packages/web/tsconfig.json b/packages/web-light/tsconfig.json similarity index 100% rename from packages/web/tsconfig.json rename to packages/web-light/tsconfig.json diff --git a/packages/web/tsup.config.ts b/packages/web-light/tsup.config.ts similarity index 100% rename from packages/web/tsup.config.ts rename to packages/web-light/tsup.config.ts From 7afef9f34929348b643cabfb9fd747587f5a115b Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 23 Feb 2025 16:29:05 -0500 Subject: [PATCH 032/106] feat(accordion-new): start accordion v2 --- apps/nextjs-nativewind/package.json | 1 + apps/nextjs-nativewind/src/app/page.tsx | 12 +- .../src/components/ui/accordion.tsx | 37 +-- .../src/components/ui/alert-dialog.tsx | 69 ++--- packages/accordion/package.json | 2 +- packages/accordion/src/base-types.ts | 2 + .../src/native/accordion-native.native.tsx | 4 +- packages/accordion/src/native/index.ts | 1 + .../accordion/src/universal/accordion.web.tsx | 2 +- .../accordion/src/web/accordion-web.web.tsx | 2 +- packages/accordion/src/web/index.ts | 1 + packages/alert-dialog-new/package.json | 69 +++++ packages/alert-dialog-new/src/base-types.ts | 53 ++++ packages/alert-dialog-new/src/index.ts | 26 ++ .../src/native/alert-dialog-native.native.tsx | 285 ++++++++++++++++++ .../src/native/alert-dialog-native.tsx | 92 ++++++ packages/alert-dialog-new/src/native/index.ts | 31 ++ packages/alert-dialog-new/src/native/types.ts | 86 ++++++ .../src/universal/alert-dialog.tsx | 85 ++++++ .../src/universal/alert-dialog.web.tsx | 172 +++++++++++ .../alert-dialog-new/src/universal/index.ts | 26 ++ .../alert-dialog-new/src/universal/types.ts | 125 ++++++++ .../alert-dialog-new/src/utils/contexts.ts | 19 ++ .../src/web/alert-dialog-web.tsx | 90 ++++++ .../src/web/alert-dialog-web.web.tsx | 146 +++++++++ packages/alert-dialog-new/src/web/index.ts | 31 ++ packages/alert-dialog-new/src/web/types.ts | 132 ++++++++ packages/alert-dialog-new/tsconfig.json | 29 ++ packages/alert-dialog-new/tsup.config.ts | 35 +++ packages/animatable/index.ts | 28 +- packages/animatable/package.json | 3 + packages/animatable/src/animatable-image.tsx | 2 + .../animatable/src/animatable-pressable.tsx | 2 + packages/animatable/src/animatable-text.tsx | 1 + packages/animatable/src/animatable-view.tsx | 2 + pnpm-lock.yaml | 282 ++++++++++++++++- 36 files changed, 1906 insertions(+), 79 deletions(-) create mode 100644 packages/alert-dialog-new/package.json create mode 100644 packages/alert-dialog-new/src/base-types.ts create mode 100644 packages/alert-dialog-new/src/index.ts create mode 100644 packages/alert-dialog-new/src/native/alert-dialog-native.native.tsx create mode 100644 packages/alert-dialog-new/src/native/alert-dialog-native.tsx create mode 100644 packages/alert-dialog-new/src/native/index.ts create mode 100644 packages/alert-dialog-new/src/native/types.ts create mode 100644 packages/alert-dialog-new/src/universal/alert-dialog.tsx create mode 100644 packages/alert-dialog-new/src/universal/alert-dialog.web.tsx create mode 100644 packages/alert-dialog-new/src/universal/index.ts create mode 100644 packages/alert-dialog-new/src/universal/types.ts create mode 100644 packages/alert-dialog-new/src/utils/contexts.ts create mode 100644 packages/alert-dialog-new/src/web/alert-dialog-web.tsx create mode 100644 packages/alert-dialog-new/src/web/alert-dialog-web.web.tsx create mode 100644 packages/alert-dialog-new/src/web/index.ts create mode 100644 packages/alert-dialog-new/src/web/types.ts create mode 100644 packages/alert-dialog-new/tsconfig.json create mode 100644 packages/alert-dialog-new/tsup.config.ts diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index 5cad2a6f..6f6bb302 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -12,6 +12,7 @@ "dependencies": { "@rn-primitives/accordion": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", + "@rn-primitives/alert-dialog-new": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", "@rn-primitives/checkbox": "workspace:*", diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index c1e4e5c0..dcea9a90 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -1,3 +1,4 @@ +import { Pressable } from 'react-native'; import { CheckboxExample } from '~/components/CheckboxExample'; import { CollapsibleExample } from '~/components/CollapsibleExample'; import { ContextMenuExample } from '~/components/ContextMenuExample'; @@ -169,9 +170,16 @@ function AlertDialogExample() { return ( - + + {/* */} + + + diff --git a/apps/nextjs-nativewind/src/components/ui/accordion.tsx b/apps/nextjs-nativewind/src/components/ui/accordion.tsx index 2ef00f2d..d1a1e5b7 100644 --- a/apps/nextjs-nativewind/src/components/ui/accordion.tsx +++ b/apps/nextjs-nativewind/src/components/ui/accordion.tsx @@ -4,7 +4,7 @@ import * as AccordionPrimitive from '@rn-primitives/accordion'; import { Slot } from '@rn-primitives/slot'; import { renderPressableChildren } from '@rn-primitives/utils'; import * as React from 'react'; -import { Platform, View } from 'react-native'; +import { Platform, Pressable, View } from 'react-native'; import Animated, { Extrapolation, FadeIn, @@ -75,6 +75,7 @@ const AccordionTrigger = React.forwardRef< - {renderPressableChildren(children, (children) => { - return ( - <> - {children} - - - - - ); - })} + + {renderPressableChildren(children, (children) => { + return ( + <> + {children} + + + + + ); + })} + diff --git a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx index 0bff8c25..fe83b89d 100644 --- a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx +++ b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx @@ -4,20 +4,19 @@ import * as React from 'react'; import { Platform, StyleSheet, View } from 'react-native'; import Animated, { FadeIn, FadeOut } from 'react-native-reanimated'; import { buttonTextVariants, buttonVariants } from '~/components/ui/button'; -import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog'; +import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog-new'; import { cn } from '~/lib/utils'; import { TextClassContext } from '~/components/ui/text'; +// ! TODO: AS CHILD NOT WORKING FROM WEB TO REACT_NATIVE PRESSABLE + const AlertDialog = AlertDialogPrimitive.Root; const AlertDialogTrigger = AlertDialogPrimitive.Trigger; const AlertDialogPortal = AlertDialogPrimitive.Portal; -const AlertDialogOverlayWeb = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const AlertDialogOverlayWeb = ({ className, ...props }: AlertDialogPrimitive.OverlayProps) => { const { open } = AlertDialogPrimitive.useRootContext(); return ( ); -}); - -AlertDialogOverlayWeb.displayName = 'AlertDialogOverlayWeb'; +}; -const AlertDialogOverlayNative = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { +const AlertDialogOverlayNative = ({ + className, + children, + ...props +}: AlertDialogPrimitive.OverlayProps) => { return ( @@ -51,26 +47,20 @@ const AlertDialogOverlayNative = React.forwardRef< ); -}); - -AlertDialogOverlayNative.displayName = 'AlertDialogOverlayNative'; +}; const AlertDialogOverlay = Platform.select({ web: AlertDialogOverlayWeb, default: AlertDialogOverlayNative, }); -const AlertDialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, portalHost, ...props }, ref) => { +const AlertDialogContent = ({ className, native, ...props }: AlertDialogPrimitive.ContentProps) => { const { open } = AlertDialogPrimitive.useRootContext(); return ( - + ); -}); -AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; +}; const AlertDialogHeader = ({ className, @@ -92,7 +81,6 @@ const AlertDialogHeader = ({ }: React.ComponentPropsWithoutRef) => ( ); -AlertDialogHeader.displayName = 'AlertDialogHeader'; const AlertDialogFooter = ({ className, @@ -103,41 +91,26 @@ const AlertDialogFooter = ({ {...props} /> ); -AlertDialogFooter.displayName = 'AlertDialogFooter'; -const AlertDialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const AlertDialogTitle = ({ className, ...props }: AlertDialogPrimitive.TitleProps) => ( -)); -AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; +); -const AlertDialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const AlertDialogDescription = ({ className, ...props }: AlertDialogPrimitive.DescriptionProps) => ( -)); -AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName; +); -const AlertDialogAction = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const AlertDialogAction = ({ className, ...props }: AlertDialogPrimitive.ActionProps) => ( - + -)); -AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; +); const AlertDialogCancel = React.forwardRef< React.ElementRef, diff --git a/packages/accordion/package.json b/packages/accordion/package.json index aa1472f4..7cda5b99 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -43,7 +43,7 @@ "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*", - "@rn-primitives/web": "workspace:*" + "@rn-primitives/web-light": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/accordion/src/base-types.ts b/packages/accordion/src/base-types.ts index d2702ba0..1010e274 100644 --- a/packages/accordion/src/base-types.ts +++ b/packages/accordion/src/base-types.ts @@ -8,6 +8,8 @@ import type { } from '@radix-ui/react-accordion'; import type { Prettify, PropsWithoutHTML } from '@rn-primitives/types'; +// TODO: consider using Pick method instead of PropsWithoutHTML + type AccordionRootProps = BaseAccordionMultipleProps | BaseAccordionSingleProps; type BaseAccordionRootProps = Prettify< diff --git a/packages/accordion/src/native/accordion-native.native.tsx b/packages/accordion/src/native/accordion-native.native.tsx index 00349a84..83823e51 100644 --- a/packages/accordion/src/native/accordion-native.native.tsx +++ b/packages/accordion/src/native/accordion-native.native.tsx @@ -155,8 +155,6 @@ const Trigger = React.forwardRef( const triggerRef = useAugmentedRef({ ref, methods }); - const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); - const onPress = React.useCallback( (ev: GestureResponderEvent) => { methods.trigger(); @@ -167,6 +165,8 @@ const Trigger = React.forwardRef( [onPressProp, methods] ); + const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); + const Component = asChild ? Slot : AnimatablePressable; return ( ((props, ref) => { return ; }); -Trigger.displayName = 'Trigger'; +Trigger.displayName = 'AccordionTriggerWeb'; export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion/src/web/index.ts b/packages/accordion/src/web/index.ts index f18e75f3..6cd2a9bf 100644 --- a/packages/accordion/src/web/index.ts +++ b/packages/accordion/src/web/index.ts @@ -8,6 +8,7 @@ export { useRootContext, } from './accordion-web'; +// TODO: export ref types export type { ContentProps, HeaderProps, diff --git a/packages/alert-dialog-new/package.json b/packages/alert-dialog-new/package.json new file mode 100644 index 00000000..319cf6f0 --- /dev/null +++ b/packages/alert-dialog-new/package.json @@ -0,0 +1,69 @@ +{ + "name": "@rn-primitives/alert-dialog-new", + "version": "2.0.0-alpha.1", + "description": "Primitive alert-dialog-new", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.js", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "clean": "rm -rf dist .turbo node_modules", + "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", + "pub:next": "pnpm publish --no-git-checks --access public --tag next", + "pub:release": "pnpm publish --access public" + }, + "dependencies": { + "@radix-ui/react-alert-dialog": "^1.1.6", + "@rn-primitives/animatable": "workspace:*", + "@rn-primitives/hooks": "workspace:*", + "@rn-primitives/portal": "workspace:*", + "@rn-primitives/slot": "workspace:*", + "@rn-primitives/types": "workspace:*", + "@rn-primitives/web-light": "workspace:*" + }, + "devDependencies": { + "@tsconfig/react-native": "^1.0.1", + "@types/react": "~18.3.12", + "react": "18.3.1", + "react-native": "0.76.3", + "tsup": "^8.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-web": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-web": { + "optional": true + } + } +} diff --git a/packages/alert-dialog-new/src/base-types.ts b/packages/alert-dialog-new/src/base-types.ts new file mode 100644 index 00000000..834d2f53 --- /dev/null +++ b/packages/alert-dialog-new/src/base-types.ts @@ -0,0 +1,53 @@ +import type { + AlertDialogActionProps, + AlertDialogCancelProps, + AlertDialogContentProps, + AlertDialogDescriptionProps, + AlertDialogOverlayProps, + AlertDialogPortalProps, + AlertDialogProps, + AlertDialogTitleProps, + AlertDialogTriggerProps, +} from '@radix-ui/react-alert-dialog'; +import type { Prettify } from '@rn-primitives/types'; + +type BaseAlertDialogRootProps = Omit, 'children'>; + +type BaseAlertDialogTriggerProps = Pick; + +type BaseAlertDialogPortalProps = Pick; + +type BaseAlertDialogOverlayProps = Pick; + +type BaseAlertDialogActionProps = Pick; + +type BaseAlertDialogCancelProps = Pick; + +type BaseAlertDialogTitleProps = Pick; + +type BaseAlertDialogDescriptionProps = Pick; + +type BaseAlertDialogContentProps = Pick; + +type BaseAlertDialogTriggerRef = { trigger: () => void }; + +type BaseAlertDialogCancelRef = { cancel: () => void }; + +type BaseAlertDialogRootContext = Required< + Pick +> | null; + +export type { + BaseAlertDialogActionProps, + BaseAlertDialogCancelProps, + BaseAlertDialogContentProps, + BaseAlertDialogDescriptionProps, + BaseAlertDialogOverlayProps, + BaseAlertDialogPortalProps, + BaseAlertDialogRootProps, + BaseAlertDialogTitleProps, + BaseAlertDialogTriggerProps, + BaseAlertDialogTriggerRef, + BaseAlertDialogRootContext, + BaseAlertDialogCancelRef, +}; diff --git a/packages/alert-dialog-new/src/index.ts b/packages/alert-dialog-new/src/index.ts new file mode 100644 index 00000000..e9ee3ebe --- /dev/null +++ b/packages/alert-dialog-new/src/index.ts @@ -0,0 +1,26 @@ +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +} from './universal'; + +export type { + ActionProps, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +} from './universal'; diff --git a/packages/alert-dialog-new/src/native/alert-dialog-native.native.tsx b/packages/alert-dialog-new/src/native/alert-dialog-native.native.tsx new file mode 100644 index 00000000..2aa4593b --- /dev/null +++ b/packages/alert-dialog-new/src/native/alert-dialog-native.native.tsx @@ -0,0 +1,285 @@ +import { AnimatablePressable, AnimatableText, AnimatableView } from '@rn-primitives/animatable'; +import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; +import { Portal as RNPPortal } from '@rn-primitives/portal'; +import { Slot } from '@rn-primitives/slot'; +import * as React from 'react'; +import { BackHandler, type GestureResponderEvent } from 'react-native'; +import { RootContext, useRootContext } from '../utils/contexts'; +import type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +} from './types'; + +const RootInternalContext = React.createContext<{ nativeID: string } | null>(null); + +function Root({ + open: openProp, + defaultOpen, + onOpenChange: onOpenChangeProp, + children, +}: RootProps) { + const nativeID = React.useId(); + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + return ( + + + <>{children} + + + ); +} + +function useRootInternalContext() { + const context = React.useContext(RootInternalContext); + if (!context) { + throw new Error( + 'Alert Dialog Internal compound components cannot be rendered outside the AlertDialog component' + ); + } + return context; +} + +const Trigger = React.forwardRef( + ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { + const { open: value, onOpenChange } = useRootContext(); + const methods = React.useMemo(() => { + return { + trigger: () => { + onOpenChange(!value); + }, + }; + }, [onOpenChange, value]); + + const triggerRef = useAugmentedRef({ ref, methods }); + + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + onOpenChange(!value); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onOpenChange, onPressProp, value] + ); + + const Component = asChild ? Slot : AnimatablePressable; + return ( + + ); + } +); + +Trigger.displayName = 'AlertDialogTriggerNative'; + +function Portal({ forceMount, hostName, children }: PortalProps) { + const internalValue = useRootInternalContext(); + const value = useRootContext(); + + if (!forceMount) { + if (!value.open) { + return null; + } + } + + return ( + + + {children} + + + ); +} + +const Overlay = React.forwardRef( + ({ asChild, forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { + const { open: value, onOpenChange } = useRootContext(); + + const onAccessibilityEscape = React.useCallback(() => { + if (typeof onAccessibilityEscape === 'function') { + onAccessibilityEscape(); + } + onOpenChange(false); + }, [onAccessibilityEscapeProp, onOpenChange]); + + if (!forceMount) { + if (!value) { + return null; + } + } + + const Component = asChild ? Slot : AnimatableView; + return ( + + ); + } +); + +Overlay.displayName = 'AlertDialogOverlayNative'; + +const Content = React.forwardRef( + ({ asChild, forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { + const { open: value, onOpenChange } = useRootContext(); + const { nativeID } = useRootInternalContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + onOpenChange(false); + return true; + }); + + return () => { + backHandler.remove(); + }; + }, []); + + const onAccessibilityEscape = React.useCallback(() => { + if (typeof onAccessibilityEscapeProp === 'function') { + onAccessibilityEscapeProp(); + } + onOpenChange(false); + }, [onAccessibilityEscapeProp, onOpenChange]); + + if (!forceMount) { + if (!value) { + return null; + } + } + + const Component = asChild ? Slot : AnimatableView; + return ( + + ); + } +); + +Content.displayName = 'AlertDialogContentNative'; + +const Cancel = React.forwardRef( + ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { + const { onOpenChange } = useRootContext(); + + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + onOpenChange(false); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onOpenChange, onPressProp] + ); + + const Component = asChild ? Slot : AnimatablePressable; + return ( + + ); + } +); + +Cancel.displayName = 'AlertDialogCloseNative'; + +const Action = React.forwardRef( + ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { + const { onOpenChange } = useRootContext(); + + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + onOpenChange(false); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onOpenChange, onPressProp] + ); + + const Component = asChild ? Slot : AnimatablePressable; + return ( + + ); + } +); + +Action.displayName = 'AlertDialogActionNative'; + +const Title = React.forwardRef(({ asChild, ...props }, ref) => { + const { nativeID } = useRootInternalContext(); + const Component = asChild ? Slot : AnimatableText; + return ; +}); + +Title.displayName = 'AlertDialogTitleNative'; + +const Description = React.forwardRef( + ({ asChild, ...props }, ref) => { + const { nativeID } = useRootInternalContext(); + const Component = asChild ? Slot : AnimatableText; + return ; + } +); + +Description.displayName = 'AlertDialogDescriptionNative'; + +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +}; diff --git a/packages/alert-dialog-new/src/native/alert-dialog-native.tsx b/packages/alert-dialog-new/src/native/alert-dialog-native.tsx new file mode 100644 index 00000000..dc422b02 --- /dev/null +++ b/packages/alert-dialog-new/src/native/alert-dialog-native.tsx @@ -0,0 +1,92 @@ +import * as React from 'react'; +import { RootContextReturnType } from '../utils/contexts'; +import type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +} from './types'; + +function Root(_props: RootProps) { + return null; +} + +Root.displayName = 'AlertDialogRootNative'; + +const Trigger = React.forwardRef(() => { + return null; +}); + +Trigger.displayName = 'AlertDialogTriggerNative'; + +function Portal(_props: PortalProps) { + return null; +} + +const Overlay = React.forwardRef(() => { + return null; +}); + +Overlay.displayName = 'AlertDialogOverlayNative'; + +const Content = React.forwardRef(() => { + return null; +}); + +Content.displayName = 'AlertDialogContentNative'; + +const Cancel = React.forwardRef(() => { + return null; +}); + +Cancel.displayName = 'AlertDialogCloseNative'; + +const Action = React.forwardRef(() => { + return null; +}); + +Action.displayName = 'AlertDialogActionNative'; + +const Title = React.forwardRef(() => { + return null; +}); + +Title.displayName = 'AlertDialogTitleNative'; + +const Description = React.forwardRef(() => { + return null; +}); + +Description.displayName = 'AlertDialogDescriptionNative'; + +const useRootContext = () => { + throw new Error( + 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/alert-dialog` or `@rn-primitives/alert-dialog/web`' + ); + return {} as RootContextReturnType; +}; + +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +}; diff --git a/packages/alert-dialog-new/src/native/index.ts b/packages/alert-dialog-new/src/native/index.ts new file mode 100644 index 00000000..1551e37d --- /dev/null +++ b/packages/alert-dialog-new/src/native/index.ts @@ -0,0 +1,31 @@ +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +} from './alert-dialog-native'; + +export type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +} from './types'; diff --git a/packages/alert-dialog-new/src/native/types.ts b/packages/alert-dialog-new/src/native/types.ts new file mode 100644 index 00000000..9bd996f2 --- /dev/null +++ b/packages/alert-dialog-new/src/native/types.ts @@ -0,0 +1,86 @@ +import type { + AnimatablePressableProps, + AnimatableTextProps, + AnimatableViewProps, +} from '@rn-primitives/animatable'; +import type { PressableRef, TextRef, ViewRef } from '@rn-primitives/types'; +import type { + BaseAlertDialogActionProps, + BaseAlertDialogCancelProps, + BaseAlertDialogContentProps, + BaseAlertDialogDescriptionProps, + BaseAlertDialogOverlayProps, + BaseAlertDialogPortalProps, + BaseAlertDialogRootProps, + BaseAlertDialogTitleProps, + BaseAlertDialogTriggerProps, + BaseAlertDialogTriggerRef, +} from '../base-types'; + +type AlertDialogActionNativeOnlyProps = AnimatablePressableProps; +type AlertDialogActionNativeOnlyRef = PressableRef; +type AlertDialogCancelNativeOnlyProps = AnimatablePressableProps; +type AlertDialogCancelNativeOnlyRef = PressableRef; +type AlertDialogContentNativeOnlyProps = AnimatableViewProps; +type AlertDialogContentNativeOnlyRef = ViewRef; +type AlertDialogDescriptionNativeOnlyProps = AnimatableTextProps; +type AlertDialogDescriptionNativeOnlyRef = TextRef; +type AlertDialogOverlayNativeOnlyProps = AnimatableViewProps; +type AlertDialogOverlayNativeOnlyRef = ViewRef; +type AlertDialogPortalNativeOnlyProps = { + hostName?: string; + children?: React.ReactNode; +}; +type AlertDialogTitleNativeOnlyProps = AnimatableTextProps; +type AlertDialogTitleNativeOnlyRef = TextRef; +type AlertDialogTriggerNativeOnlyProps = AnimatablePressableProps; +type AlertDialogTriggerNativeOnlyRef = PressableRef; + +type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; +type ActionProps = AlertDialogActionNativeOnlyProps & BaseAlertDialogActionProps; +type ActionRef = AlertDialogActionNativeOnlyRef; +type CancelProps = AlertDialogCancelNativeOnlyProps & BaseAlertDialogCancelProps; +type CancelRef = AlertDialogCancelNativeOnlyRef; +type ContentProps = AlertDialogContentNativeOnlyProps & BaseAlertDialogContentProps; +type ContentRef = AlertDialogContentNativeOnlyRef; +type DescriptionProps = AlertDialogDescriptionNativeOnlyProps & BaseAlertDialogDescriptionProps; +type DescriptionRef = AlertDialogDescriptionNativeOnlyRef; +type OverlayProps = AlertDialogOverlayNativeOnlyProps & BaseAlertDialogOverlayProps; +type OverlayRef = AlertDialogOverlayNativeOnlyRef; +type PortalProps = AlertDialogPortalNativeOnlyProps & BaseAlertDialogPortalProps; +type TitleProps = AlertDialogTitleNativeOnlyProps & BaseAlertDialogTitleProps; +type TitleRef = AlertDialogTitleNativeOnlyRef; +type TriggerProps = AlertDialogTriggerNativeOnlyProps & BaseAlertDialogTriggerProps; +type TriggerRef = AlertDialogTriggerNativeOnlyRef & BaseAlertDialogTriggerRef; + +export type { + ActionProps, + ActionRef, + AlertDialogActionNativeOnlyProps, + AlertDialogCancelNativeOnlyProps, + AlertDialogContentNativeOnlyProps, + AlertDialogContentNativeOnlyRef, + AlertDialogDescriptionNativeOnlyProps, + AlertDialogDescriptionNativeOnlyRef, + AlertDialogOverlayNativeOnlyProps, + AlertDialogOverlayNativeOnlyRef, + AlertDialogPortalNativeOnlyProps, + AlertDialogTitleNativeOnlyProps, + AlertDialogTitleNativeOnlyRef, + AlertDialogTriggerNativeOnlyProps, + AlertDialogTriggerNativeOnlyRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +}; diff --git a/packages/alert-dialog-new/src/universal/alert-dialog.tsx b/packages/alert-dialog-new/src/universal/alert-dialog.tsx new file mode 100644 index 00000000..74ef3e7d --- /dev/null +++ b/packages/alert-dialog-new/src/universal/alert-dialog.tsx @@ -0,0 +1,85 @@ +import * as React from 'react'; +import { + Action as ActionNative, + Cancel as CancelNative, + type CancelRef as CancelNativeRef, + Content as ContentNative, + Description as DescriptionNative, + Overlay as OverlayNative, + Portal as PortalNative, + Root as RootNative, + Title as TitleNative, + Trigger as TriggerNative, + type TriggerRef as TriggerNativeRef, + useRootContext, +} from '../native'; +import type { + ActionProps, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +} from './types'; + +function Root(props: RootProps) { + return ; +} + +function Content({ web: _web, native, ...props }: ContentProps) { + return ; +} + +function Description({ web: _web, native, ...props }: DescriptionProps) { + return ; +} + +function Overlay({ web: _web, native, ...props }: OverlayProps) { + return ; +} + +function Portal({ web: _web, native, ...props }: PortalProps) { + return ; +} + +function Title({ web: _web, native, ...props }: TitleProps) { + return ; +} + +const Trigger = React.forwardRef( + ({ web: _web, native, ...props }, ref) => { + return ( + } {...props} {...native} /> + ); + } +); + +Trigger.displayName = 'AlertDialogTriggerUniversal'; + +function Action({ web: _web, native, ...props }: ActionProps) { + return ; +} + +const Cancel = React.forwardRef(({ web: _web, native, ...props }, ref) => { + return } {...props} {...native} />; +}); + +Cancel.displayName = 'AlertDialogCancelUniversal'; + +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +}; diff --git a/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx b/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx new file mode 100644 index 00000000..a094ea6a --- /dev/null +++ b/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx @@ -0,0 +1,172 @@ +import { rnStyleToWebStyle, useWebPressableProps } from '../../../web-light/dist'; +import * as React from 'react'; +import { + Action as ActionWeb, + Cancel as CancelWeb, + type CancelRef as CancelWebRef, + Content as ContentWeb, + Description as DescriptionWeb, + Overlay as OverlayWeb, + Portal as PortalWeb, + Root as RootWeb, + Title as TitleWeb, + Trigger as TriggerWeb, + type TriggerRef as TriggerWebRef, + useRootContext, +} from '../web'; +import type { + ActionProps, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +} from './types'; + +function Root(props: RootProps) { + return ; +} + +function Content({ web, native: _native, style, ...props }: ContentProps) { + return ; +} + +function Description({ web, native: _native, style, ...props }: DescriptionProps) { + return ; +} + +function Overlay({ web, native: _native, style, ...props }: OverlayProps) { + return ; +} + +function Portal({ web, native: _native, ...props }: PortalProps) { + return ; +} + +function Title({ web, native: _native, style, ...props }: TitleProps) { + return ; +} + +const Trigger = React.forwardRef( + ( + { + native: _native, + style: styleProp, + children: childrenProp, + onPress: onPressProp, + onPressIn: onPressInProp, + onPressOut: onPressOutProp, + web: webProps, + ...props + }, + ref + ) => { + const { children, events, style } = useWebPressableProps({ + styleProp, + childrenProp, + webProps, + onPressInProp, + onPressOutProp, + }); + + return ( + } + children={children} + style={style} + onClick={onPressProp} + {...props} + {...webProps} + {...events} + /> + ); + } +); + +Trigger.displayName = 'AlertDialogTriggerUniversal'; + +function Action({ + web: webProps, + native: _native, + style: styleProp, + children: childrenProp, + onPress: onPressProp, + onPressIn: onPressInProp, + onPressOut: onPressOutProp, + ...props +}: ActionProps) { + const { children, events, style } = useWebPressableProps({ + styleProp, + childrenProp, + webProps, + onPressInProp, + onPressOutProp, + }); + + return ( + + ); +} + +const Cancel = React.forwardRef( + ( + { + native: _native, + style: styleProp, + children: childrenProp, + onPress: onPressProp, + onPressIn: onPressInProp, + onPressOut: onPressOutProp, + web: webProps, + ...props + }, + ref + ) => { + const { children, events, style } = useWebPressableProps({ + styleProp, + childrenProp, + webProps, + onPressInProp, + onPressOutProp, + }); + + return ( + } + children={children} + style={style} + onClick={onPressProp} + {...props} + {...webProps} + {...events} + /> + ); + } +); + +Cancel.displayName = 'AlertDialogCancelUniversal'; + +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +}; diff --git a/packages/alert-dialog-new/src/universal/index.ts b/packages/alert-dialog-new/src/universal/index.ts new file mode 100644 index 00000000..7be1e4fc --- /dev/null +++ b/packages/alert-dialog-new/src/universal/index.ts @@ -0,0 +1,26 @@ +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +} from './alert-dialog'; + +export type { + ActionProps, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +} from './types'; diff --git a/packages/alert-dialog-new/src/universal/types.ts b/packages/alert-dialog-new/src/universal/types.ts new file mode 100644 index 00000000..b4b0e8cf --- /dev/null +++ b/packages/alert-dialog-new/src/universal/types.ts @@ -0,0 +1,125 @@ +import type { + BaseSlottablePressableProps, + BaseSlottableTextProps, + BaseSlottableViewProps, + BasicPressEvents, + Prettify, +} from '@rn-primitives/types'; +import type { + BaseAlertDialogActionProps, + BaseAlertDialogCancelProps, + BaseAlertDialogCancelRef, + BaseAlertDialogContentProps, + BaseAlertDialogDescriptionProps, + BaseAlertDialogOverlayProps, + BaseAlertDialogPortalProps, + BaseAlertDialogRootProps, + BaseAlertDialogTitleProps, + BaseAlertDialogTriggerProps, + BaseAlertDialogTriggerRef, +} from '../base-types'; +import type { + AlertDialogActionNativeOnlyProps, + AlertDialogCancelNativeOnlyProps, + AlertDialogContentNativeOnlyProps, + AlertDialogDescriptionNativeOnlyProps, + AlertDialogOverlayNativeOnlyProps, + AlertDialogPortalNativeOnlyProps, + AlertDialogTitleNativeOnlyProps, + AlertDialogTriggerNativeOnlyProps, +} from '../native/types'; +import type { + AlertDialogActionWebOnlyProps, + AlertDialogCancelWebOnlyProps, + AlertDialogContentWebOnlyProps, + AlertDialogDescriptionWebOnlyProps, + AlertDialogOverlayWebOnlyProps, + AlertDialogPortalWebOnlyProps, + AlertDialogTitleWebOnlyProps, + AlertDialogTriggerWebOnlyProps, +} from '../web/types'; + +type ContentProps = Prettify< + BaseAlertDialogContentProps & + BaseSlottableViewProps & { + native?: AlertDialogContentNativeOnlyProps; + web?: AlertDialogContentWebOnlyProps; + } +>; + +type RootProps = Prettify< + BaseAlertDialogRootProps & { + children?: React.ReactNode; + } +>; + +type TriggerProps = Prettify< + BaseAlertDialogTriggerProps & + BaseSlottablePressableProps & { + native?: AlertDialogTriggerNativeOnlyProps; + web?: AlertDialogTriggerWebOnlyProps; + } & BasicPressEvents +>; +type TriggerRef = BaseAlertDialogTriggerRef; + +type ActionProps = Prettify< + BaseAlertDialogActionProps & + BaseSlottablePressableProps & { + native?: AlertDialogActionNativeOnlyProps; + web?: AlertDialogActionWebOnlyProps; + } & BasicPressEvents +>; + +type CancelProps = Prettify< + BaseAlertDialogCancelProps & + BaseSlottablePressableProps & { + native?: AlertDialogCancelNativeOnlyProps; + web?: AlertDialogCancelWebOnlyProps; + } & BasicPressEvents +>; +type CancelRef = BaseAlertDialogCancelRef; + +type DescriptionProps = Prettify< + BaseAlertDialogDescriptionProps & + BaseSlottableTextProps & { + native?: AlertDialogDescriptionNativeOnlyProps; + web?: AlertDialogDescriptionWebOnlyProps; + } +>; + +type OverlayProps = Prettify< + BaseAlertDialogOverlayProps & + BaseSlottableViewProps & { + native?: AlertDialogOverlayNativeOnlyProps; + web?: AlertDialogOverlayWebOnlyProps; + } +>; + +type PortalProps = Prettify< + BaseAlertDialogPortalProps & { + native?: AlertDialogPortalNativeOnlyProps; + web?: AlertDialogPortalWebOnlyProps; + } +>; + +type TitleProps = Prettify< + BaseAlertDialogTitleProps & + BaseSlottableTextProps & { + native?: AlertDialogTitleNativeOnlyProps; + web?: AlertDialogTitleWebOnlyProps; + } +>; + +export type { + ActionProps, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +}; diff --git a/packages/alert-dialog-new/src/utils/contexts.ts b/packages/alert-dialog-new/src/utils/contexts.ts new file mode 100644 index 00000000..a7196660 --- /dev/null +++ b/packages/alert-dialog-new/src/utils/contexts.ts @@ -0,0 +1,19 @@ +import * as React from 'react'; +import type { BaseAlertDialogRootContext } from '../base-types'; + +const RootContext = React.createContext(null); +function useRootContext() { + const context = React.useContext(RootContext); + if (!context) { + throw new Error( + 'Alert Dialog compound components cannot be rendered outside the Alert Dialog component' + ); + } + return context; +} + +type RootContextReturnType = ReturnType; + +export { RootContext, useRootContext }; + +export type { RootContextReturnType }; diff --git a/packages/alert-dialog-new/src/web/alert-dialog-web.tsx b/packages/alert-dialog-new/src/web/alert-dialog-web.tsx new file mode 100644 index 00000000..730d0b34 --- /dev/null +++ b/packages/alert-dialog-new/src/web/alert-dialog-web.tsx @@ -0,0 +1,90 @@ +import * as React from 'react'; +import type { RootContextReturnType } from '../utils/contexts'; +import type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +} from './types'; + +function Root(_props: RootProps) { + return null; +} + +const Trigger = React.forwardRef(() => { + return null; +}); + +Trigger.displayName = 'AlertDialogTriggerWeb'; + +const Content = React.forwardRef(() => { + return null; +}); + +Content.displayName = 'AlertDialogContentWeb'; + +const Action = React.forwardRef(() => { + return null; +}); + +Action.displayName = 'AlertDialogActionWeb'; + +const Cancel = React.forwardRef(() => { + return null; +}); + +Cancel.displayName = 'AlertDialogCancelWeb'; + +const Description = React.forwardRef(() => { + return null; +}); + +Description.displayName = 'AlertDialogDescriptionWeb'; + +const Overlay = React.forwardRef(() => { + return null; +}); + +Overlay.displayName = 'AlertDialogOverlayWeb'; + +function Portal(_props: PortalProps) { + return null; +} + +const Title = React.forwardRef(() => { + return null; +}); + +Title.displayName = 'AlertDialogTitleWeb'; + +const useRootContext = () => { + throw new Error( + 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/alert-dialog` or `@rn-primitives/alert-dialog/native`' + ); + return {} as RootContextReturnType; +}; + +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +}; diff --git a/packages/alert-dialog-new/src/web/alert-dialog-web.web.tsx b/packages/alert-dialog-new/src/web/alert-dialog-web.web.tsx new file mode 100644 index 00000000..9f6180fb --- /dev/null +++ b/packages/alert-dialog-new/src/web/alert-dialog-web.web.tsx @@ -0,0 +1,146 @@ +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogOverlay, + AlertDialogPortal, + AlertDialogTitle, + AlertDialogTrigger, +} from '@radix-ui/react-alert-dialog'; +import { useControllableState } from '@rn-primitives/hooks'; +import * as React from 'react'; +import { RootContext, useRootContext } from '../utils/contexts'; +import type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +} from './types'; + +function Root({ + children, + defaultOpen, + onOpenChange: onOpenChangeProp, + open: openProp, +}: RootProps) { + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + + return ( + + + + ); +} + +const Trigger = React.forwardRef((props, ref) => { + const triggerRef = React.useRef(null); + + React.useImperativeHandle( + ref, + () => + triggerRef.current + ? { + ...triggerRef.current, + trigger: () => { + triggerRef.current?.click(); + }, + } + : ({} as TriggerRef), + [triggerRef.current] + ); + + return ; +}); + +Trigger.displayName = 'AlertDialogTriggerWeb'; + +const Content = React.forwardRef((props, ref) => { + return ; +}); + +Content.displayName = 'AlertDialogContentWeb'; + +const Action = React.forwardRef((props, ref) => { + return ; +}); + +Action.displayName = 'AlertDialogActionWeb'; + +const Cancel = React.forwardRef((props, ref) => { + const triggerRef = React.useRef(null); + React.useImperativeHandle( + ref, + () => + triggerRef.current + ? { + ...triggerRef.current, + cancel: () => { + triggerRef.current?.click(); + }, + } + : ({} as CancelRef), + [] + ); + + return ; +}); + +Cancel.displayName = 'AlertDialogCancelWeb'; + +const Description = React.forwardRef((props, ref) => { + return ; +}); + +Description.displayName = 'AlertDialogDescriptionWeb'; + +const Overlay = React.forwardRef((props, ref) => { + return ; +}); + +Overlay.displayName = 'AlertDialogOverlayWeb'; + +function Portal(props: PortalProps) { + return ; +} + +const Title = React.forwardRef((props, ref) => { + return ; +}); + +Title.displayName = 'AlertDialogTitleWeb'; + +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +}; diff --git a/packages/alert-dialog-new/src/web/index.ts b/packages/alert-dialog-new/src/web/index.ts new file mode 100644 index 00000000..62e1642a --- /dev/null +++ b/packages/alert-dialog-new/src/web/index.ts @@ -0,0 +1,31 @@ +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +} from './alert-dialog-web'; + +export type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +} from './types'; diff --git a/packages/alert-dialog-new/src/web/types.ts b/packages/alert-dialog-new/src/web/types.ts new file mode 100644 index 00000000..a17c7b72 --- /dev/null +++ b/packages/alert-dialog-new/src/web/types.ts @@ -0,0 +1,132 @@ +import type { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Title, + Trigger, +} from '@radix-ui/react-alert-dialog'; +import type { PropsWithout } from '@rn-primitives/types'; +import type { + BaseAlertDialogActionProps, + BaseAlertDialogCancelProps, + BaseAlertDialogCancelRef, + BaseAlertDialogContentProps, + BaseAlertDialogDescriptionProps, + BaseAlertDialogOverlayProps, + BaseAlertDialogPortalProps, + BaseAlertDialogRootProps, + BaseAlertDialogTitleProps, + BaseAlertDialogTriggerProps, + BaseAlertDialogTriggerRef, +} from '../base-types'; + +type AlertDialogContentWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogContentProps +>; +type AlertDialogContentWebOnlyRef = React.ElementRef; + +type AlertDialogTriggerWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogTriggerProps +>; +type AlertDialogTriggerWebOnlyRef = React.ElementRef; + +type AlertDialogActionWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogActionProps +>; +type AlertDialogActionWebOnlyRef = React.ElementRef; + +type AlertDialogCancelWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogCancelProps +>; +type AlertDialogCancelWebOnlyRef = React.ElementRef; + +type AlertDialogDescriptionWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogDescriptionProps +>; +type AlertDialogDescriptionWebOnlyRef = React.ElementRef; + +type AlertDialogOverlayWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogOverlayProps +>; +type AlertDialogOverlayWebOnlyRef = React.ElementRef; + +type AlertDialogPortalWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogPortalProps +>; +type AlertDialogPortalWebOnlyRef = React.ElementRef; + +type AlertDialogTitleWebOnlyProps = PropsWithout< + React.ComponentPropsWithoutRef, + BaseAlertDialogTitleProps +>; +type AlertDialogTitleWebOnlyRef = React.ElementRef; + +type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; + +type ActionProps = BaseAlertDialogActionProps & AlertDialogActionWebOnlyProps; +type ActionRef = AlertDialogActionWebOnlyRef; + +type CancelProps = BaseAlertDialogCancelProps & AlertDialogCancelWebOnlyProps; +type CancelRef = AlertDialogCancelWebOnlyRef & BaseAlertDialogCancelRef; + +type DescriptionProps = BaseAlertDialogDescriptionProps & AlertDialogDescriptionWebOnlyProps; +type DescriptionRef = AlertDialogDescriptionWebOnlyRef; + +type OverlayProps = BaseAlertDialogOverlayProps & AlertDialogOverlayWebOnlyProps; +type OverlayRef = AlertDialogOverlayWebOnlyRef; + +type PortalProps = BaseAlertDialogPortalProps & AlertDialogPortalWebOnlyProps; + +type TitleProps = BaseAlertDialogTitleProps & AlertDialogTitleWebOnlyProps; +type TitleRef = AlertDialogTitleWebOnlyRef; + +type TriggerProps = BaseAlertDialogTriggerProps & AlertDialogTriggerWebOnlyProps; +type TriggerRef = AlertDialogTriggerWebOnlyRef & BaseAlertDialogTriggerRef; + +type ContentProps = BaseAlertDialogContentProps & AlertDialogContentWebOnlyProps; +type ContentRef = AlertDialogContentWebOnlyRef; + +export type { + ActionProps, + ActionRef, + AlertDialogActionWebOnlyProps, + AlertDialogActionWebOnlyRef, + AlertDialogCancelWebOnlyProps, + AlertDialogCancelWebOnlyRef, + AlertDialogContentWebOnlyProps, + AlertDialogContentWebOnlyRef, + AlertDialogDescriptionWebOnlyProps, + AlertDialogDescriptionWebOnlyRef, + AlertDialogOverlayWebOnlyProps, + AlertDialogOverlayWebOnlyRef, + AlertDialogPortalWebOnlyProps, + AlertDialogPortalWebOnlyRef, + AlertDialogTitleWebOnlyProps, + AlertDialogTitleWebOnlyRef, + AlertDialogTriggerWebOnlyProps, + AlertDialogTriggerWebOnlyRef, + CancelProps, + CancelRef, + ContentProps, + ContentRef, + DescriptionProps, + DescriptionRef, + OverlayProps, + OverlayRef, + PortalProps, + RootProps, + TitleProps, + TitleRef, + TriggerProps, + TriggerRef, +}; diff --git a/packages/alert-dialog-new/tsconfig.json b/packages/alert-dialog-new/tsconfig.json new file mode 100644 index 00000000..60ce1f95 --- /dev/null +++ b/packages/alert-dialog-new/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "@tsconfig/react-native/tsconfig.json", + "include": [ + "./src/**/*" + ], + "compilerOptions": { + "lib": [ + "dom", + "es2019", + "es2020.bigint", + "es2020.date", + "es2020.number", + "es2020.promise", + "es2020.string", + "es2020.symbol.wellknown", + "es2021.promise", + "es2021.string", + "es2021.weakref", + "es2022.array", + "es2022.object", + "es2022.string" + ], + }, + "exclude": [ + "dist", + "build", + "node_modules" + ], +} \ No newline at end of file diff --git a/packages/alert-dialog-new/tsup.config.ts b/packages/alert-dialog-new/tsup.config.ts new file mode 100644 index 00000000..b1de639c --- /dev/null +++ b/packages/alert-dialog-new/tsup.config.ts @@ -0,0 +1,35 @@ +import { defineConfig, Options } from 'tsup'; + +export default defineConfig((options: Options) => ({ + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/alert-dialog.tsx', + 'src/universal/alert-dialog.web.tsx', + 'src/native/index.ts', + 'src/native/alert-dialog-native.tsx', + 'src/native/alert-dialog-native.native.tsx', + 'src/web/index.ts', + 'src/web/alert-dialog-web.tsx', + 'src/web/alert-dialog-web.web.tsx', + ], + banner: { + js: "'use client'", + }, + clean: true, + format: ['cjs', 'esm'], + external: [ + 'react', + './universal', + './alert-dialog', + '../native', + './alert-dialog-native', + '../web', + './alert-dialog-web', + ], + dts: true, + ...options, + esbuildOptions(options) { + options.jsx = 'preserve'; + }, +})); diff --git a/packages/animatable/index.ts b/packages/animatable/index.ts index e91bbb92..775ff043 100644 --- a/packages/animatable/index.ts +++ b/packages/animatable/index.ts @@ -1,4 +1,24 @@ -export { AnimatableImage, type AnimatableImageProps } from './src/animatable-image'; -export { AnimatablePressable, type AnimatablePressableProps } from './src/animatable-pressable'; -export { AnimatableText, type AnimatableTextProps } from './src/animatable-text'; -export { AnimatableView, type AnimatableViewProps } from './src/animatable-view'; +export { + AnimatableImage, + type AnimatableImageAndroidProps, + type AnimatableImageIosProps, + type AnimatableImageProps, +} from './src/animatable-image'; +export { + AnimatablePressable, + type AnimatablePressableAndroidProps, + type AnimatablePressableIosProps, + type AnimatablePressableProps, +} from './src/animatable-pressable'; +export { + AnimatableText, + type AnimatableTextAndroidProps, + type AnimatableTextIosProps, + type AnimatableTextProps, +} from './src/animatable-text'; +export { + AnimatableView, + type AnimatableViewAndroidProps, + type AnimatableViewIosProps, + type AnimatableViewProps, +} from './src/animatable-view'; diff --git a/packages/animatable/package.json b/packages/animatable/package.json index 9a3605e1..05efc0d3 100644 --- a/packages/animatable/package.json +++ b/packages/animatable/package.json @@ -48,6 +48,9 @@ }, "react-native-web": { "optional": true + }, + "react-native-reanimated": { + "optional": true } } } diff --git a/packages/animatable/src/animatable-image.tsx b/packages/animatable/src/animatable-image.tsx index 966adec9..33b79b52 100644 --- a/packages/animatable/src/animatable-image.tsx +++ b/packages/animatable/src/animatable-image.tsx @@ -9,6 +9,8 @@ import * as React from 'react'; import { Image, type ImageProps } from 'react-native'; import Animated from 'react-native-reanimated'; +// TODO: handle web + type AnimatedImageProps = Slottable>; type RNImageProps = Slottable; diff --git a/packages/animatable/src/animatable-pressable.tsx b/packages/animatable/src/animatable-pressable.tsx index 11b1f023..af49e9bd 100644 --- a/packages/animatable/src/animatable-pressable.tsx +++ b/packages/animatable/src/animatable-pressable.tsx @@ -17,6 +17,8 @@ import { } from 'react-native'; import Animated from 'react-native-reanimated'; +// TODO: handle web + type AnimatedPressableProps = Slottable< React.ComponentPropsWithoutRef & { key?: React.Key | null | undefined; diff --git a/packages/animatable/src/animatable-text.tsx b/packages/animatable/src/animatable-text.tsx index 5d2ea10e..1bb868a7 100644 --- a/packages/animatable/src/animatable-text.tsx +++ b/packages/animatable/src/animatable-text.tsx @@ -10,6 +10,7 @@ import { Text, type TextProps } from 'react-native'; import type { SharedValue } from 'react-native-reanimated'; import Animated from 'react-native-reanimated'; +// TODO: handle web type AnimatedTextProps = Slottable< Omit, 'children'> & { children?: React.ReactNode | SharedValue; diff --git a/packages/animatable/src/animatable-view.tsx b/packages/animatable/src/animatable-view.tsx index 343a2cae..7032e164 100644 --- a/packages/animatable/src/animatable-view.tsx +++ b/packages/animatable/src/animatable-view.tsx @@ -9,6 +9,8 @@ import * as React from 'react'; import { View, type ViewProps } from 'react-native'; import Animated from 'react-native-reanimated'; +// TODO: handle web + type AnimatedViewProps = Slottable>; type RNViewProps = Slottable; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40a3fe65..5e4f0279 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -540,6 +540,9 @@ importers: '@rn-primitives/alert-dialog': specifier: workspace:* version: link:../../packages/alert-dialog + '@rn-primitives/alert-dialog-new': + specifier: workspace:* + version: link:../../packages/alert-dialog-new '@rn-primitives/aspect-ratio': specifier: workspace:* version: link:../../packages/aspect-ratio @@ -703,9 +706,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../types - '@rn-primitives/web': + '@rn-primitives/web-light': specifier: workspace:* - version: link:../web + version: link:../web-light react-native-reanimated: specifier: '*' version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) @@ -766,6 +769,49 @@ importers: specifier: ^8.1.0 version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/alert-dialog-new: + dependencies: + '@radix-ui/react-alert-dialog': + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rn-primitives/animatable': + specifier: workspace:* + version: link:../animatable + '@rn-primitives/hooks': + specifier: workspace:* + version: link:../hooks + '@rn-primitives/portal': + specifier: workspace:* + version: link:../portal + '@rn-primitives/slot': + specifier: workspace:* + version: link:../slot + '@rn-primitives/types': + specifier: workspace:* + version: link:../types + '@rn-primitives/web-light': + specifier: workspace:* + version: link:../web-light + react-native-web: + specifier: '*' + version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@tsconfig/react-native': + specifier: ^1.0.1 + version: 1.0.5 + '@types/react': + specifier: ~18.3.12 + version: 18.3.12 + react: + specifier: 18.3.1 + version: 18.3.1 + react-native: + specifier: 0.76.3 + version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + tsup: + specifier: ^8.1.0 + version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/animatable: dependencies: '@rn-primitives/slot': @@ -1763,11 +1809,14 @@ importers: specifier: ^8.1.0 version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) - packages/web: + packages/web-light: dependencies: '@react-native/normalize-colors': specifier: ^0.77.1 version: 0.77.1 + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -3335,6 +3384,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-alert-dialog@1.1.6': + resolution: {integrity: sha512-p4XnPqgej8sZAAReCAKgz1REYZEBLR8hU9Pg27wFnCWIMc8g1ccCs0FjBcy05V15VTu8pAePw/VDYeOm/uZ6yQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-arrow@1.1.0': resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} peerDependencies: @@ -3480,6 +3542,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-dialog@1.1.6': + resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-direction@1.1.0': resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} peerDependencies: @@ -3502,6 +3577,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-dismissable-layer@1.1.5': + resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-dropdown-menu@2.1.2': resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==} peerDependencies: @@ -3537,6 +3625,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-focus-scope@1.1.2': + resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-hover-card@1.1.2': resolution: {integrity: sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==} peerDependencies: @@ -3650,6 +3751,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-portal@1.1.4': + resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-presence@1.1.1': resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} peerDependencies: @@ -7496,6 +7610,16 @@ packages: '@types/react': optional: true + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-remove-scroll@2.6.0: resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} engines: {node: '>=10'} @@ -7506,6 +7630,16 @@ packages: '@types/react': optional: true + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react-style-singleton@2.2.1: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -7516,6 +7650,16 @@ packages: '@types/react': optional: true + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -8432,6 +8576,16 @@ packages: '@types/react': optional: true + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + use-latest-callback@0.2.3: resolution: {integrity: sha512-7vI3fBuyRcP91pazVboc4qu+6ZqM8izPWX9k7cRnT8hbD5svslcknsh3S9BUhaK11OmgTV4oWZZVSeQAiV53SQ==} peerDependencies: @@ -8447,6 +8601,16 @@ packages: '@types/react': optional: true + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + use-sync-external-store@1.2.2: resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} peerDependencies: @@ -10841,6 +11005,20 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-alert-dialog@1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dialog': 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -10987,6 +11165,28 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-dialog@1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.6.3(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': dependencies: react: 18.3.1 @@ -11006,6 +11206,19 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -11038,6 +11251,17 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-hover-card@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 @@ -11188,6 +11412,16 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 + '@radix-ui/react-portal@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + '@types/react-dom': 18.3.1 + '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) @@ -15872,6 +16106,14 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + react-remove-scroll-bar@2.3.8(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.3(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): dependencies: react: 18.3.1 @@ -15883,6 +16125,17 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + react-remove-scroll@2.6.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.3(@types/react@18.3.12)(react@18.3.1) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.3(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): dependencies: get-nonce: 1.0.1 @@ -15892,6 +16145,14 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + react-style-singleton@2.2.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -17004,6 +17265,13 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + use-callback-ref@1.3.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + use-latest-callback@0.2.3(react@18.3.1): dependencies: react: 18.3.1 @@ -17016,6 +17284,14 @@ snapshots: optionalDependencies: '@types/react': 18.3.12 + use-sidecar@1.1.3(@types/react@18.3.12)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 18.3.12 + use-sync-external-store@1.2.2(react@18.3.1): dependencies: react: 18.3.1 From 10954fd6ba547c27a32c1ffcd8de43f6ed86cf7a Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 8 Mar 2025 16:23:29 -0500 Subject: [PATCH 033/106] refactor: reorganize packages --- apps/nextjs-nativewind/src/app/page.tsx | 4 +- .../src/components/ui/accordion.tsx | 35 ++-- packages/accordion/package.json | 2 +- .../accordion/src/universal/accordion.web.tsx | 2 +- packages/alert-dialog-new/package.json | 2 +- .../src/universal/alert-dialog.web.tsx | 2 +- packages/utils/package.json | 12 +- .../src/empty-gesture-responder-event.ts | 30 ++++ packages/utils/src/index.ts | 80 +-------- .../utils/src/render-pressable-children.ts | 12 ++ .../src/style/flatten-style.ts | 2 +- .../src/style/rn-style-to-web-style.ts | 2 +- .../type.ts => utils/src/style/types.ts} | 0 packages/utils/src/toggle-group-utils.ts | 31 ++++ .../src}/use-web-pressable-props.tsx | 37 ++-- packages/utils/tsconfig.json | 2 +- packages/web-light/package.json | 48 ----- packages/web-light/src/index.ts | 3 - .../web-light/src/pressable/pressable.tsx | 3 - .../web-light/src/pressable/pressable.web.tsx | 166 ------------------ packages/web-light/tsconfig.json | 29 --- packages/web-light/tsup.config.ts | 18 -- 22 files changed, 132 insertions(+), 390 deletions(-) create mode 100644 packages/utils/src/empty-gesture-responder-event.ts create mode 100644 packages/utils/src/render-pressable-children.ts rename packages/{web-light => utils}/src/style/flatten-style.ts (94%) rename packages/{web-light => utils}/src/style/rn-style-to-web-style.ts (99%) rename packages/{web-light/src/style/type.ts => utils/src/style/types.ts} (100%) create mode 100644 packages/utils/src/toggle-group-utils.ts rename packages/{web-light/src/pressable => utils/src}/use-web-pressable-props.tsx (74%) delete mode 100644 packages/web-light/package.json delete mode 100644 packages/web-light/src/index.ts delete mode 100644 packages/web-light/src/pressable/pressable.tsx delete mode 100644 packages/web-light/src/pressable/pressable.web.tsx delete mode 100644 packages/web-light/tsconfig.json delete mode 100644 packages/web-light/tsup.config.ts diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index dcea9a90..6dcb654f 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -172,7 +172,9 @@ function AlertDialogExample() { {/* */} diff --git a/apps/nextjs-nativewind/src/components/ui/accordion.tsx b/apps/nextjs-nativewind/src/components/ui/accordion.tsx index d1a1e5b7..75303d78 100644 --- a/apps/nextjs-nativewind/src/components/ui/accordion.tsx +++ b/apps/nextjs-nativewind/src/components/ui/accordion.tsx @@ -75,7 +75,6 @@ const AccordionTrigger = React.forwardRef< - - {renderPressableChildren(children, (children) => { - return ( - <> - {children} - - - - - ); - })} - + {renderPressableChildren(children, (children) => { + return ( + <> + {children} + + + + + ); + })} diff --git a/packages/accordion/package.json b/packages/accordion/package.json index 7cda5b99..aa323120 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -43,7 +43,7 @@ "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*", - "@rn-primitives/web-light": "workspace:*" + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/accordion/src/universal/accordion.web.tsx b/packages/accordion/src/universal/accordion.web.tsx index d9e81897..0ad3de77 100644 --- a/packages/accordion/src/universal/accordion.web.tsx +++ b/packages/accordion/src/universal/accordion.web.tsx @@ -1,4 +1,4 @@ -import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/web-light'; +import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/utils'; import * as React from 'react'; import { BaseAccordionTriggerRef } from '../base-types'; import { diff --git a/packages/alert-dialog-new/package.json b/packages/alert-dialog-new/package.json index 319cf6f0..8c2b71a6 100644 --- a/packages/alert-dialog-new/package.json +++ b/packages/alert-dialog-new/package.json @@ -44,7 +44,7 @@ "@rn-primitives/portal": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*", - "@rn-primitives/web-light": "workspace:*" + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx b/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx index a094ea6a..6a0ef999 100644 --- a/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx +++ b/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx @@ -1,4 +1,4 @@ -import { rnStyleToWebStyle, useWebPressableProps } from '../../../web-light/dist'; +import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/utils'; import * as React from 'react'; import { Action as ActionWeb, diff --git a/packages/utils/package.json b/packages/utils/package.json index 58db97ad..b2c06823 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -33,16 +33,6 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } + "react": "*" } } diff --git a/packages/utils/src/empty-gesture-responder-event.ts b/packages/utils/src/empty-gesture-responder-event.ts new file mode 100644 index 00000000..ffa58730 --- /dev/null +++ b/packages/utils/src/empty-gesture-responder-event.ts @@ -0,0 +1,30 @@ +import type { GestureResponderEvent } from 'react-native'; +const EmptyGestureResponderEvent: GestureResponderEvent = { + nativeEvent: { + changedTouches: [], + identifier: '0', + locationX: 0, + locationY: 0, + pageX: 0, + pageY: 0, + target: '0', + timestamp: 0, + touches: [], + }, + bubbles: false, + cancelable: false, + currentTarget: {} as any, + defaultPrevented: false, + eventPhase: 0, + persist: () => {}, + isDefaultPrevented: () => false, + isPropagationStopped: () => false, + isTrusted: false, + preventDefault: () => {}, + stopPropagation: () => {}, + target: {} as any, + timeStamp: 0, + type: '', +}; + +export { EmptyGestureResponderEvent }; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 2bd288ed..f0cae5dd 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,74 +1,6 @@ -import type { - GestureResponderEvent, - PressableProps, - PressableStateCallbackType, -} from 'react-native'; - -function renderPressableChildren( - children: PressableProps['children'], - render: (children: React.ReactNode) => React.ReactNode -) { - return typeof children === 'function' - ? (state: PressableStateCallbackType) => render(children(state)) - : render(children); -} - -const ToggleGroupUtils = { - getIsSelected(value: string | string[] | undefined, itemValue: string) { - if (value === undefined) { - return false; - } - if (typeof value === 'string') { - return value === itemValue; - } - return value.includes(itemValue); - }, - getNewSingleValue(originalValue: string | string[] | undefined, itemValue: string) { - if (originalValue === itemValue) { - return undefined; - } - return itemValue; - }, - getNewMultipleValue(originalValue: string | string[] | undefined, itemValue: string) { - if (originalValue === undefined) { - return [itemValue]; - } - if (typeof originalValue === 'string') { - return originalValue === itemValue ? [] : [originalValue, itemValue]; - } - if (originalValue.includes(itemValue)) { - return originalValue.filter((v) => v !== itemValue); - } - return [...originalValue, itemValue]; - }, -}; - -const EmptyGestureResponderEvent: GestureResponderEvent = { - nativeEvent: { - changedTouches: [], - identifier: '0', - locationX: 0, - locationY: 0, - pageX: 0, - pageY: 0, - target: '0', - timestamp: 0, - touches: [], - }, - bubbles: false, - cancelable: false, - currentTarget: {} as any, - defaultPrevented: false, - eventPhase: 0, - persist: () => {}, - isDefaultPrevented: () => false, - isPropagationStopped: () => false, - isTrusted: false, - preventDefault: () => {}, - stopPropagation: () => {}, - target: {} as any, - timeStamp: 0, - type: '', -}; - -export { EmptyGestureResponderEvent, renderPressableChildren, ToggleGroupUtils }; +export { EmptyGestureResponderEvent } from './empty-gesture-responder-event'; +export { renderPressableChildren } from './render-pressable-children'; +export { flattenStyle } from './style/flatten-style'; +export { rnStyleToWebStyle } from './style/rn-style-to-web-style'; +export { ToggleGroupUtils } from './toggle-group-utils'; +export { useWebPressableProps } from './use-web-pressable-props'; diff --git a/packages/utils/src/render-pressable-children.ts b/packages/utils/src/render-pressable-children.ts new file mode 100644 index 00000000..93d76d1d --- /dev/null +++ b/packages/utils/src/render-pressable-children.ts @@ -0,0 +1,12 @@ +import type { PressableProps, PressableStateCallbackType } from 'react-native'; + +function renderPressableChildren( + children: PressableProps['children'], + render: (children: React.ReactNode) => React.ReactNode +) { + return typeof children === 'function' + ? (state: PressableStateCallbackType) => render(children(state)) + : render(children); +} + +export { renderPressableChildren }; diff --git a/packages/web-light/src/style/flatten-style.ts b/packages/utils/src/style/flatten-style.ts similarity index 94% rename from packages/web-light/src/style/flatten-style.ts rename to packages/utils/src/style/flatten-style.ts index 0a1d2cc8..95412ccf 100644 --- a/packages/web-light/src/style/flatten-style.ts +++ b/packages/utils/src/style/flatten-style.ts @@ -3,7 +3,7 @@ // https://github.com/facebook/react-native import type { StyleProp } from 'react-native'; -import { Style } from './type'; +import type { Style } from './types'; export function flattenStyle(style: StyleProp): T | undefined { if (style === null || typeof style !== 'object') { diff --git a/packages/web-light/src/style/rn-style-to-web-style.ts b/packages/utils/src/style/rn-style-to-web-style.ts similarity index 99% rename from packages/web-light/src/style/rn-style-to-web-style.ts rename to packages/utils/src/style/rn-style-to-web-style.ts index 56420cef..f5ab7947 100644 --- a/packages/web-light/src/style/rn-style-to-web-style.ts +++ b/packages/utils/src/style/rn-style-to-web-style.ts @@ -10,7 +10,7 @@ import normalizeRNColor from '@react-native/normalize-colors'; import type { StyleProp } from 'react-native'; import { flattenStyle } from './flatten-style'; -import { Style } from './type'; +import type { Style } from './types'; // TODO: add default RN styles - either through tailwind preset or copy/pastable css code or look into react-native-web class name, is it generated or can we use it? diff --git a/packages/web-light/src/style/type.ts b/packages/utils/src/style/types.ts similarity index 100% rename from packages/web-light/src/style/type.ts rename to packages/utils/src/style/types.ts diff --git a/packages/utils/src/toggle-group-utils.ts b/packages/utils/src/toggle-group-utils.ts new file mode 100644 index 00000000..eed412b0 --- /dev/null +++ b/packages/utils/src/toggle-group-utils.ts @@ -0,0 +1,31 @@ +const ToggleGroupUtils = { + getIsSelected(value: string | string[] | undefined, itemValue: string) { + if (value === undefined) { + return false; + } + if (typeof value === 'string') { + return value === itemValue; + } + return value.includes(itemValue); + }, + getNewSingleValue(originalValue: string | string[] | undefined, itemValue: string) { + if (originalValue === itemValue) { + return undefined; + } + return itemValue; + }, + getNewMultipleValue(originalValue: string | string[] | undefined, itemValue: string) { + if (originalValue === undefined) { + return [itemValue]; + } + if (typeof originalValue === 'string') { + return originalValue === itemValue ? [] : [originalValue, itemValue]; + } + if (originalValue.includes(itemValue)) { + return originalValue.filter((v) => v !== itemValue); + } + return [...originalValue, itemValue]; + }, +}; + +export { ToggleGroupUtils }; diff --git a/packages/web-light/src/pressable/use-web-pressable-props.tsx b/packages/utils/src/use-web-pressable-props.tsx similarity index 74% rename from packages/web-light/src/pressable/use-web-pressable-props.tsx rename to packages/utils/src/use-web-pressable-props.tsx index 4ea43a89..ad6d708b 100644 --- a/packages/web-light/src/pressable/use-web-pressable-props.tsx +++ b/packages/utils/src/use-web-pressable-props.tsx @@ -1,13 +1,28 @@ import * as React from 'react'; import type { PressableProps, PressableStateCallbackType } from 'react-native'; -import { rnStyleToWebStyle } from '../style/rn-style-to-web-style'; +import { rnStyleToWebStyle } from './style/rn-style-to-web-style'; -type WebPressableProps = Pick< - React.ComponentPropsWithoutRef<'button'>, +type Element = + | 'article' + | 'header' + | 'button' + | 'aside' + | 'footer' + | 'figure' + | 'form' + | 'ul' + | 'li' + | 'main' + | 'nav' + | 'section' + | 'div'; + +type WebPressableProps = Pick< + React.ComponentPropsWithoutRef, 'onFocus' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave' | 'onMouseDown' | 'onMouseUp' >; -export function useWebPressableProps({ +export function useWebPressableProps({ childrenProp, styleProp, webProps, @@ -16,7 +31,7 @@ export function useWebPressableProps({ }: { styleProp: PressableProps['style']; childrenProp: PressableProps['children']; - webProps?: WebPressableProps; + webProps?: WebPressableProps; onPressInProp?: () => void; onPressOutProp?: () => void; }) { @@ -26,23 +41,23 @@ export function useWebPressableProps({ const events = React.useMemo(() => { return { - onFocus: (ev: React.FocusEvent) => { + onFocus: (ev: any) => { setFocused(true); webProps?.onFocus?.(ev); }, - onBlur: (ev: React.FocusEvent) => { + onBlur: (ev: any) => { setFocused(false); webProps?.onBlur?.(ev); }, - onMouseEnter: (ev: React.MouseEvent) => { + onMouseEnter: (ev: any) => { setHovered(true); webProps?.onMouseEnter?.(ev); }, - onMouseLeave: (ev: React.MouseEvent) => { + onMouseLeave: (ev: any) => { setHovered(false); webProps?.onMouseLeave?.(ev); }, - onMouseDown: (ev: React.MouseEvent) => { + onMouseDown: (ev: any) => { setPressed(true); if (webProps?.onMouseDown) { webProps.onMouseDown?.(ev); @@ -50,7 +65,7 @@ export function useWebPressableProps({ } onPressInProp?.(); }, - onMouseUp: (ev: React.MouseEvent) => { + onMouseUp: (ev: any) => { setPressed(false); if (webProps?.onMouseUp) { webProps?.onMouseUp?.(ev); diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 233db5d7..61fe5455 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "@tsconfig/react-native/tsconfig.json", "include": [ - "." + ".", ], "compilerOptions": { "lib": [ diff --git a/packages/web-light/package.json b/packages/web-light/package.json deleted file mode 100644 index 98d57e2e..00000000 --- a/packages/web-light/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "@rn-primitives/web-light", - "version": "2.0.0-alpha.1", - "description": "Styling utilities for React Native and Web", - "license": "MIT", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.js", - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "tsup", - "dev": "tsup --watch", - "clean": "rm -rf dist .turbo node_modules", - "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", - "pub:next": "pnpm publish --no-git-checks --access public --tag next", - "pub:release": "pnpm publish --access public" - }, - "dependencies": { - "@react-native/normalize-colors": "^0.77.1", - "@rn-primitives/utils": "workspace:*" - }, - "devDependencies": { - "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", - "tsup": "^8.1.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - } - } -} diff --git a/packages/web-light/src/index.ts b/packages/web-light/src/index.ts deleted file mode 100644 index 0039e672..00000000 --- a/packages/web-light/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { flattenStyle } from './style/flatten-style'; -export { rnStyleToWebStyle } from './style/rn-style-to-web-style'; -export { useWebPressableProps } from './pressable/use-web-pressable-props'; diff --git a/packages/web-light/src/pressable/pressable.tsx b/packages/web-light/src/pressable/pressable.tsx deleted file mode 100644 index 2d333676..00000000 --- a/packages/web-light/src/pressable/pressable.tsx +++ /dev/null @@ -1,3 +0,0 @@ -// TODO: use universal props - -export { Pressable } from 'react-native'; diff --git a/packages/web-light/src/pressable/pressable.web.tsx b/packages/web-light/src/pressable/pressable.web.tsx deleted file mode 100644 index d502e0b2..00000000 --- a/packages/web-light/src/pressable/pressable.web.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import type { PressableProps as RNPressableProps, Role } from 'react-native'; -import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; -import * as React from 'react'; -import { useWebPressableProps } from './use-web-pressable-props'; - -// TODO: type props an share with native universal + use native and web props -const Pressable = React.memo(({ native: _native, web, role = 'button', ...props }: any) => { - const { children, events, style } = useWebPressableProps({ - styleProp: props.style, - childrenProp: props.children, - webProps: props.web, - onPressInProp: props.onPressIn, - onPressOutProp: props.onPressOut, - }); - - const mappedProps = mapPressableToButtonProps({ ...props }); - const Component = getComponent(role); - - return ; -}); - -export { Pressable }; - -type PressableProps = Pick< - RNPressableProps, - | 'onPress' - | 'onPressIn' - | 'onPressOut' - | 'disabled' - | 'role' - | 'aria-busy' - | 'aria-checked' - | 'aria-expanded' - | 'aria-hidden' - | 'aria-label' - | 'aria-selected' - | 'aria-labelledby' - | 'aria-live' - | 'aria-modal' ->; - -function mapPressableToButtonProps( - pressableProps: PressableProps -): React.ButtonHTMLAttributes { - const { - onPress, - onPressIn, - onPressOut, - disabled, - role, - 'aria-busy': ariaBusy, - 'aria-checked': ariaChecked, - 'aria-expanded': ariaExpanded, - 'aria-hidden': ariaHidden, - 'aria-label': ariaLabel, - 'aria-selected': ariaSelected, - 'aria-labelledby': ariaLabelledby, - 'aria-live': ariaLive, - 'aria-modal': ariaModal, - } = pressableProps; - - const handlePress = () => { - if (disabled || !onPress) return; - onPress(EmptyGestureResponderEvent); - }; - - const handlePressIn = () => { - if (disabled) return; - onPressIn?.(EmptyGestureResponderEvent); - }; - - const handlePressOut = () => { - if (disabled) return; - onPressOut?.(EmptyGestureResponderEvent); - }; - - const buttonProps: React.ButtonHTMLAttributes = { - type: 'button', - }; - - if (disabled) { - buttonProps.disabled = true; - } - - if (onPress) { - buttonProps.onClick = handlePress; - } - - if (onPressIn) { - buttonProps.onMouseDown = handlePressIn; - buttonProps.onTouchStart = handlePressIn; - } - - if (onPressOut) { - buttonProps.onMouseUp = handlePressOut; - buttonProps.onTouchEnd = handlePressOut; - } - - if (ariaLabel) { - buttonProps['aria-label'] = ariaLabel; - } - - if (ariaBusy) { - buttonProps['aria-busy'] = ariaBusy; - } - - if (ariaChecked) { - buttonProps['aria-checked'] = ariaChecked; - } - - if (ariaExpanded) { - buttonProps['aria-expanded'] = ariaExpanded; - } - - if (ariaHidden) { - buttonProps['aria-hidden'] = ariaHidden; - } - - if (ariaSelected) { - buttonProps['aria-selected'] = ariaSelected; - } - - if (ariaLabelledby) { - buttonProps['aria-labelledby'] = ariaLabelledby; - } - - if (ariaLive) { - buttonProps['aria-live'] = ariaLive; - } - - if (ariaModal) { - buttonProps['aria-modal'] = ariaModal; - } - - const accessibilityRole = role ?? 'button'; - - // Only set role if it's not the default 'button' - if (role && role !== 'button') { - buttonProps.role = accessibilityRole; - } - - return buttonProps; -} - -const roleComponents: Partial> = { - article: 'article', - banner: 'header', - button: 'button', - complementary: 'aside', - contentinfo: 'footer', - figure: 'figure', - form: 'form', - list: 'ul', - listitem: 'li', - main: 'main', - navigation: 'nav', - region: 'section', -}; - -function getComponent(role: string) { - if (role === 'button') { - return 'button'; - } - - return roleComponents[role as Role] ?? 'div'; -} diff --git a/packages/web-light/tsconfig.json b/packages/web-light/tsconfig.json deleted file mode 100644 index 233db5d7..00000000 --- a/packages/web-light/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "extends": "@tsconfig/react-native/tsconfig.json", - "include": [ - "." - ], - "compilerOptions": { - "lib": [ - "dom", - "es2019", - "es2020.bigint", - "es2020.date", - "es2020.number", - "es2020.promise", - "es2020.string", - "es2020.symbol.wellknown", - "es2021.promise", - "es2021.string", - "es2021.weakref", - "es2022.array", - "es2022.object", - "es2022.string" - ], - }, - "exclude": [ - "dist", - "build", - "node_modules" - ], -} \ No newline at end of file diff --git a/packages/web-light/tsup.config.ts b/packages/web-light/tsup.config.ts deleted file mode 100644 index 5a51f537..00000000 --- a/packages/web-light/tsup.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineConfig, Options } from 'tsup'; - -export default defineConfig((options: Options) => ({ - entry: { - index: 'src/index.ts', - }, - banner: { - js: "'use client'", - }, - clean: true, - format: ['cjs', 'esm'], - external: ['react'], - dts: true, - ...options, - esbuildOptions(options) { - options.jsx = 'preserve'; - }, -})); From 06c62a8c93d4b1ee557812000395105ede4c3f1c Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 8 Mar 2025 16:24:08 -0500 Subject: [PATCH 034/106] feat(core): add poc for core package --- apps/nextjs-nativewind/package.json | 1 + .../nextjs-nativewind/src/components/core.tsx | 5 + packages/animatable/index.ts | 2 + packages/core/package.json | 72 +++++++ packages/core/src/index.ts | 1 + .../native/animatable/animatable-image.tsx | 20 ++ .../animatable/animatable-pressable.tsx | 24 +++ .../src/native/animatable/animatable-text.tsx | 20 ++ .../src/native/animatable/animatable-view.tsx | 22 ++ packages/core/src/native/animatable/index.tsx | 19 ++ packages/core/src/native/animatable/types.ts | 138 +++++++++++++ packages/core/src/native/index.native.tsx | 14 ++ packages/core/src/native/index.tsx | 26 +++ packages/core/src/pressable/index.ts | 1 + .../src/pressable/native/pressable-native.tsx | 3 + packages/core/src/pressable/pressable.tsx | 1 + packages/core/src/pressable/pressable.web.tsx | 195 ++++++++++++++++++ packages/core/src/pressable/roles.ts | 19 ++ packages/core/src/universal/index.tsx | 3 + packages/core/src/universal/index.web.tsx | 3 + packages/core/src/web/constants.ts | 88 ++++++++ packages/core/src/web/index.tsx | 30 +++ packages/core/src/web/index.web.tsx | 65 ++++++ packages/core/src/web/types.ts | 35 ++++ packages/core/tsconfig.json | 29 +++ packages/core/tsup.config.ts | 25 +++ pnpm-lock.yaml | 74 ++++--- 27 files changed, 902 insertions(+), 33 deletions(-) create mode 100644 apps/nextjs-nativewind/src/components/core.tsx create mode 100644 packages/core/package.json create mode 100644 packages/core/src/index.ts create mode 100644 packages/core/src/native/animatable/animatable-image.tsx create mode 100644 packages/core/src/native/animatable/animatable-pressable.tsx create mode 100644 packages/core/src/native/animatable/animatable-text.tsx create mode 100644 packages/core/src/native/animatable/animatable-view.tsx create mode 100644 packages/core/src/native/animatable/index.tsx create mode 100644 packages/core/src/native/animatable/types.ts create mode 100644 packages/core/src/native/index.native.tsx create mode 100644 packages/core/src/native/index.tsx create mode 100644 packages/core/src/pressable/index.ts create mode 100644 packages/core/src/pressable/native/pressable-native.tsx create mode 100644 packages/core/src/pressable/pressable.tsx create mode 100644 packages/core/src/pressable/pressable.web.tsx create mode 100644 packages/core/src/pressable/roles.ts create mode 100644 packages/core/src/universal/index.tsx create mode 100644 packages/core/src/universal/index.web.tsx create mode 100644 packages/core/src/web/constants.ts create mode 100644 packages/core/src/web/index.tsx create mode 100644 packages/core/src/web/index.web.tsx create mode 100644 packages/core/src/web/types.ts create mode 100644 packages/core/tsconfig.json create mode 100644 packages/core/tsup.config.ts diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index 6f6bb302..fb4f8a22 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -17,6 +17,7 @@ "@rn-primitives/avatar": "workspace:*", "@rn-primitives/checkbox": "workspace:*", "@rn-primitives/collapsible": "workspace:*", + "@rn-primitives/core": "workspace:*", "@rn-primitives/context-menu": "workspace:*", "@rn-primitives/dialog": "workspace:*", "@rn-primitives/dropdown-menu": "workspace:*", diff --git a/apps/nextjs-nativewind/src/components/core.tsx b/apps/nextjs-nativewind/src/components/core.tsx new file mode 100644 index 00000000..0c03336b --- /dev/null +++ b/apps/nextjs-nativewind/src/components/core.tsx @@ -0,0 +1,5 @@ +import { Text } from '@rn-primitives/core/web'; + +function Test() { + return {}} />; +} diff --git a/packages/animatable/index.ts b/packages/animatable/index.ts index 775ff043..93c437e4 100644 --- a/packages/animatable/index.ts +++ b/packages/animatable/index.ts @@ -22,3 +22,5 @@ export { type AnimatableViewIosProps, type AnimatableViewProps, } from './src/animatable-view'; + +// TODO: Delete this package since it's now exported from core diff --git a/packages/core/package.json b/packages/core/package.json new file mode 100644 index 00000000..f8c4a31c --- /dev/null +++ b/packages/core/package.json @@ -0,0 +1,72 @@ +{ + "name": "@rn-primitives/core", + "version": "2.0.0-alpha.1", + "description": "Styling utilities for React Native and Web", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.mjs", + "require": "./dist/index.js", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./animatable": { + "import": "./dist/native/animatable/index.mjs", + "require": "./dist/native/animatable/index.js", + "types": "./dist/native/animatable/index.d.ts", + "default": "./dist/native/animatable/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "clean": "rm -rf dist .turbo node_modules", + "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", + "pub:next": "pnpm publish --no-git-checks --access public --tag next", + "pub:release": "pnpm publish --access public" + }, + "dependencies": { + "@react-native/normalize-colors": "^0.77.1", + "@rn-primitives/slot": "workspace:*", + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" + }, + "devDependencies": { + "@tsconfig/react-native": "^1.0.1", + "@types/react": "~18.3.12", + "react": "18.3.1", + "react-native": "0.76.3", + "tsup": "^8.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-reanimated": "*" + }, + "peerDependenciesMeta": { + "react-native": { + "optional": true + }, + "react-native-reanimated": { + "optional": true + } + } +} diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts new file mode 100644 index 00000000..c514a4b8 --- /dev/null +++ b/packages/core/src/index.ts @@ -0,0 +1 @@ +export * from './universal'; diff --git a/packages/core/src/native/animatable/animatable-image.tsx b/packages/core/src/native/animatable/animatable-image.tsx new file mode 100644 index 00000000..10c9eb94 --- /dev/null +++ b/packages/core/src/native/animatable/animatable-image.tsx @@ -0,0 +1,20 @@ +import { Slot } from '@rn-primitives/slot'; +import type { ImageRef } from '@rn-primitives/types'; +import * as React from 'react'; +import { Image } from 'react-native'; +import Animated from 'react-native-reanimated'; +import type { AnimatableImageProps } from './types'; + +const AnimatableImage = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +export { AnimatableImage }; diff --git a/packages/core/src/native/animatable/animatable-pressable.tsx b/packages/core/src/native/animatable/animatable-pressable.tsx new file mode 100644 index 00000000..500d9a30 --- /dev/null +++ b/packages/core/src/native/animatable/animatable-pressable.tsx @@ -0,0 +1,24 @@ +import { Slot } from '@rn-primitives/slot'; +import type { PressableRef } from '@rn-primitives/types'; +import * as React from 'react'; +import { Pressable } from 'react-native'; +import Animated from 'react-native-reanimated'; +import type { AnimatablePressableProps } from './types'; + +const AnimatedPressable = Animated.createAnimatedComponent(Pressable); + +const AnimatablePressable = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +AnimatablePressable.displayName = 'AnimatablePressable'; + +export { AnimatablePressable }; diff --git a/packages/core/src/native/animatable/animatable-text.tsx b/packages/core/src/native/animatable/animatable-text.tsx new file mode 100644 index 00000000..a286dfd5 --- /dev/null +++ b/packages/core/src/native/animatable/animatable-text.tsx @@ -0,0 +1,20 @@ +import { Slot } from '@rn-primitives/slot'; +import type { TextRef } from '@rn-primitives/types'; +import * as React from 'react'; +import { Text } from 'react-native'; +import Animated from 'react-native-reanimated'; +import type { AnimatableTextProps } from './types'; + +const AnimatableText = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +export { AnimatableText }; diff --git a/packages/core/src/native/animatable/animatable-view.tsx b/packages/core/src/native/animatable/animatable-view.tsx new file mode 100644 index 00000000..fd321917 --- /dev/null +++ b/packages/core/src/native/animatable/animatable-view.tsx @@ -0,0 +1,22 @@ +import { Slot } from '@rn-primitives/slot'; +import type { ViewRef } from '@rn-primitives/types'; +import * as React from 'react'; +import { View } from 'react-native'; +import Animated from 'react-native-reanimated'; +import type { AnimatableViewProps } from './types'; + +const AnimatableView = React.forwardRef( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + if (props.isAnimated) { + return ; + } + return ; + } +); + +AnimatableView.displayName = 'AnimatableView'; + +export { AnimatableView }; diff --git a/packages/core/src/native/animatable/index.tsx b/packages/core/src/native/animatable/index.tsx new file mode 100644 index 00000000..718ec3ce --- /dev/null +++ b/packages/core/src/native/animatable/index.tsx @@ -0,0 +1,19 @@ +export { AnimatableImage } from './animatable-image'; +export { AnimatablePressable } from './animatable-pressable'; +export { AnimatableText } from './animatable-text'; +export { AnimatableView } from './animatable-view'; + +export type { + AnimatableImageAndroidProps, + AnimatableImageIosProps, + AnimatableImageProps, + AnimatablePressableAndroidProps, + AnimatablePressableIosProps, + AnimatablePressableProps, + AnimatableTextAndroidProps, + AnimatableTextIosProps, + AnimatableTextProps, + AnimatableViewAndroidProps, + AnimatableViewIosProps, + AnimatableViewProps, +} from './types'; diff --git a/packages/core/src/native/animatable/types.ts b/packages/core/src/native/animatable/types.ts new file mode 100644 index 00000000..857792c6 --- /dev/null +++ b/packages/core/src/native/animatable/types.ts @@ -0,0 +1,138 @@ +import type { + AndroidOnlyViewPropKeys, + AndroidOnlyViewStyleKeys, + IosOnlyViewPropKeys, + IosOnlyViewStyleKeys, + RemoveAndroidOnlyImageProps, + RemoveAndroidOnlyTextProps, + RemoveAndroidOnlyViewProps, + RemoveIosOnlyImageProps, + RemoveIosOnlyTextProps, + RemoveIosOnlyViewProps, + Slottable, +} from '@rn-primitives/types'; +import type { + ImageProps, + PressableProps, + PressableStateCallbackType, + StyleProp, + TextProps, + View, + ViewProps, + ViewStyle, +} from 'react-native'; +import type Animated from 'react-native-reanimated'; + +type AnimatedImageProps = Slottable>; +type RNImageProps = Slottable; + +type AnimatableImageProps = + | (RNImageProps & { isAnimated?: false | undefined }) + | (AnimatedImageProps & { isAnimated: true }); + +type AnimatableImageIosProps = + | (RemoveAndroidOnlyImageProps & { isAnimated?: false | undefined }) + | (RemoveAndroidOnlyImageProps & { isAnimated: true }); + +type AnimatableImageAndroidProps = + | (RemoveIosOnlyImageProps & { isAnimated?: false | undefined }) + | (RemoveIosOnlyImageProps & { isAnimated: true }); + +type AnimatedPressableProps = Slottable< + React.ComponentPropsWithoutRef< + React.FunctionComponent>> + > & { + key?: React.Key | null | undefined; + } +>; + +type RNPressableProps = Slottable; + +type AnimatablePressableProps = + | (AnimatedPressableProps & { isAnimated: true }) + | (RNPressableProps & { isAnimated?: false | undefined }); +type AnimatedPressableStyle = AnimatedPressableProps['style']; +type AnimatedPressableCbStyle = Exclude>; + +type AnimatedPressableIosProps = Omit & { + style?: AnimatedPressableStyle extends AnimatedPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : AnimatedPressableStyle; +}; + +type RNPressableStyle = RNPressableProps['style']; +type RNPressableCbStyle = Exclude>; + +type RNPressableIosProps = Omit & { + style?: RNPressableStyle extends RNPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : RNPressableStyle; +}; + +type AnimatablePressableIosProps = + | (AnimatedPressableIosProps & { isAnimated: true }) + | (RNPressableIosProps & { isAnimated?: false | undefined }); + +type AnimatedPressableAndroidProps = Omit & { + style?: AnimatedPressableStyle extends AnimatedPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : AnimatedPressableStyle; +}; + +type RNPressableAndroidProps = Omit & { + style?: RNPressableStyle extends RNPressableCbStyle + ? (state: PressableStateCallbackType) => Omit + : RNPressableStyle; +}; + +type AnimatablePressableAndroidProps = + | (AnimatedPressableAndroidProps & { isAnimated: true }) + | (RNPressableAndroidProps & { isAnimated?: false | undefined }); + +type AnimatedTextProps = Slottable< + Omit, 'children'> & { + children?: React.ReactNode | Animated.SharedValue; + } +>; +type RNTextProps = Slottable; + +type AnimatableTextProps = + | (RNTextProps & { isAnimated?: false | undefined }) + | (AnimatedTextProps & { isAnimated: true }); + +type AnimatableTextIosProps = + | (RemoveAndroidOnlyTextProps & { isAnimated?: false | undefined }) + | (RemoveAndroidOnlyTextProps & { isAnimated: true }); + +type AnimatableTextAndroidProps = + | (RemoveIosOnlyTextProps & { isAnimated?: false | undefined }) + | (RemoveIosOnlyTextProps & { isAnimated: true }); + +type AnimatedViewProps = Slottable>; +type RNViewProps = Slottable; + +type AnimatableViewProps = + | (RNViewProps & { isAnimated?: false | undefined }) + | (AnimatedViewProps & { isAnimated: true }); +type AnimatableViewIosProps = + | (RemoveAndroidOnlyViewProps & { isAnimated?: false | undefined }) + | (RemoveAndroidOnlyViewProps & { isAnimated: true }); + +type AnimatableViewAndroidProps = + | (RemoveIosOnlyViewProps & { isAnimated?: false | undefined }) + | (RemoveIosOnlyViewProps & { isAnimated: true }); + +export type { + AnimatableImageAndroidProps, + AnimatableImageIosProps, + AnimatableImageProps, + AnimatablePressableAndroidProps, + AnimatablePressableIosProps, + AnimatablePressableProps, + AnimatableTextAndroidProps, + AnimatableTextIosProps, + AnimatableTextProps, + AnimatableViewAndroidProps, + AnimatableViewIosProps, + AnimatableViewProps, +}; diff --git a/packages/core/src/native/index.native.tsx b/packages/core/src/native/index.native.tsx new file mode 100644 index 00000000..8c30f869 --- /dev/null +++ b/packages/core/src/native/index.native.tsx @@ -0,0 +1,14 @@ +import { AnimatableImage } from './animatable/animatable-image'; +import { AnimatablePressable } from './animatable/animatable-pressable'; +import { AnimatableText } from './animatable/animatable-text'; +import { AnimatableView } from './animatable/animatable-view'; + +const Image = AnimatableImage; + +const Pressable = AnimatablePressable; + +const Text = AnimatableText; + +const View = AnimatableView; + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/native/index.tsx b/packages/core/src/native/index.tsx new file mode 100644 index 00000000..888f1a41 --- /dev/null +++ b/packages/core/src/native/index.tsx @@ -0,0 +1,26 @@ +import type { ImageRef, PressableRef, TextRef, ViewRef } from '@rn-primitives/types'; +import * as React from 'react'; +import type { + AnimatableImageProps, + AnimatablePressableProps, + AnimatableTextProps, + AnimatableViewProps, +} from './animatable/types'; + +const Image = React.forwardRef(() => { + return null; +}); + +const Pressable = React.forwardRef(() => { + return null; +}); + +const Text = React.forwardRef(() => { + return null; +}); + +const View = React.forwardRef(() => { + return null; +}); + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/pressable/index.ts b/packages/core/src/pressable/index.ts new file mode 100644 index 00000000..64b2f898 --- /dev/null +++ b/packages/core/src/pressable/index.ts @@ -0,0 +1 @@ +export * from './pressable'; diff --git a/packages/core/src/pressable/native/pressable-native.tsx b/packages/core/src/pressable/native/pressable-native.tsx new file mode 100644 index 00000000..2d333676 --- /dev/null +++ b/packages/core/src/pressable/native/pressable-native.tsx @@ -0,0 +1,3 @@ +// TODO: use universal props + +export { Pressable } from 'react-native'; diff --git a/packages/core/src/pressable/pressable.tsx b/packages/core/src/pressable/pressable.tsx new file mode 100644 index 00000000..b7ebd246 --- /dev/null +++ b/packages/core/src/pressable/pressable.tsx @@ -0,0 +1 @@ +export * from './native/pressable-native'; diff --git a/packages/core/src/pressable/pressable.web.tsx b/packages/core/src/pressable/pressable.web.tsx new file mode 100644 index 00000000..9aebabc8 --- /dev/null +++ b/packages/core/src/pressable/pressable.web.tsx @@ -0,0 +1,195 @@ +import { useWebPressableProps } from '@rn-primitives/utils'; +import * as React from 'react'; +import type { PressableProps as RNPressableProps } from 'react-native'; + +type HtmlComponentProps = React.ComponentPropsWithoutRef< + T extends Role ? (typeof roleComponents)[Role] : 'div' +>; +type HtmlComponentRef = React.Ref< + T extends Role ? HTMLElementTagNameMap[(typeof roleComponents)[T]] : HTMLButtonElement +>; + +type PressableWebProps = PressableProps & { + role?: T extends Role ? (typeof roleComponents)[Role] : 'button'; + web?: HtmlComponentProps; + native?: any; +}; + +// TODO: type props an share with native universal + use native and web props +function Pressable( + { native: _native, web, role = 'button', ...props }: PressableWebProps, + ref: HtmlComponentRef +) { + const { children, events, style } = useWebPressableProps({ + styleProp: props.style, + childrenProp: props.children, + webProps: web, + onPressInProp: props.onPressIn, + onPressOutProp: props.onPressOut, + }); + + const mappedProps = mapPressableToButtonProps({ ...props }); + const Component = getComponent(role); + + return ( + // @ts-ignore + + ); +} + +export { Pressable }; + +type PressableProps = Pick< + RNPressableProps, + | 'style' + | 'children' + | 'disabled' + | 'role' + | 'aria-busy' + | 'aria-checked' + | 'aria-expanded' + | 'aria-hidden' + | 'aria-label' + | 'aria-selected' + | 'aria-labelledby' + | 'aria-live' + | 'aria-modal' +> & { + onPress?: () => void; + onPressIn?: () => void; + onPressOut?: () => void; +}; + +function mapPressableToButtonProps( + pressableProps: PressableProps +): React.HTMLAttributes< + T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : HTMLDivElement +> { + const { + onPress, + onPressIn, + onPressOut, + disabled, + role, + 'aria-busy': ariaBusy, + 'aria-checked': ariaChecked, + 'aria-expanded': ariaExpanded, + 'aria-hidden': ariaHidden, + 'aria-label': ariaLabel, + 'aria-selected': ariaSelected, + 'aria-labelledby': ariaLabelledby, + 'aria-live': ariaLive, + 'aria-modal': ariaModal, + } = pressableProps; + + const handlePress = () => { + if (disabled || !onPress) return; + onPress?.(); + }; + + const handlePressIn = () => { + if (disabled) return; + onPressIn?.(); + }; + + const handlePressOut = () => { + if (disabled) return; + onPressOut?.(); + }; + + const props: React.HTMLAttributes< + T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : HTMLDivElement + > = {}; + + if (role === 'button') { + (props as React.ButtonHTMLAttributes).type = 'button'; + } + + if (disabled) { + (props as React.ButtonHTMLAttributes).disabled = true; + } + + if (onPress) { + props.onClick = handlePress; + } + + if (onPressIn) { + props.onMouseDown = handlePressIn; + props.onTouchStart = handlePressIn; + } + + if (onPressOut) { + props.onMouseUp = handlePressOut; + props.onTouchEnd = handlePressOut; + } + + if (ariaLabel) { + props['aria-label'] = ariaLabel; + } + + if (ariaBusy) { + props['aria-busy'] = ariaBusy; + } + + if (ariaChecked) { + props['aria-checked'] = ariaChecked; + } + + if (ariaExpanded) { + props['aria-expanded'] = ariaExpanded; + } + + if (ariaHidden) { + props['aria-hidden'] = ariaHidden; + } + + if (ariaSelected) { + props['aria-selected'] = ariaSelected; + } + + if (ariaLabelledby) { + props['aria-labelledby'] = ariaLabelledby; + } + + if (ariaLive) { + props['aria-live'] = ariaLive; + } + + if (ariaModal) { + props['aria-modal'] = ariaModal; + } + + const accessibilityRole = role ?? 'button'; + + // Only set role if it's not the default 'button' + if (role && role !== 'button') { + props.role = accessibilityRole; + } + + return props; +} + +const roleComponents = { + article: 'article', + banner: 'header', + button: 'button', + complementary: 'aside', + contentinfo: 'footer', + figure: 'figure', + form: 'form', + list: 'ul', + listitem: 'li', + main: 'main', + navigation: 'nav', + region: 'section', +} as const; + +type Role = keyof typeof roleComponents; + +function getComponent(role: Role | string) { + if (role === 'button') { + return 'button'; + } + + return role in roleComponents ? roleComponents[role as Role] : 'div'; +} diff --git a/packages/core/src/pressable/roles.ts b/packages/core/src/pressable/roles.ts new file mode 100644 index 00000000..1dbc7ddf --- /dev/null +++ b/packages/core/src/pressable/roles.ts @@ -0,0 +1,19 @@ +const ROLES = { + article: 'article', + banner: 'header', + button: 'button', + complementary: 'aside', + contentinfo: 'footer', + figure: 'figure', + form: 'form', + list: 'ul', + listitem: 'li', + main: 'main', + navigation: 'nav', + region: 'section', +} as const; + +type Role = keyof typeof ROLES; + +export { ROLES }; +export type { Role }; diff --git a/packages/core/src/universal/index.tsx b/packages/core/src/universal/index.tsx new file mode 100644 index 00000000..eec29327 --- /dev/null +++ b/packages/core/src/universal/index.tsx @@ -0,0 +1,3 @@ +export * from '../native'; + +// TODO diff --git a/packages/core/src/universal/index.web.tsx b/packages/core/src/universal/index.web.tsx new file mode 100644 index 00000000..678c7da2 --- /dev/null +++ b/packages/core/src/universal/index.web.tsx @@ -0,0 +1,3 @@ +export * from '../web'; + +// TODO diff --git a/packages/core/src/web/constants.ts b/packages/core/src/web/constants.ts new file mode 100644 index 00000000..571fd2a8 --- /dev/null +++ b/packages/core/src/web/constants.ts @@ -0,0 +1,88 @@ +const ROLE_TO_ELEMENT_TAG_NAME_MAP = { + alert: 'div', + alertdialog: 'dialog', + application: 'div', + article: 'article', + banner: 'header', + button: 'button', + cell: 'td', + checkbox: 'input', + columnheader: 'th', + combobox: 'div', + complementary: 'aside', + contentinfo: 'footer', + definition: 'dfn', + dialog: 'dialog', + directory: 'ul', + document: 'div', + feed: 'div', + figure: 'figure', + form: 'form', + grid: 'table', + group: 'div', + heading: 'h1', + img: 'img', + link: 'a', + list: 'ul', + listitem: 'li', + log: 'div', + main: 'main', + marquee: 'marquee', + math: 'math', + menu: 'ul', + menubar: 'nav', + menuitem: 'li', + meter: 'meter', + navigation: 'nav', + none: 'div', + note: 'aside', + option: 'option', + paragraph: 'p', + presentation: 'div', + progressbar: 'progress', + radio: 'input', + radiogroup: 'fieldset', + region: 'section', + row: 'tr', + rowgroup: 'tbody', + rowheader: 'th', + scrollbar: 'div', + searchbox: 'input', + separator: 'hr', + slider: 'input', + spinbutton: 'input', + status: 'div', + summary: 'summary', + switch: 'input', + tab: 'button', + table: 'table', + tablist: 'ul', + tabpanel: 'section', + term: 'dt', + timer: 'time', + toolbar: 'div', + tooltip: 'div', + tree: 'ul', + treegrid: 'table', + treeitem: 'li', +} as const; + +const ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP = { + 1: 'h1', + 2: 'h2', + 3: 'h3', + 4: 'h4', + 5: 'h5', + 6: 'h6', +}; + +const ROLE_TO_INPUT_TYPE_MAP = { + checkbox: 'checkbox', + radio: 'radio', + searchbox: 'search', + slider: 'range', + spinbutton: 'number', + switch: 'checkbox', +}; + +export { ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP, ROLE_TO_ELEMENT_TAG_NAME_MAP, ROLE_TO_INPUT_TYPE_MAP }; diff --git a/packages/core/src/web/index.tsx b/packages/core/src/web/index.tsx new file mode 100644 index 00000000..c72924e2 --- /dev/null +++ b/packages/core/src/web/index.tsx @@ -0,0 +1,30 @@ +import type { Slottable } from '@rn-primitives/types'; +import * as React from 'react'; +import type { BoxProps, ElementFromRole, Role } from './types'; + +function BoxImpl( + _props: BoxProps, + _ref: React.Ref> +) { + return null; +} + +const Box = React.forwardRef(BoxImpl) as ( + props: BoxProps & { ref?: React.Ref> } +) => JSX.Element; + +const Image = React.forwardRef>>( + () => { + return null; + } +); + +Image.displayName = 'ImgWeb'; + +const Pressable = Box; + +const Text = Box; + +const View = Box; + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/web/index.web.tsx b/packages/core/src/web/index.web.tsx new file mode 100644 index 00000000..eb490148 --- /dev/null +++ b/packages/core/src/web/index.web.tsx @@ -0,0 +1,65 @@ +import { Slot } from '@rn-primitives/slot'; +import type { Slottable } from '@rn-primitives/types'; +import * as React from 'react'; +import { + ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP, + ROLE_TO_ELEMENT_TAG_NAME_MAP, + ROLE_TO_INPUT_TYPE_MAP, +} from './constants'; +import type { AriaLevel, BoxProps, ElementFromRole, Role, RoleForInputType } from './types'; + +function BoxImpl( + { asChild, role, 'aria-level': ariaLevel, ...props }: BoxProps, + ref: React.Ref> +) { + if (asChild) { + return ; + } + + const element = getElement(role, ariaLevel); + return React.createElement(element, { + ref, + 'data-rn-primitives': true, + ...(element === 'input' ? { type: ROLE_TO_INPUT_TYPE_MAP[role as RoleForInputType] } : {}), + role: role && role in ROLE_TO_ELEMENT_TAG_NAME_MAP ? role : undefined, + ...props, + }); +} + +function getElement( + role: (React.AriaRole & T) | undefined, + ariaLevel?: number +) { + const element = + role && ROLE_TO_ELEMENT_TAG_NAME_MAP[role] ? ROLE_TO_ELEMENT_TAG_NAME_MAP[role] : 'div'; + + if (element === 'h1') { + return (ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP[ariaLevel as AriaLevel] ?? + 'h1') as keyof HTMLElementTagNameMap; + } + + return element as keyof HTMLElementTagNameMap; +} + +const Box = React.forwardRef(BoxImpl) as ( + props: BoxProps & { ref?: React.Ref> } +) => JSX.Element; + +const Pressable = Box; + +const Text = Box; + +const View = Box; + +const Image = React.forwardRef>>( + ({ asChild, ...props }, ref) => { + if (asChild) { + return ; + } + return ; + } +); + +Image.displayName = 'ImageWeb'; + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/web/types.ts b/packages/core/src/web/types.ts new file mode 100644 index 00000000..3085d237 --- /dev/null +++ b/packages/core/src/web/types.ts @@ -0,0 +1,35 @@ +import type { + ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP, + ROLE_TO_ELEMENT_TAG_NAME_MAP, + ROLE_TO_INPUT_TYPE_MAP, +} from './constants'; + +type RoleToElementMap = typeof ROLE_TO_ELEMENT_TAG_NAME_MAP; +type Role = keyof RoleToElementMap; + +type ElementTagFromRole = R extends Role + ? Extract + : 'div'; + +type ElementFromRole = HTMLElementTagNameMap[ElementTagFromRole]; + +type BoxProps = React.ComponentPropsWithoutRef< + ElementTagFromRole +> & { + asChild?: boolean; + role?: T; +}; + +type RoleForInputType = keyof typeof ROLE_TO_INPUT_TYPE_MAP; + +type AriaLevel = keyof typeof ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP; + +export type { + AriaLevel, + BoxProps, + ElementFromRole, + ElementTagFromRole, + Role, + RoleForInputType, + RoleToElementMap, +}; diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json new file mode 100644 index 00000000..61fe5455 --- /dev/null +++ b/packages/core/tsconfig.json @@ -0,0 +1,29 @@ +{ + "extends": "@tsconfig/react-native/tsconfig.json", + "include": [ + ".", + ], + "compilerOptions": { + "lib": [ + "dom", + "es2019", + "es2020.bigint", + "es2020.date", + "es2020.number", + "es2020.promise", + "es2020.string", + "es2020.symbol.wellknown", + "es2021.promise", + "es2021.string", + "es2021.weakref", + "es2022.array", + "es2022.object", + "es2022.string" + ], + }, + "exclude": [ + "dist", + "build", + "node_modules" + ], +} \ No newline at end of file diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts new file mode 100644 index 00000000..dcd7754a --- /dev/null +++ b/packages/core/tsup.config.ts @@ -0,0 +1,25 @@ +import { defineConfig, Options } from 'tsup'; + +export default defineConfig((options: Options) => ({ + entry: [ + 'src/index.ts', + 'src/native/index.tsx', + 'src/native/index.native.tsx', + 'src/native/animatable/index.tsx', + 'src/web/index.tsx', + 'src/web/index.web.tsx', + 'src/universal/index.tsx', + 'src/universal/index.web.tsx', + ], + banner: { + js: "'use client'", + }, + clean: true, + format: ['cjs', 'esm'], + external: ['react', './native', '../native', './web', '../web', './universal', './index'], + dts: true, + ...options, + esbuildOptions(options) { + options.jsx = 'preserve'; + }, +})); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e4f0279..709cb6b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -558,6 +558,9 @@ importers: '@rn-primitives/context-menu': specifier: workspace:* version: link:../../packages/context-menu + '@rn-primitives/core': + specifier: workspace:* + version: link:../../packages/core '@rn-primitives/dialog': specifier: workspace:* version: link:../../packages/dialog @@ -706,9 +709,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../types - '@rn-primitives/web-light': + '@rn-primitives/utils': specifier: workspace:* - version: link:../web-light + version: link:../utils react-native-reanimated: specifier: '*' version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) @@ -789,9 +792,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../types - '@rn-primitives/web-light': + '@rn-primitives/utils': specifier: workspace:* - version: link:../web-light + version: link:../utils react-native-web: specifier: '*' version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -1010,6 +1013,40 @@ importers: specifier: ^8.1.0 version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/core: + dependencies: + '@react-native/normalize-colors': + specifier: ^0.77.1 + version: 0.77.1 + '@rn-primitives/slot': + specifier: workspace:* + version: link:../slot + '@rn-primitives/types': + specifier: workspace:* + version: link:../types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils + react-native-reanimated: + specifier: '*' + version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + devDependencies: + '@tsconfig/react-native': + specifier: ^1.0.1 + version: 1.0.5 + '@types/react': + specifier: ~18.3.12 + version: 18.3.12 + react: + specifier: 18.3.1 + version: 18.3.1 + react-native: + specifier: 0.76.3 + version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + tsup: + specifier: ^8.1.0 + version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + packages/dialog: dependencies: '@radix-ui/react-dialog': @@ -1788,35 +1825,6 @@ importers: version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) packages/utils: - dependencies: - react-native-web: - specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - devDependencies: - '@tsconfig/react-native': - specifier: ^1.0.1 - version: 1.0.5 - '@types/react': - specifier: ~18.3.12 - version: 18.3.12 - react: - specifier: 18.3.1 - version: 18.3.1 - react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - tsup: - specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) - - packages/web-light: - dependencies: - '@react-native/normalize-colors': - specifier: ^0.77.1 - version: 0.77.1 - '@rn-primitives/utils': - specifier: workspace:* - version: link:../utils devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 From c9089f32b10d4f579343a02e1298fd1b86dfa383 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 9 Mar 2025 14:09:32 -0400 Subject: [PATCH 035/106] fix(core): remove use client banner on every file + refactor --- apps/nextjs-nativewind/src/app/page.tsx | 2 + .../nextjs-nativewind/src/components/core.tsx | 6 +-- packages/core/package.json | 6 --- .../native/animatable/animatable-image.tsx | 2 + .../animatable/animatable-pressable.tsx | 2 + .../src/native/animatable/animatable-text.tsx | 2 + .../src/native/animatable/animatable-view.tsx | 2 + packages/core/src/native/animatable/index.ts | 4 ++ packages/core/src/native/animatable/index.tsx | 19 --------- .../core/src/native/components.native.tsx | 11 +++++ .../src/native/{index.tsx => components.tsx} | 14 +++++++ packages/core/src/native/index.native.tsx | 14 ------- packages/core/src/native/index.ts | 17 ++++++++ packages/core/src/native/platform.ts | 1 + packages/core/src/universal/components.tsx | 8 ++++ .../{index.web.tsx => components.web.tsx} | 2 + packages/core/src/universal/index.ts | 1 + packages/core/src/universal/index.tsx | 3 -- packages/core/src/web/components.tsx | 41 +++++++++++++++++++ .../web/{index.web.tsx => components.web.tsx} | 20 +++++---- packages/core/src/web/constants.ts | 1 - packages/core/src/web/index.ts | 12 ++++++ packages/core/src/web/index.tsx | 30 -------------- packages/core/src/web/platform.ts | 21 ++++++++++ packages/core/src/web/types.ts | 4 +- packages/core/tsup.config.ts | 21 +++++----- 26 files changed, 168 insertions(+), 98 deletions(-) create mode 100644 packages/core/src/native/animatable/index.ts delete mode 100644 packages/core/src/native/animatable/index.tsx create mode 100644 packages/core/src/native/components.native.tsx rename packages/core/src/native/{index.tsx => components.tsx} (53%) delete mode 100644 packages/core/src/native/index.native.tsx create mode 100644 packages/core/src/native/index.ts create mode 100644 packages/core/src/native/platform.ts create mode 100644 packages/core/src/universal/components.tsx rename packages/core/src/universal/{index.web.tsx => components.web.tsx} (68%) create mode 100644 packages/core/src/universal/index.ts delete mode 100644 packages/core/src/universal/index.tsx create mode 100644 packages/core/src/web/components.tsx rename packages/core/src/web/{index.web.tsx => components.web.tsx} (76%) create mode 100644 packages/core/src/web/index.ts delete mode 100644 packages/core/src/web/index.tsx create mode 100644 packages/core/src/web/platform.ts diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 6dcb654f..3b334e00 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -2,6 +2,7 @@ import { Pressable } from 'react-native'; import { CheckboxExample } from '~/components/CheckboxExample'; import { CollapsibleExample } from '~/components/CollapsibleExample'; import { ContextMenuExample } from '~/components/ContextMenuExample'; +import { Core } from '~/components/core'; import { MenubarExample } from '~/components/MenubarExample'; import { NavigationMenuExample } from '~/components/NavigationMenuExample'; import { RadioGroupExample } from '~/components/RadioGroupExample'; @@ -103,6 +104,7 @@ export default function Home() { NativeWind + diff --git a/apps/nextjs-nativewind/src/components/core.tsx b/apps/nextjs-nativewind/src/components/core.tsx index 0c03336b..2e678799 100644 --- a/apps/nextjs-nativewind/src/components/core.tsx +++ b/apps/nextjs-nativewind/src/components/core.tsx @@ -1,5 +1,5 @@ -import { Text } from '@rn-primitives/core/web'; +import { Text, Platform } from '@rn-primitives/core/web'; -function Test() { - return {}} />; +export function Core() { + return {Platform.select({ ios: 'iOS', web: 'Web' })}; } diff --git a/packages/core/package.json b/packages/core/package.json index f8c4a31c..9cf6e1f1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -19,12 +19,6 @@ "types": "./dist/native/index.d.ts", "default": "./dist/native/index.js" }, - "./animatable": { - "import": "./dist/native/animatable/index.mjs", - "require": "./dist/native/animatable/index.js", - "types": "./dist/native/animatable/index.d.ts", - "default": "./dist/native/animatable/index.js" - }, "./web": { "import": "./dist/web/index.mjs", "require": "./dist/web/index.js", diff --git a/packages/core/src/native/animatable/animatable-image.tsx b/packages/core/src/native/animatable/animatable-image.tsx index 10c9eb94..82ca8300 100644 --- a/packages/core/src/native/animatable/animatable-image.tsx +++ b/packages/core/src/native/animatable/animatable-image.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Slot } from '@rn-primitives/slot'; import type { ImageRef } from '@rn-primitives/types'; import * as React from 'react'; diff --git a/packages/core/src/native/animatable/animatable-pressable.tsx b/packages/core/src/native/animatable/animatable-pressable.tsx index 500d9a30..d34f80df 100644 --- a/packages/core/src/native/animatable/animatable-pressable.tsx +++ b/packages/core/src/native/animatable/animatable-pressable.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Slot } from '@rn-primitives/slot'; import type { PressableRef } from '@rn-primitives/types'; import * as React from 'react'; diff --git a/packages/core/src/native/animatable/animatable-text.tsx b/packages/core/src/native/animatable/animatable-text.tsx index a286dfd5..403cef30 100644 --- a/packages/core/src/native/animatable/animatable-text.tsx +++ b/packages/core/src/native/animatable/animatable-text.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Slot } from '@rn-primitives/slot'; import type { TextRef } from '@rn-primitives/types'; import * as React from 'react'; diff --git a/packages/core/src/native/animatable/animatable-view.tsx b/packages/core/src/native/animatable/animatable-view.tsx index fd321917..d22a3169 100644 --- a/packages/core/src/native/animatable/animatable-view.tsx +++ b/packages/core/src/native/animatable/animatable-view.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Slot } from '@rn-primitives/slot'; import type { ViewRef } from '@rn-primitives/types'; import * as React from 'react'; diff --git a/packages/core/src/native/animatable/index.ts b/packages/core/src/native/animatable/index.ts new file mode 100644 index 00000000..014c5841 --- /dev/null +++ b/packages/core/src/native/animatable/index.ts @@ -0,0 +1,4 @@ +export { AnimatableImage } from './animatable-image'; +export { AnimatablePressable } from './animatable-pressable'; +export { AnimatableText } from './animatable-text'; +export { AnimatableView } from './animatable-view'; diff --git a/packages/core/src/native/animatable/index.tsx b/packages/core/src/native/animatable/index.tsx deleted file mode 100644 index 718ec3ce..00000000 --- a/packages/core/src/native/animatable/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -export { AnimatableImage } from './animatable-image'; -export { AnimatablePressable } from './animatable-pressable'; -export { AnimatableText } from './animatable-text'; -export { AnimatableView } from './animatable-view'; - -export type { - AnimatableImageAndroidProps, - AnimatableImageIosProps, - AnimatableImageProps, - AnimatablePressableAndroidProps, - AnimatablePressableIosProps, - AnimatablePressableProps, - AnimatableTextAndroidProps, - AnimatableTextIosProps, - AnimatableTextProps, - AnimatableViewAndroidProps, - AnimatableViewIosProps, - AnimatableViewProps, -} from './types'; diff --git a/packages/core/src/native/components.native.tsx b/packages/core/src/native/components.native.tsx new file mode 100644 index 00000000..ceebd3e9 --- /dev/null +++ b/packages/core/src/native/components.native.tsx @@ -0,0 +1,11 @@ +import { AnimatableImage, AnimatablePressable, AnimatableText, AnimatableView } from './animatable'; + +const Image = AnimatableImage; + +const Pressable = AnimatablePressable; + +const Text = AnimatableText; + +const View = AnimatableView; + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/native/index.tsx b/packages/core/src/native/components.tsx similarity index 53% rename from packages/core/src/native/index.tsx rename to packages/core/src/native/components.tsx index 888f1a41..30ba3f25 100644 --- a/packages/core/src/native/index.tsx +++ b/packages/core/src/native/components.tsx @@ -1,3 +1,5 @@ +'use client'; + import type { ImageRef, PressableRef, TextRef, ViewRef } from '@rn-primitives/types'; import * as React from 'react'; import type { @@ -8,18 +10,30 @@ import type { } from './animatable/types'; const Image = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Image` from @rn-primitives/core/native is only supported on native.'); + } return null; }); const Pressable = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Pressable` from @rn-primitives/core/native is only supported on native.'); + } return null; }); const Text = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Text` from @rn-primitives/core/native is only supported on native.'); + } return null; }); const View = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`View` from @rn-primitives/core/native is only supported on native.'); + } return null; }); diff --git a/packages/core/src/native/index.native.tsx b/packages/core/src/native/index.native.tsx deleted file mode 100644 index 8c30f869..00000000 --- a/packages/core/src/native/index.native.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { AnimatableImage } from './animatable/animatable-image'; -import { AnimatablePressable } from './animatable/animatable-pressable'; -import { AnimatableText } from './animatable/animatable-text'; -import { AnimatableView } from './animatable/animatable-view'; - -const Image = AnimatableImage; - -const Pressable = AnimatablePressable; - -const Text = AnimatableText; - -const View = AnimatableView; - -export { Image, Pressable, Text, View }; diff --git a/packages/core/src/native/index.ts b/packages/core/src/native/index.ts new file mode 100644 index 00000000..855b7754 --- /dev/null +++ b/packages/core/src/native/index.ts @@ -0,0 +1,17 @@ +export { Image, Pressable, Text, View } from './components'; +export { Platform } from './platform'; + +export type { + AnimatableImageAndroidProps as ImageAndroidProps, + AnimatableImageIosProps as ImageIosProps, + AnimatableImageProps as ImageProps, + AnimatablePressableAndroidProps as PressableAndroidProps, + AnimatablePressableIosProps as PressableIosProps, + AnimatablePressableProps as PressableProps, + AnimatableTextAndroidProps as TextAndroidProps, + AnimatableTextIosProps as TextIosProps, + AnimatableTextProps as TextProps, + AnimatableViewAndroidProps as ViewAndroidProps, + AnimatableViewIosProps as ViewIosProps, + AnimatableViewProps as ViewProps, +} from './animatable/types'; diff --git a/packages/core/src/native/platform.ts b/packages/core/src/native/platform.ts new file mode 100644 index 00000000..b4e9ffc3 --- /dev/null +++ b/packages/core/src/native/platform.ts @@ -0,0 +1 @@ +export { Platform } from 'react-native'; diff --git a/packages/core/src/universal/components.tsx b/packages/core/src/universal/components.tsx new file mode 100644 index 00000000..7f12770c --- /dev/null +++ b/packages/core/src/universal/components.tsx @@ -0,0 +1,8 @@ +export * from '../native/components'; + +// TODO + +// TODO: Make own web/Platform so it doesn't depend on react-native +// TODO: Make own web/StyleSheet so it doesn't depend on react-native + +// TODO: look into make own web/reanimated so it doesn't depend on react-native-reanimated diff --git a/packages/core/src/universal/index.web.tsx b/packages/core/src/universal/components.web.tsx similarity index 68% rename from packages/core/src/universal/index.web.tsx rename to packages/core/src/universal/components.web.tsx index 678c7da2..c679ab1a 100644 --- a/packages/core/src/universal/index.web.tsx +++ b/packages/core/src/universal/components.web.tsx @@ -1,3 +1,5 @@ +'use client'; + export * from '../web'; // TODO diff --git a/packages/core/src/universal/index.ts b/packages/core/src/universal/index.ts new file mode 100644 index 00000000..3e526e85 --- /dev/null +++ b/packages/core/src/universal/index.ts @@ -0,0 +1 @@ +export { Image, Pressable, Text, View } from './components'; diff --git a/packages/core/src/universal/index.tsx b/packages/core/src/universal/index.tsx deleted file mode 100644 index eec29327..00000000 --- a/packages/core/src/universal/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export * from '../native'; - -// TODO diff --git a/packages/core/src/web/components.tsx b/packages/core/src/web/components.tsx new file mode 100644 index 00000000..b7ed2854 --- /dev/null +++ b/packages/core/src/web/components.tsx @@ -0,0 +1,41 @@ +'use client'; + +import type { Slottable } from '@rn-primitives/types'; +import * as React from 'react'; +import type { DivProps, ElementFromRole, Role } from './types'; + +function DivImpl( + _props: DivProps, + _ref: React.Ref> +) { + if (process.env.NODE_ENV === 'development') { + console.log( + '`Pressable`, `Text`, and `View` from @rn-primitives/core/web are only supported on web.' + ); + } + return null; +} + +const Div = React.forwardRef(DivImpl) as ( + props: DivProps & { ref?: React.Ref> } +) => JSX.Element; + +const Image = React.forwardRef>>( + () => { + if (process.env.NODE_ENV === 'development') { + console.log('`Image` from @rn-primitives/core/web is only supported on web.'); + } + + return null; + } +); + +Image.displayName = 'ImgWeb'; + +const Pressable = Div; + +const Text = Div; + +const View = Div; + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/web/index.web.tsx b/packages/core/src/web/components.web.tsx similarity index 76% rename from packages/core/src/web/index.web.tsx rename to packages/core/src/web/components.web.tsx index eb490148..5aa30202 100644 --- a/packages/core/src/web/index.web.tsx +++ b/packages/core/src/web/components.web.tsx @@ -1,3 +1,5 @@ +'use client'; + import { Slot } from '@rn-primitives/slot'; import type { Slottable } from '@rn-primitives/types'; import * as React from 'react'; @@ -6,10 +8,10 @@ import { ROLE_TO_ELEMENT_TAG_NAME_MAP, ROLE_TO_INPUT_TYPE_MAP, } from './constants'; -import type { AriaLevel, BoxProps, ElementFromRole, Role, RoleForInputType } from './types'; +import type { AriaLevel, DivProps, ElementFromRole, Role, RoleForInputType } from './types'; -function BoxImpl( - { asChild, role, 'aria-level': ariaLevel, ...props }: BoxProps, +function DivImpl( + { asChild, role, 'aria-level': ariaLevel, ...props }: DivProps, ref: React.Ref> ) { if (asChild) { @@ -21,7 +23,7 @@ function BoxImpl( ref, 'data-rn-primitives': true, ...(element === 'input' ? { type: ROLE_TO_INPUT_TYPE_MAP[role as RoleForInputType] } : {}), - role: role && role in ROLE_TO_ELEMENT_TAG_NAME_MAP ? role : undefined, + role: role && role in ROLE_TO_ELEMENT_TAG_NAME_MAP ? undefined : role, ...props, }); } @@ -41,15 +43,15 @@ function getElement( return element as keyof HTMLElementTagNameMap; } -const Box = React.forwardRef(BoxImpl) as ( - props: BoxProps & { ref?: React.Ref> } +const Div = React.forwardRef(DivImpl) as ( + props: DivProps & { ref?: React.Ref> } ) => JSX.Element; -const Pressable = Box; +const Pressable = Div; -const Text = Box; +const Text = Div; -const View = Box; +const View = Div; const Image = React.forwardRef>>( ({ asChild, ...props }, ref) => { diff --git a/packages/core/src/web/constants.ts b/packages/core/src/web/constants.ts index 571fd2a8..f4b64381 100644 --- a/packages/core/src/web/constants.ts +++ b/packages/core/src/web/constants.ts @@ -21,7 +21,6 @@ const ROLE_TO_ELEMENT_TAG_NAME_MAP = { grid: 'table', group: 'div', heading: 'h1', - img: 'img', link: 'a', list: 'ul', listitem: 'li', diff --git a/packages/core/src/web/index.ts b/packages/core/src/web/index.ts new file mode 100644 index 00000000..a5582d11 --- /dev/null +++ b/packages/core/src/web/index.ts @@ -0,0 +1,12 @@ +export { Image, Pressable, Text, View } from './components'; +export { Platform } from './platform'; + +export type { + AriaLevel, + DivProps, + ElementFromRole, + ElementTagFromRole, + Role, + RoleForInputType, + RoleToElementMap, +} from './types'; diff --git a/packages/core/src/web/index.tsx b/packages/core/src/web/index.tsx deleted file mode 100644 index c72924e2..00000000 --- a/packages/core/src/web/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import type { Slottable } from '@rn-primitives/types'; -import * as React from 'react'; -import type { BoxProps, ElementFromRole, Role } from './types'; - -function BoxImpl( - _props: BoxProps, - _ref: React.Ref> -) { - return null; -} - -const Box = React.forwardRef(BoxImpl) as ( - props: BoxProps & { ref?: React.Ref> } -) => JSX.Element; - -const Image = React.forwardRef>>( - () => { - return null; - } -); - -Image.displayName = 'ImgWeb'; - -const Pressable = Box; - -const Text = Box; - -const View = Box; - -export { Image, Pressable, Text, View }; diff --git a/packages/core/src/web/platform.ts b/packages/core/src/web/platform.ts new file mode 100644 index 00000000..e6fe15cb --- /dev/null +++ b/packages/core/src/web/platform.ts @@ -0,0 +1,21 @@ +import type { Platform } from 'react-native'; + +const PlatformImpl: Platform = { + OS: 'web', + isTV: false, + isTesting: false, + Version: 'N/A', + constants: { + isTesting: false, + reactNativeVersion: { + major: 0, + minor: 0, + patch: 0, + }, + }, + select(specifics: Record<'ios' | 'android' | 'macos' | 'windows' | 'web' | 'native', unknown>) { + return specifics.web; + }, +}; + +export { PlatformImpl as Platform }; diff --git a/packages/core/src/web/types.ts b/packages/core/src/web/types.ts index 3085d237..f7aa34a1 100644 --- a/packages/core/src/web/types.ts +++ b/packages/core/src/web/types.ts @@ -13,7 +13,7 @@ type ElementTagFromRole = R extends Role type ElementFromRole = HTMLElementTagNameMap[ElementTagFromRole]; -type BoxProps = React.ComponentPropsWithoutRef< +type DivProps = React.ComponentPropsWithoutRef< ElementTagFromRole > & { asChild?: boolean; @@ -26,7 +26,7 @@ type AriaLevel = keyof typeof ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP; export type { AriaLevel, - BoxProps, + DivProps, ElementFromRole, ElementTagFromRole, Role, diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts index dcd7754a..a9401db8 100644 --- a/packages/core/tsup.config.ts +++ b/packages/core/tsup.config.ts @@ -3,20 +3,19 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ entry: [ 'src/index.ts', - 'src/native/index.tsx', - 'src/native/index.native.tsx', - 'src/native/animatable/index.tsx', - 'src/web/index.tsx', - 'src/web/index.web.tsx', - 'src/universal/index.tsx', - 'src/universal/index.web.tsx', + 'src/native/index.ts', + 'src/native/components.tsx', + 'src/native/components.native.tsx', + 'src/web/index.ts', + 'src/web/components.tsx', + 'src/web/components.web.tsx', + 'src/universal/index.ts', + 'src/universal/components.tsx', + 'src/universal/components.web.tsx', ], - banner: { - js: "'use client'", - }, clean: true, format: ['cjs', 'esm'], - external: ['react', './native', '../native', './web', '../web', './universal', './index'], + external: ['react', '../native', '../web', './components', './universal'], dts: true, ...options, esbuildOptions(options) { From 0bb81745ffb59a1f92cb5f3872ae165d88fe07c8 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 9 Mar 2025 14:33:15 -0400 Subject: [PATCH 036/106] feat: add nextjs-no-rn app working execpt tailwind --- apps/nextjs-no-rn/.gitignore | 36 ++++++++ apps/nextjs-no-rn/README.md | 36 ++++++++ apps/nextjs-no-rn/next.config.mjs | 68 +++++++++++++++ apps/nextjs-no-rn/package.json | 30 +++++++ apps/nextjs-no-rn/postcss.config.mjs | 9 ++ apps/nextjs-no-rn/src/app/favicon.ico | Bin 0 -> 25931 bytes apps/nextjs-no-rn/src/app/globals.css | 102 ++++++++++++++++++++++ apps/nextjs-no-rn/src/app/layout.tsx | 13 +++ apps/nextjs-no-rn/src/app/page.tsx | 18 ++++ apps/nextjs-no-rn/src/components/core.tsx | 5 ++ apps/nextjs-no-rn/src/lib/utils.ts | 6 ++ apps/nextjs-no-rn/tailwind.config.ts | 65 ++++++++++++++ apps/nextjs-no-rn/tsconfig.json | 39 +++++++++ pnpm-lock.yaml | 46 ++++++++++ 14 files changed, 473 insertions(+) create mode 100644 apps/nextjs-no-rn/.gitignore create mode 100644 apps/nextjs-no-rn/README.md create mode 100644 apps/nextjs-no-rn/next.config.mjs create mode 100644 apps/nextjs-no-rn/package.json create mode 100644 apps/nextjs-no-rn/postcss.config.mjs create mode 100644 apps/nextjs-no-rn/src/app/favicon.ico create mode 100644 apps/nextjs-no-rn/src/app/globals.css create mode 100644 apps/nextjs-no-rn/src/app/layout.tsx create mode 100644 apps/nextjs-no-rn/src/app/page.tsx create mode 100644 apps/nextjs-no-rn/src/components/core.tsx create mode 100644 apps/nextjs-no-rn/src/lib/utils.ts create mode 100644 apps/nextjs-no-rn/tailwind.config.ts create mode 100644 apps/nextjs-no-rn/tsconfig.json diff --git a/apps/nextjs-no-rn/.gitignore b/apps/nextjs-no-rn/.gitignore new file mode 100644 index 00000000..fd3dbb57 --- /dev/null +++ b/apps/nextjs-no-rn/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/nextjs-no-rn/README.md b/apps/nextjs-no-rn/README.md new file mode 100644 index 00000000..e215bc4c --- /dev/null +++ b/apps/nextjs-no-rn/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/apps/nextjs-no-rn/next.config.mjs b/apps/nextjs-no-rn/next.config.mjs new file mode 100644 index 00000000..0e2cec4c --- /dev/null +++ b/apps/nextjs-no-rn/next.config.mjs @@ -0,0 +1,68 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + swcMinify: true, + transpilePackages: [ + // 'react-native', + // 'react-native-web', + // 'expo', + // 'nativewind', + // 'react-native-css-interop', + // 'react-native-reanimated', + // '@rn-primitives/accordion', + // '@rn-primitives/alert-dialog', + // '@rn-primitives/aspect-ratio', + // '@rn-primitives/avatar', + // '@rn-primitives/checkbox', + // '@rn-primitives/collapsible', + // '@rn-primitives/context-menu', + // '@rn-primitives/dialog', + // '@rn-primitives/dropdown-menu', + // '@rn-primitives/hover-card', + // '@rn-primitives/label', + // '@rn-primitives/menubar', + // '@rn-primitives/navigation-menu', + // '@rn-primitives/popover', + // '@rn-primitives/portal', + // '@rn-primitives/progress', + // '@rn-primitives/radio-group', + // '@rn-primitives/select', + // '@rn-primitives/separator', + // '@rn-primitives/slider', + // '@rn-primitives/slot', + // '@rn-primitives/switch', + // '@rn-primitives/table', + // '@rn-primitives/tabs', + // '@rn-primitives/toast', + // '@rn-primitives/toggle', + // '@rn-primitives/toggle-group', + // '@rn-primitives/toolbar', + // '@rn-primitives/tooltip', + // '@rn-primitives/types', + '@rn-primitives/core', + ], + + experimental: { + forceSwcTransforms: true, + }, +}; + +export default withRNPrimitives(nextConfig); + +// https://github.com/expo/expo-webpack-integrations/blob/main/packages/next-adapter/src/index.ts +function withRNPrimitives(nextConfig) { + return { + ...nextConfig, + webpack(config) { + config.resolve.extensions = [ + '.web.js', + '.web.jsx', + '.web.ts', + '.web.tsx', + ...(config.resolve?.extensions ?? []), + ]; + + return config; + }, + }; +} diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json new file mode 100644 index 00000000..0205a81c --- /dev/null +++ b/apps/nextjs-no-rn/package.json @@ -0,0 +1,30 @@ +{ + "name": "@rn-primitives/nextjs-no-rn", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "clean": "rm -rf .next node_modules" + }, + "dependencies": { + "@rn-primitives/core": "workspace:*", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "next": "14.2.14", + "react": "^18", + "react-dom": "^18", + "tailwind-merge": "^2.5.3", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/apps/nextjs-no-rn/postcss.config.mjs b/apps/nextjs-no-rn/postcss.config.mjs new file mode 100644 index 00000000..2ef30fcf --- /dev/null +++ b/apps/nextjs-no-rn/postcss.config.mjs @@ -0,0 +1,9 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + +export default config; diff --git a/apps/nextjs-no-rn/src/app/favicon.ico b/apps/nextjs-no-rn/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/apps/nextjs-no-rn/src/app/globals.css b/apps/nextjs-no-rn/src/app/globals.css new file mode 100644 index 00000000..eefce97f --- /dev/null +++ b/apps/nextjs-no-rn/src/app/globals.css @@ -0,0 +1,102 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + --ring: 240 5.9% 10%; + } + + .dark:root { + --background: 240 10% 3.9%; + --foreground: 0 0% 98%; + --card: 240 10% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 240 10% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + --accent: 240 3.7% 15.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 72% 51%; + --destructive-foreground: 0 0% 98%; + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + --ring: 240 4.9% 83.9%; + } +} + +/* TODO: */ +/* Is react-native or react-native-web necessary? Would removing it cause more issues than help? */ +/* Maybe provide primitives for view, text, image, and pressable, made from html elements and then use those components. */ +/* When user is not using react-native-web, default react-native-web styling would be removed and native and web would be different (ex: native is flex and flex-col by default). We could provide a tailwind plugin or copy/paste css snippet to adjust */ + +/* Initial CSS reset from react-native-web */ +/* const initialRules = [ + // minimal top-level reset + 'html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}', + 'body{margin:0;}', + // minimal form pseudo-element reset + 'button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}', + 'input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}' +]; */ + +/* Default View Styling */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/View/index.js#L148 */ + +/* Default Text Styling */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/Text/index.js#L189 */ + +/* Default Pressable Styling Inherits from View */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/Text/index.js#L189 */ + +/* Default Image Styling */ +/* https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/Image/index.js#L378 */ + +/* TODO: Revisit this web styling - not sure if needed + seems like there no element with id __next*/ +/* React Native Web styling */ +html, +body, +#__next { + -webkit-overflow-scrolling: touch; +} +#__next { + display: flex; + flex-direction: column; + height: 100%; +} +html { + scroll-behavior: smooth; + -webkit-text-size-adjust: 100%; +} +body { + /* Allows you to scroll below the viewport; default value is visible */ + overflow-y: auto; + overscroll-behavior-y: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -ms-overflow-style: scrollbar; +} diff --git a/apps/nextjs-no-rn/src/app/layout.tsx b/apps/nextjs-no-rn/src/app/layout.tsx new file mode 100644 index 00000000..7a2807cd --- /dev/null +++ b/apps/nextjs-no-rn/src/app/layout.tsx @@ -0,0 +1,13 @@ +import './globals.css'; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx new file mode 100644 index 00000000..a84e5a69 --- /dev/null +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -0,0 +1,18 @@ +import { Core } from '~/components/core'; + +export default function Home() { + return ( +
+
+

@rn-primitives

+

+ Styled with{' '} + + NativeWind + +

+ +
+
+ ); +} diff --git a/apps/nextjs-no-rn/src/components/core.tsx b/apps/nextjs-no-rn/src/components/core.tsx new file mode 100644 index 00000000..2e678799 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/core.tsx @@ -0,0 +1,5 @@ +import { Text, Platform } from '@rn-primitives/core/web'; + +export function Core() { + return {Platform.select({ ios: 'iOS', web: 'Web' })}; +} diff --git a/apps/nextjs-no-rn/src/lib/utils.ts b/apps/nextjs-no-rn/src/lib/utils.ts new file mode 100644 index 00000000..a5ef1935 --- /dev/null +++ b/apps/nextjs-no-rn/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/apps/nextjs-no-rn/tailwind.config.ts b/apps/nextjs-no-rn/tailwind.config.ts new file mode 100644 index 00000000..f52d7e7a --- /dev/null +++ b/apps/nextjs-no-rn/tailwind.config.ts @@ -0,0 +1,65 @@ +const config = { + darkMode: 'class', + content: [ + './src/pages/**/*.{js,ts,jsx,tsx,mdx}', + './src/components/**/*.{js,ts,jsx,tsx,mdx}', + './src/app/**/*.{js,ts,jsx,tsx,mdx}', + ], + presets: [], + important: 'html', + theme: { + extend: { + colors: { + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))', + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))', + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))', + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))', + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))', + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))', + }, + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))', + }, + }, + keyframes: { + 'accordion-down': { + from: { height: '0' }, + to: { height: 'var(--radix-accordion-content-height)' }, + }, + 'accordion-up': { + from: { height: 'var(--radix-accordion-content-height)' }, + to: { height: '0' }, + }, + }, + animation: { + 'accordion-down': 'accordion-down 0.2s ease-out', + 'accordion-up': 'accordion-up 0.2s ease-out', + }, + }, + }, + plugins: [require('tailwindcss-animate')], +}; +export default config; diff --git a/apps/nextjs-no-rn/tsconfig.json b/apps/nextjs-no-rn/tsconfig.json new file mode 100644 index 00000000..b22be2cf --- /dev/null +++ b/apps/nextjs-no-rn/tsconfig.json @@ -0,0 +1,39 @@ +{ + "compilerOptions": { + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "~/*": [ + "./src/*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ], + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 709cb6b2..4c03dc1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -692,6 +692,52 @@ importers: specifier: ^5 version: 5.7.2 + apps/nextjs-no-rn: + dependencies: + '@rn-primitives/core': + specifier: workspace:* + version: link:../../packages/core + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + next: + specifier: 14.2.14 + version: 14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: + specifier: ^18 + version: 18.3.1 + react-dom: + specifier: ^18 + version: 18.3.1(react@18.3.1) + tailwind-merge: + specifier: ^2.5.3 + version: 2.5.4 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.15) + devDependencies: + '@types/node': + specifier: ^20 + version: 20.17.7 + '@types/react': + specifier: ^18 + version: 18.3.12 + '@types/react-dom': + specifier: ^18 + version: 18.3.1 + postcss: + specifier: ^8 + version: 8.4.49 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.15 + typescript: + specifier: ^5 + version: 5.7.2 + packages/accordion: dependencies: '@radix-ui/react-accordion': From 184d641f0c1f328d60c6688ec3a2220c77c3cf61 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 9 Mar 2025 19:31:26 -0400 Subject: [PATCH 037/106] fix: get tailwind working nextjs no rn --- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/tailwind.config.ts | 1 - pnpm-lock.yaml | 53 ++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index 0205a81c..af80ce63 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -23,6 +23,7 @@ "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", + "autoprefixer": "^10.4.21", "postcss": "^8", "tailwindcss": "^3.4.1", "typescript": "^5" diff --git a/apps/nextjs-no-rn/tailwind.config.ts b/apps/nextjs-no-rn/tailwind.config.ts index f52d7e7a..51030d35 100644 --- a/apps/nextjs-no-rn/tailwind.config.ts +++ b/apps/nextjs-no-rn/tailwind.config.ts @@ -5,7 +5,6 @@ const config = { './src/components/**/*.{js,ts,jsx,tsx,mdx}', './src/app/**/*.{js,ts,jsx,tsx,mdx}', ], - presets: [], important: 'html', theme: { extend: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4c03dc1b..2b18ab3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -728,6 +728,9 @@ importers: '@types/react-dom': specifier: ^18 version: 18.3.1 + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.4.49) postcss: specifier: ^8 version: 8.4.49 @@ -4793,6 +4796,13 @@ packages: peerDependencies: postcss: ^8.1.0 + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -4959,6 +4969,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -5034,6 +5049,9 @@ packages: caniuse-lite@1.0.30001684: resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} + caniuse-lite@1.0.30001703: + resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5459,6 +5477,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.113: + resolution: {integrity: sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==} + electron-to-chromium@1.5.64: resolution: {integrity: sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==} @@ -7145,6 +7166,9 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -12611,6 +12635,16 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 + autoprefixer@10.4.21(postcss@8.4.49): + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001703 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 @@ -12840,6 +12874,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001703 + electron-to-chromium: 1.5.113 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.4) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -12916,6 +12957,8 @@ snapshots: caniuse-lite@1.0.30001684: {} + caniuse-lite@1.0.30001703: {} + ccount@2.0.1: {} chalk@2.4.2: @@ -13308,6 +13351,8 @@ snapshots: ee-first@1.1.1: {} + electron-to-chromium@1.5.113: {} + electron-to-chromium@1.5.64: {} emmet@2.4.11: @@ -15575,6 +15620,8 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.19: {} + nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -17312,6 +17359,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.1(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): dependencies: react: 18.3.1 From 070126d50b3747dab039b595986fd1ba83fef8f2 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 9 Mar 2025 19:35:51 -0400 Subject: [PATCH 038/106] feat: remove core from transpiled nextjs no rn --- apps/nextjs-no-rn/next.config.mjs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/nextjs-no-rn/next.config.mjs b/apps/nextjs-no-rn/next.config.mjs index 0e2cec4c..b24b38c6 100644 --- a/apps/nextjs-no-rn/next.config.mjs +++ b/apps/nextjs-no-rn/next.config.mjs @@ -39,7 +39,7 @@ const nextConfig = { // '@rn-primitives/toolbar', // '@rn-primitives/tooltip', // '@rn-primitives/types', - '@rn-primitives/core', + // '@rn-primitives/core', ], experimental: { @@ -49,7 +49,6 @@ const nextConfig = { export default withRNPrimitives(nextConfig); -// https://github.com/expo/expo-webpack-integrations/blob/main/packages/next-adapter/src/index.ts function withRNPrimitives(nextConfig) { return { ...nextConfig, From 1287ca5c1bae61a7b70bc4071de28e22e301fa2f Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 9 Mar 2025 21:08:09 -0400 Subject: [PATCH 039/106] feat(core): add universal components --- apps/nextjs-no-rn/src/components/core.tsx | 22 +- packages/core/package.json | 1 + .../animatable/animatable-pressable.tsx | 25 ++- packages/core/src/native/animatable/types.ts | 3 + packages/core/src/native/index.ts | 1 + packages/core/src/pressable/index.ts | 1 - .../src/pressable/native/pressable-native.tsx | 3 - packages/core/src/pressable/pressable.tsx | 1 - packages/core/src/pressable/pressable.web.tsx | 195 ------------------ packages/core/src/pressable/roles.ts | 19 -- packages/core/src/universal/components.tsx | 50 ++++- .../core/src/universal/components.web.tsx | 72 ++++++- packages/core/src/universal/index.ts | 3 + packages/core/src/universal/platform.ts | 1 + packages/core/src/universal/platform.web.ts | 1 + packages/core/src/universal/types.ts | 83 ++++++++ packages/core/src/web/components.tsx | 4 +- packages/core/src/web/components.web.tsx | 8 +- packages/core/src/web/index.ts | 4 + packages/core/src/web/types.ts | 10 + packages/core/tsup.config.ts | 6 +- pnpm-lock.yaml | 3 + 22 files changed, 275 insertions(+), 241 deletions(-) delete mode 100644 packages/core/src/pressable/index.ts delete mode 100644 packages/core/src/pressable/native/pressable-native.tsx delete mode 100644 packages/core/src/pressable/pressable.tsx delete mode 100644 packages/core/src/pressable/pressable.web.tsx delete mode 100644 packages/core/src/pressable/roles.ts create mode 100644 packages/core/src/universal/platform.ts create mode 100644 packages/core/src/universal/platform.web.ts create mode 100644 packages/core/src/universal/types.ts diff --git a/apps/nextjs-no-rn/src/components/core.tsx b/apps/nextjs-no-rn/src/components/core.tsx index 2e678799..09e4a260 100644 --- a/apps/nextjs-no-rn/src/components/core.tsx +++ b/apps/nextjs-no-rn/src/components/core.tsx @@ -1,5 +1,23 @@ -import { Text, Platform } from '@rn-primitives/core/web'; +'use client'; +import { Text, Pressable, View, Image, Platform, type PressableRef } from '@rn-primitives/core'; +import * as React from 'react'; export function Core() { - return {Platform.select({ ios: 'iOS', web: 'Web' })}; + const ref = React.useRef(null); + return ( + + + alert('Pressed')}> + {Platform.select({ ios: 'iOS', web: 'Web' })} Pressable + + { + console.log('ref', ref.current); + ref.current?.press?.(); + }} + > + Press other Pressable + + + ); } diff --git a/packages/core/package.json b/packages/core/package.json index 9cf6e1f1..d27cfabe 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -39,6 +39,7 @@ }, "dependencies": { "@react-native/normalize-colors": "^0.77.1", + "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*" diff --git a/packages/core/src/native/animatable/animatable-pressable.tsx b/packages/core/src/native/animatable/animatable-pressable.tsx index d34f80df..19733931 100644 --- a/packages/core/src/native/animatable/animatable-pressable.tsx +++ b/packages/core/src/native/animatable/animatable-pressable.tsx @@ -1,23 +1,36 @@ 'use client'; +import { useAugmentedRef } from '@rn-primitives/hooks'; import { Slot } from '@rn-primitives/slot'; -import type { PressableRef } from '@rn-primitives/types'; +import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; import * as React from 'react'; import { Pressable } from 'react-native'; import Animated from 'react-native-reanimated'; -import type { AnimatablePressableProps } from './types'; +import type { AnimatablePressableProps, AnimatablePressableRef } from './types'; const AnimatedPressable = Animated.createAnimatedComponent(Pressable); -const AnimatablePressable = React.forwardRef( +const AnimatablePressable = React.forwardRef( ({ asChild, ...props }, ref) => { + const methods = React.useMemo(() => { + return { + press: () => { + if (typeof props.onPress === 'function') { + props.onPress(EmptyGestureResponderEvent); + } + }, + }; + }, [props.onPress]); + + const triggerRef = useAugmentedRef({ ref, methods }); + if (asChild) { - return ; + return ; } if (props.isAnimated) { - return ; + return ; } - return ; + return ; } ); diff --git a/packages/core/src/native/animatable/types.ts b/packages/core/src/native/animatable/types.ts index 857792c6..c7382792 100644 --- a/packages/core/src/native/animatable/types.ts +++ b/packages/core/src/native/animatable/types.ts @@ -3,6 +3,7 @@ import type { AndroidOnlyViewStyleKeys, IosOnlyViewPropKeys, IosOnlyViewStyleKeys, + PressableRef, RemoveAndroidOnlyImageProps, RemoveAndroidOnlyTextProps, RemoveAndroidOnlyViewProps, @@ -51,6 +52,7 @@ type RNPressableProps = Slottable; type AnimatablePressableProps = | (AnimatedPressableProps & { isAnimated: true }) | (RNPressableProps & { isAnimated?: false | undefined }); +type AnimatablePressableRef = PressableRef & { press?: () => void }; type AnimatedPressableStyle = AnimatedPressableProps['style']; type AnimatedPressableCbStyle = Exclude>; @@ -129,6 +131,7 @@ export type { AnimatablePressableAndroidProps, AnimatablePressableIosProps, AnimatablePressableProps, + AnimatablePressableRef, AnimatableTextAndroidProps, AnimatableTextIosProps, AnimatableTextProps, diff --git a/packages/core/src/native/index.ts b/packages/core/src/native/index.ts index 855b7754..504e2236 100644 --- a/packages/core/src/native/index.ts +++ b/packages/core/src/native/index.ts @@ -8,6 +8,7 @@ export type { AnimatablePressableAndroidProps as PressableAndroidProps, AnimatablePressableIosProps as PressableIosProps, AnimatablePressableProps as PressableProps, + AnimatablePressableRef as PressableRef, AnimatableTextAndroidProps as TextAndroidProps, AnimatableTextIosProps as TextIosProps, AnimatableTextProps as TextProps, diff --git a/packages/core/src/pressable/index.ts b/packages/core/src/pressable/index.ts deleted file mode 100644 index 64b2f898..00000000 --- a/packages/core/src/pressable/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './pressable'; diff --git a/packages/core/src/pressable/native/pressable-native.tsx b/packages/core/src/pressable/native/pressable-native.tsx deleted file mode 100644 index 2d333676..00000000 --- a/packages/core/src/pressable/native/pressable-native.tsx +++ /dev/null @@ -1,3 +0,0 @@ -// TODO: use universal props - -export { Pressable } from 'react-native'; diff --git a/packages/core/src/pressable/pressable.tsx b/packages/core/src/pressable/pressable.tsx deleted file mode 100644 index b7ebd246..00000000 --- a/packages/core/src/pressable/pressable.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from './native/pressable-native'; diff --git a/packages/core/src/pressable/pressable.web.tsx b/packages/core/src/pressable/pressable.web.tsx deleted file mode 100644 index 9aebabc8..00000000 --- a/packages/core/src/pressable/pressable.web.tsx +++ /dev/null @@ -1,195 +0,0 @@ -import { useWebPressableProps } from '@rn-primitives/utils'; -import * as React from 'react'; -import type { PressableProps as RNPressableProps } from 'react-native'; - -type HtmlComponentProps = React.ComponentPropsWithoutRef< - T extends Role ? (typeof roleComponents)[Role] : 'div' ->; -type HtmlComponentRef = React.Ref< - T extends Role ? HTMLElementTagNameMap[(typeof roleComponents)[T]] : HTMLButtonElement ->; - -type PressableWebProps = PressableProps & { - role?: T extends Role ? (typeof roleComponents)[Role] : 'button'; - web?: HtmlComponentProps; - native?: any; -}; - -// TODO: type props an share with native universal + use native and web props -function Pressable( - { native: _native, web, role = 'button', ...props }: PressableWebProps, - ref: HtmlComponentRef -) { - const { children, events, style } = useWebPressableProps({ - styleProp: props.style, - childrenProp: props.children, - webProps: web, - onPressInProp: props.onPressIn, - onPressOutProp: props.onPressOut, - }); - - const mappedProps = mapPressableToButtonProps({ ...props }); - const Component = getComponent(role); - - return ( - // @ts-ignore - - ); -} - -export { Pressable }; - -type PressableProps = Pick< - RNPressableProps, - | 'style' - | 'children' - | 'disabled' - | 'role' - | 'aria-busy' - | 'aria-checked' - | 'aria-expanded' - | 'aria-hidden' - | 'aria-label' - | 'aria-selected' - | 'aria-labelledby' - | 'aria-live' - | 'aria-modal' -> & { - onPress?: () => void; - onPressIn?: () => void; - onPressOut?: () => void; -}; - -function mapPressableToButtonProps( - pressableProps: PressableProps -): React.HTMLAttributes< - T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : HTMLDivElement -> { - const { - onPress, - onPressIn, - onPressOut, - disabled, - role, - 'aria-busy': ariaBusy, - 'aria-checked': ariaChecked, - 'aria-expanded': ariaExpanded, - 'aria-hidden': ariaHidden, - 'aria-label': ariaLabel, - 'aria-selected': ariaSelected, - 'aria-labelledby': ariaLabelledby, - 'aria-live': ariaLive, - 'aria-modal': ariaModal, - } = pressableProps; - - const handlePress = () => { - if (disabled || !onPress) return; - onPress?.(); - }; - - const handlePressIn = () => { - if (disabled) return; - onPressIn?.(); - }; - - const handlePressOut = () => { - if (disabled) return; - onPressOut?.(); - }; - - const props: React.HTMLAttributes< - T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : HTMLDivElement - > = {}; - - if (role === 'button') { - (props as React.ButtonHTMLAttributes).type = 'button'; - } - - if (disabled) { - (props as React.ButtonHTMLAttributes).disabled = true; - } - - if (onPress) { - props.onClick = handlePress; - } - - if (onPressIn) { - props.onMouseDown = handlePressIn; - props.onTouchStart = handlePressIn; - } - - if (onPressOut) { - props.onMouseUp = handlePressOut; - props.onTouchEnd = handlePressOut; - } - - if (ariaLabel) { - props['aria-label'] = ariaLabel; - } - - if (ariaBusy) { - props['aria-busy'] = ariaBusy; - } - - if (ariaChecked) { - props['aria-checked'] = ariaChecked; - } - - if (ariaExpanded) { - props['aria-expanded'] = ariaExpanded; - } - - if (ariaHidden) { - props['aria-hidden'] = ariaHidden; - } - - if (ariaSelected) { - props['aria-selected'] = ariaSelected; - } - - if (ariaLabelledby) { - props['aria-labelledby'] = ariaLabelledby; - } - - if (ariaLive) { - props['aria-live'] = ariaLive; - } - - if (ariaModal) { - props['aria-modal'] = ariaModal; - } - - const accessibilityRole = role ?? 'button'; - - // Only set role if it's not the default 'button' - if (role && role !== 'button') { - props.role = accessibilityRole; - } - - return props; -} - -const roleComponents = { - article: 'article', - banner: 'header', - button: 'button', - complementary: 'aside', - contentinfo: 'footer', - figure: 'figure', - form: 'form', - list: 'ul', - listitem: 'li', - main: 'main', - navigation: 'nav', - region: 'section', -} as const; - -type Role = keyof typeof roleComponents; - -function getComponent(role: Role | string) { - if (role === 'button') { - return 'button'; - } - - return role in roleComponents ? roleComponents[role as Role] : 'div'; -} diff --git a/packages/core/src/pressable/roles.ts b/packages/core/src/pressable/roles.ts deleted file mode 100644 index 1dbc7ddf..00000000 --- a/packages/core/src/pressable/roles.ts +++ /dev/null @@ -1,19 +0,0 @@ -const ROLES = { - article: 'article', - banner: 'header', - button: 'button', - complementary: 'aside', - contentinfo: 'footer', - figure: 'figure', - form: 'form', - list: 'ul', - listitem: 'li', - main: 'main', - navigation: 'nav', - region: 'section', -} as const; - -type Role = keyof typeof ROLES; - -export { ROLES }; -export type { Role }; diff --git a/packages/core/src/universal/components.tsx b/packages/core/src/universal/components.tsx index 7f12770c..2ac53eed 100644 --- a/packages/core/src/universal/components.tsx +++ b/packages/core/src/universal/components.tsx @@ -1,8 +1,48 @@ -export * from '../native/components'; +import * as React from 'react'; +import { + Image as ImageNative, + Pressable as PressableNative, + Text as TextNative, + type PressableRef as TriggerNativeRef, + View as ViewNative, +} from '../native'; +import type { Role } from '../web'; +import type { ImageProps, PressableProps, PressableRef, TextProps, ViewProps } from './types'; -// TODO +function Image({ src, role, web: _web, native, ...props }: ImageProps) { + return ( + + ); +} -// TODO: Make own web/Platform so it doesn't depend on react-native -// TODO: Make own web/StyleSheet so it doesn't depend on react-native +function PressableImpl( + { role, web: _web, native, ...props }: PressableProps, + ref?: React.Ref +) { + return ( + } + role={role === 'paragraph' ? undefined : role} + {...props} + {...native} + /> + ); +} +const Pressable = React.forwardRef(PressableImpl) as ( + props: PressableProps & { ref?: React.Ref } +) => JSX.Element; -// TODO: look into make own web/reanimated so it doesn't depend on react-native-reanimated +function Text({ role, web: _web, native, ...props }: TextProps) { + return ; +} + +function View({ role, web: _web, native, ...props }: ViewProps) { + return ; +} + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/universal/components.web.tsx b/packages/core/src/universal/components.web.tsx index c679ab1a..d30e1245 100644 --- a/packages/core/src/universal/components.web.tsx +++ b/packages/core/src/universal/components.web.tsx @@ -1,5 +1,73 @@ 'use client'; -export * from '../web'; +import { useAugmentedRef } from '@rn-primitives/hooks'; +import { useWebPressableProps } from '@rn-primitives/utils'; +import * as React from 'react'; +import { + Image as ImageWeb, + Pressable as PressableWeb, + type Role, + Text as TextWeb, + View as ViewWeb, +} from '../web'; +import type { ImageProps, PressableProps, PressableRef, TextProps, ViewProps } from './types'; -// TODO +function Image({ web, native: _native, style, ...props }: ImageProps) { + return ; +} + +function PressableImpl( + { + native: _native, + web: webProps, + children: childrenProp, + onPress: onPressProp, + onPressIn: onPressInProp, + onPressOut: onPressOutProp, + style: styleProp, + ...props + }: PressableProps, + ref: React.Ref +) { + const methods = React.useMemo(() => { + return { + press: () => { + onPressProp?.(); + }, + }; + }, [onPressProp]); + const augmentedRef = useAugmentedRef({ ref, methods }); + const { children, events, style } = useWebPressableProps({ + styleProp, + childrenProp, + webProps, + onPressInProp, + onPressOutProp, + }); + + return ( + + ); +} + +const Pressable = React.forwardRef(PressableImpl) as ( + props: PressableProps & { ref?: React.Ref } +) => JSX.Element; + +function Text({ web, native: _native, style, ...props }: TextProps) { + return ; +} + +function View({ web, native: _native, style, ...props }: ViewProps) { + return ; +} + +export { Image, Pressable, Text, View }; diff --git a/packages/core/src/universal/index.ts b/packages/core/src/universal/index.ts index 3e526e85..3ad2e127 100644 --- a/packages/core/src/universal/index.ts +++ b/packages/core/src/universal/index.ts @@ -1 +1,4 @@ export { Image, Pressable, Text, View } from './components'; +export { Platform } from './platform'; + +export type { ImageProps, PressableProps, PressableRef, TextProps, ViewProps } from './types'; diff --git a/packages/core/src/universal/platform.ts b/packages/core/src/universal/platform.ts new file mode 100644 index 00000000..fdf9e381 --- /dev/null +++ b/packages/core/src/universal/platform.ts @@ -0,0 +1 @@ +export { Platform } from '../native'; diff --git a/packages/core/src/universal/platform.web.ts b/packages/core/src/universal/platform.web.ts new file mode 100644 index 00000000..708547cd --- /dev/null +++ b/packages/core/src/universal/platform.web.ts @@ -0,0 +1 @@ +export { Platform } from '../web'; diff --git a/packages/core/src/universal/types.ts b/packages/core/src/universal/types.ts new file mode 100644 index 00000000..1e981d5b --- /dev/null +++ b/packages/core/src/universal/types.ts @@ -0,0 +1,83 @@ +import type { Prettify } from '@rn-primitives/types'; +import type { + ImageProps as RNImageProps, + PressableProps as RNPressableProps, + TextProps as RNTextProps, + ViewProps as RNViewProps, +} from 'react-native'; + +import type { + ImageProps as ImagePropsNative, + PressableProps as PressablePropsNative, + TextProps as TextPropsNative, + ViewProps as ViewPropsNative, +} from '../native'; +import type { + ImageProps as ImagePropsWeb, + PressableProps as PressablePropsWeb, + TextProps as TextPropsWeb, + ViewProps as ViewPropsWeb, +} from '../web'; + +import type { ROLE_TO_ELEMENT_TAG_NAME_MAP } from '../web/constants'; + +type Role = keyof typeof ROLE_TO_ELEMENT_TAG_NAME_MAP; + +type BaseKeys = + | 'style' + | 'children' + | 'aria-busy' + | 'aria-checked' + | 'aria-expanded' + | 'aria-hidden' + | 'aria-label' + | 'aria-selected' + | 'aria-labelledby' + | 'aria-live' + | 'aria-modal'; + +type ImageProps = Prettify< + Pick> & { + className?: string; + } +> & { + src: string; + role?: Role; + native?: ImagePropsNative; + web?: ImagePropsWeb; +}; + +type PressableProps = Prettify< + Pick & { + onPress?: () => void; + onPressIn?: () => void; + onPressOut?: () => void; + } & { + className?: string; + role?: Role; + native?: PressablePropsNative; + web?: PressablePropsWeb; + } +>; + +type PressableRef = { press?: () => void }; + +type TextProps = Prettify< + Pick & { + className?: string; + role?: Role; + native?: TextPropsNative; + web?: TextPropsWeb; + } +>; + +type ViewProps = Prettify< + Pick & { + className?: string; + role?: Role; + native?: ViewPropsNative; + web?: ViewPropsWeb; + } +>; + +export type { ImageProps, PressableProps, PressableRef, TextProps, ViewProps }; diff --git a/packages/core/src/web/components.tsx b/packages/core/src/web/components.tsx index b7ed2854..78d1ff67 100644 --- a/packages/core/src/web/components.tsx +++ b/packages/core/src/web/components.tsx @@ -4,7 +4,7 @@ import type { Slottable } from '@rn-primitives/types'; import * as React from 'react'; import type { DivProps, ElementFromRole, Role } from './types'; -function DivImpl( +function DivImpl( _props: DivProps, _ref: React.Ref> ) { @@ -16,7 +16,7 @@ function DivImpl( return null; } -const Div = React.forwardRef(DivImpl) as ( +const Div = React.forwardRef(DivImpl) as ( props: DivProps & { ref?: React.Ref> } ) => JSX.Element; diff --git a/packages/core/src/web/components.web.tsx b/packages/core/src/web/components.web.tsx index 5aa30202..bebf5101 100644 --- a/packages/core/src/web/components.web.tsx +++ b/packages/core/src/web/components.web.tsx @@ -10,9 +10,9 @@ import { } from './constants'; import type { AriaLevel, DivProps, ElementFromRole, Role, RoleForInputType } from './types'; -function DivImpl( +function DivImpl( { asChild, role, 'aria-level': ariaLevel, ...props }: DivProps, - ref: React.Ref> + ref?: React.Ref> ) { if (asChild) { return ; @@ -28,7 +28,7 @@ function DivImpl( }); } -function getElement( +function getElement( role: (React.AriaRole & T) | undefined, ariaLevel?: number ) { @@ -43,7 +43,7 @@ function getElement( return element as keyof HTMLElementTagNameMap; } -const Div = React.forwardRef(DivImpl) as ( +const Div = React.forwardRef(DivImpl) as ( props: DivProps & { ref?: React.Ref> } ) => JSX.Element; diff --git a/packages/core/src/web/index.ts b/packages/core/src/web/index.ts index a5582d11..d73b6508 100644 --- a/packages/core/src/web/index.ts +++ b/packages/core/src/web/index.ts @@ -6,7 +6,11 @@ export type { DivProps, ElementFromRole, ElementTagFromRole, + ImageProps, + PressableProps, Role, RoleForInputType, RoleToElementMap, + TextProps, + ViewProps, } from './types'; diff --git a/packages/core/src/web/types.ts b/packages/core/src/web/types.ts index f7aa34a1..b6b82769 100644 --- a/packages/core/src/web/types.ts +++ b/packages/core/src/web/types.ts @@ -1,3 +1,4 @@ +import type { Slottable } from '@rn-primitives/types'; import type { ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP, ROLE_TO_ELEMENT_TAG_NAME_MAP, @@ -24,12 +25,21 @@ type RoleForInputType = keyof typeof ROLE_TO_INPUT_TYPE_MAP; type AriaLevel = keyof typeof ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP; +type PressableProps = DivProps; +type TextProps = DivProps; +type ViewProps = DivProps; +type ImageProps = Slottable>; + export type { AriaLevel, DivProps, ElementFromRole, ElementTagFromRole, + ImageProps, + PressableProps, Role, RoleForInputType, RoleToElementMap, + TextProps, + ViewProps, }; diff --git a/packages/core/tsup.config.ts b/packages/core/tsup.config.ts index a9401db8..e5639f97 100644 --- a/packages/core/tsup.config.ts +++ b/packages/core/tsup.config.ts @@ -6,16 +6,20 @@ export default defineConfig((options: Options) => ({ 'src/native/index.ts', 'src/native/components.tsx', 'src/native/components.native.tsx', + 'src/native/platform.ts', 'src/web/index.ts', 'src/web/components.tsx', 'src/web/components.web.tsx', + 'src/web/platform.ts', 'src/universal/index.ts', 'src/universal/components.tsx', 'src/universal/components.web.tsx', + 'src/universal/platform.ts', + 'src/universal/platform.web.ts', ], clean: true, format: ['cjs', 'esm'], - external: ['react', '../native', '../web', './components', './universal'], + external: ['react', '../native', '../web', './components', './universal', './platform'], dts: true, ...options, esbuildOptions(options) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b18ab3b..6d672602 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1067,6 +1067,9 @@ importers: '@react-native/normalize-colors': specifier: ^0.77.1 version: 0.77.1 + '@rn-primitives/hooks': + specifier: workspace:* + version: link:../hooks '@rn-primitives/slot': specifier: workspace:* version: link:../slot From 553a4747d45d26ebae9b7c8cb21407a5f646e4af Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 9 Mar 2025 21:23:37 -0400 Subject: [PATCH 040/106] feat(core): use click for web press ref event --- apps/nextjs-no-rn/src/app/page.tsx | 13 ++++++----- .../core/src/universal/components.web.tsx | 23 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index a84e5a69..6d827899 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -1,3 +1,4 @@ +import { Text, View } from '@rn-primitives/core'; import { Core } from '~/components/core'; export default function Home() { @@ -5,12 +6,12 @@ export default function Home() {

@rn-primitives

-

- Styled with{' '} - - NativeWind - -

+ +

Styled with Tailwind

+ + No react-native/react-native + +
diff --git a/packages/core/src/universal/components.web.tsx b/packages/core/src/universal/components.web.tsx index d30e1245..b4bd91ad 100644 --- a/packages/core/src/universal/components.web.tsx +++ b/packages/core/src/universal/components.web.tsx @@ -1,6 +1,5 @@ 'use client'; -import { useAugmentedRef } from '@rn-primitives/hooks'; import { useWebPressableProps } from '@rn-primitives/utils'; import * as React from 'react'; import { @@ -29,14 +28,20 @@ function PressableImpl( }: PressableProps, ref: React.Ref ) { - const methods = React.useMemo(() => { - return { - press: () => { - onPressProp?.(); - }, - }; - }, [onPressProp]); - const augmentedRef = useAugmentedRef({ ref, methods }); + const augmentedRef = React.useRef(null); + React.useImperativeHandle( + ref, + () => { + return { + ...augmentedRef.current, + press: () => { + augmentedRef.current?.click(); + }, + } as PressableRef; + }, + [augmentedRef.current] + ); + const { children, events, style } = useWebPressableProps({ styleProp, childrenProp, From e8180616edea8a5e9f487ce8fd382411f8400971 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Thu, 13 Mar 2025 15:50:10 -0400 Subject: [PATCH 041/106] feat(core): use as instead of converting role --- apps/nextjs-no-rn/src/components/core.tsx | 8 +- packages/core/src/universal/components.tsx | 42 ++++----- .../core/src/universal/components.web.tsx | 56 +++++++++--- packages/core/src/universal/types.ts | 23 +++-- packages/core/src/web/components.tsx | 11 +-- packages/core/src/web/components.web.tsx | 88 +++++++++++-------- packages/core/src/web/constants.ts | 87 ------------------ packages/core/src/web/index.ts | 8 +- packages/core/src/web/types.ts | 44 ++-------- 9 files changed, 142 insertions(+), 225 deletions(-) delete mode 100644 packages/core/src/web/constants.ts diff --git a/apps/nextjs-no-rn/src/components/core.tsx b/apps/nextjs-no-rn/src/components/core.tsx index 09e4a260..411c3153 100644 --- a/apps/nextjs-no-rn/src/components/core.tsx +++ b/apps/nextjs-no-rn/src/components/core.tsx @@ -1,5 +1,5 @@ 'use client'; -import { Text, Pressable, View, Image, Platform, type PressableRef } from '@rn-primitives/core'; +import { Image, Platform, Pressable, Text, View, type PressableRef } from '@rn-primitives/core'; import * as React from 'react'; export function Core() { @@ -7,8 +7,10 @@ export function Core() { return ( - alert('Pressed')}> - {Platform.select({ ios: 'iOS', web: 'Web' })} Pressable + alert('Pressed')}> + + {Platform.select({ ios: 'iOS', web: 'Web' })} Pressable with Nested text{' '} + { diff --git a/packages/core/src/universal/components.tsx b/packages/core/src/universal/components.tsx index 2ac53eed..750fc2a7 100644 --- a/packages/core/src/universal/components.tsx +++ b/packages/core/src/universal/components.tsx @@ -6,43 +6,37 @@ import { type PressableRef as TriggerNativeRef, View as ViewNative, } from '../native'; -import type { Role } from '../web'; -import type { ImageProps, PressableProps, PressableRef, TextProps, ViewProps } from './types'; +import type { + ElementTag, + ImageProps, + PressableProps, + PressableRef, + TextProps, + ViewProps, +} from './types'; -function Image({ src, role, web: _web, native, ...props }: ImageProps) { - return ( - - ); +function Image({ src, web: _web, native, ...props }: ImageProps) { + return ; } -function PressableImpl( - { role, web: _web, native, ...props }: PressableProps, +function PressableImpl( + { web: _web, native, ...props }: PressableProps, ref?: React.Ref ) { return ( - } - role={role === 'paragraph' ? undefined : role} - {...props} - {...native} - /> + } {...props} {...native} /> ); } -const Pressable = React.forwardRef(PressableImpl) as ( +const Pressable = React.forwardRef(PressableImpl) as ( props: PressableProps & { ref?: React.Ref } ) => JSX.Element; -function Text({ role, web: _web, native, ...props }: TextProps) { - return ; +function Text({ web: _web, native, ...props }: TextProps) { + return ; } -function View({ role, web: _web, native, ...props }: ViewProps) { - return ; +function View({ web: _web, native, ...props }: ViewProps) { + return ; } export { Image, Pressable, Text, View }; diff --git a/packages/core/src/universal/components.web.tsx b/packages/core/src/universal/components.web.tsx index b4bd91ad..13e3739c 100644 --- a/packages/core/src/universal/components.web.tsx +++ b/packages/core/src/universal/components.web.tsx @@ -1,21 +1,29 @@ 'use client'; -import { useWebPressableProps } from '@rn-primitives/utils'; +import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/utils'; import * as React from 'react'; import { Image as ImageWeb, Pressable as PressableWeb, - type Role, Text as TextWeb, View as ViewWeb, + type ElementTag, } from '../web'; import type { ImageProps, PressableProps, PressableRef, TextProps, ViewProps } from './types'; +function ImageWithStyle({ web, native: _native, style: styleProp, ...props }: ImageProps) { + const style = React.useMemo(() => rnStyleToWebStyle(styleProp), [styleProp]); + return ; +} + function Image({ web, native: _native, style, ...props }: ImageProps) { + if (style) { + return ; + } return ; } -function PressableImpl( +function PressableImpl( { native: _native, web: webProps, @@ -28,7 +36,7 @@ function PressableImpl( }: PressableProps, ref: React.Ref ) { - const augmentedRef = React.useRef(null); + const augmentedRef = React.useRef(null); React.useImperativeHandle( ref, () => { @@ -52,27 +60,53 @@ function PressableImpl( return ( ['web'])} {...events} /> ); } -const Pressable = React.forwardRef(PressableImpl) as ( +const Pressable = React.forwardRef(PressableImpl) as ( props: PressableProps & { ref?: React.Ref } ) => JSX.Element; -function Text({ web, native: _native, style, ...props }: TextProps) { - return ; +function TextWithStyle({ + web, + native: _native, + style: styleProp, + ...props +}: TextProps) { + const style = React.useMemo(() => rnStyleToWebStyle(styleProp), [styleProp]); + return ['web'])} />; +} + +function Text({ web, native: _native, style, ...props }: TextProps) { + if (style) { + return ; + } + return ['web'])} />; +} + +function ViewWithStyle({ + web, + native: _native, + style: styleProp, + ...props +}: ViewProps) { + const style = React.useMemo(() => rnStyleToWebStyle(styleProp), [styleProp]); + return ['web'])} />; } -function View({ web, native: _native, style, ...props }: ViewProps) { - return ; +function View({ web, native: _native, style, ...props }: ViewProps) { + if (style) { + return ; + } + return ['web'])} />; } export { Image, Pressable, Text, View }; diff --git a/packages/core/src/universal/types.ts b/packages/core/src/universal/types.ts index 1e981d5b..dfcb7ab4 100644 --- a/packages/core/src/universal/types.ts +++ b/packages/core/src/universal/types.ts @@ -2,10 +2,10 @@ import type { Prettify } from '@rn-primitives/types'; import type { ImageProps as RNImageProps, PressableProps as RNPressableProps, + Role as RNRole, TextProps as RNTextProps, ViewProps as RNViewProps, } from 'react-native'; - import type { ImageProps as ImagePropsNative, PressableProps as PressablePropsNative, @@ -18,10 +18,7 @@ import type { TextProps as TextPropsWeb, ViewProps as ViewPropsWeb, } from '../web'; - -import type { ROLE_TO_ELEMENT_TAG_NAME_MAP } from '../web/constants'; - -type Role = keyof typeof ROLE_TO_ELEMENT_TAG_NAME_MAP; +import { ElementTag } from '../web/types'; type BaseKeys = | 'style' @@ -42,19 +39,19 @@ type ImageProps = Prettify< } > & { src: string; - role?: Role; + role?: RNRole; native?: ImagePropsNative; web?: ImagePropsWeb; }; -type PressableProps = Prettify< +type PressableProps = Prettify< Pick & { onPress?: () => void; onPressIn?: () => void; onPressOut?: () => void; } & { className?: string; - role?: Role; + role?: RNRole; native?: PressablePropsNative; web?: PressablePropsWeb; } @@ -62,22 +59,22 @@ type PressableProps = Prettify< type PressableRef = { press?: () => void }; -type TextProps = Prettify< +type TextProps = Prettify< Pick & { className?: string; - role?: Role; + role?: RNRole; native?: TextPropsNative; web?: TextPropsWeb; } >; -type ViewProps = Prettify< +type ViewProps = Prettify< Pick & { className?: string; - role?: Role; + role?: RNRole; native?: ViewPropsNative; web?: ViewPropsWeb; } >; -export type { ImageProps, PressableProps, PressableRef, TextProps, ViewProps }; +export type { ElementTag, ImageProps, PressableProps, PressableRef, TextProps, ViewProps }; diff --git a/packages/core/src/web/components.tsx b/packages/core/src/web/components.tsx index 78d1ff67..4f35081a 100644 --- a/packages/core/src/web/components.tsx +++ b/packages/core/src/web/components.tsx @@ -2,12 +2,9 @@ import type { Slottable } from '@rn-primitives/types'; import * as React from 'react'; -import type { DivProps, ElementFromRole, Role } from './types'; +import type { DivProps, Element, ElementTag } from './types'; -function DivImpl( - _props: DivProps, - _ref: React.Ref> -) { +function DivImpl(_props: DivProps, _ref: React.Ref>) { if (process.env.NODE_ENV === 'development') { console.log( '`Pressable`, `Text`, and `View` from @rn-primitives/core/web are only supported on web.' @@ -16,8 +13,8 @@ function DivImpl( return null; } -const Div = React.forwardRef(DivImpl) as ( - props: DivProps & { ref?: React.Ref> } +const Div = React.forwardRef(DivImpl) as ( + props: DivProps & { ref?: React.Ref> } ) => JSX.Element; const Image = React.forwardRef>>( diff --git a/packages/core/src/web/components.web.tsx b/packages/core/src/web/components.web.tsx index bebf5101..92776296 100644 --- a/packages/core/src/web/components.web.tsx +++ b/packages/core/src/web/components.web.tsx @@ -3,62 +3,72 @@ import { Slot } from '@rn-primitives/slot'; import type { Slottable } from '@rn-primitives/types'; import * as React from 'react'; -import { - ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP, - ROLE_TO_ELEMENT_TAG_NAME_MAP, - ROLE_TO_INPUT_TYPE_MAP, -} from './constants'; -import type { AriaLevel, DivProps, ElementFromRole, Role, RoleForInputType } from './types'; - -function DivImpl( - { asChild, role, 'aria-level': ariaLevel, ...props }: DivProps, - ref?: React.Ref> -) { - if (asChild) { - return ; +import type { DivProps, Element, ElementTag } from './types'; + +function createDivElement(type: 'pressable' | 'view') { + function DivImpl( + { asChild, as, ...props }: DivProps, + ref?: React.Ref> + ) { + if (asChild) { + return ; + } + + return React.createElement(as ?? 'div', { + ref, + 'data-rn-primitives': type, + ...props, + }); } - const element = getElement(role, ariaLevel); - return React.createElement(element, { - ref, - 'data-rn-primitives': true, - ...(element === 'input' ? { type: ROLE_TO_INPUT_TYPE_MAP[role as RoleForInputType] } : {}), - role: role && role in ROLE_TO_ELEMENT_TAG_NAME_MAP ? undefined : role, - ...props, - }); + return React.forwardRef(DivImpl) as ( + props: DivProps & { ref?: React.Ref> } + ) => JSX.Element; } -function getElement( - role: (React.AriaRole & T) | undefined, - ariaLevel?: number -) { - const element = - role && ROLE_TO_ELEMENT_TAG_NAME_MAP[role] ? ROLE_TO_ELEMENT_TAG_NAME_MAP[role] : 'div'; +const HasAncestorContext = React.createContext(false); + +function createTextElement() { + function DivImpl( + { asChild, as, ...props }: DivProps, + ref?: React.Ref> + ) { + const hasAncestor = React.useContext(HasAncestorContext); + + if (asChild) { + return ; + } + + const element = React.createElement(!as ? (hasAncestor ? 'span' : 'div') : as, { + ref, + 'data-rn-primitives': 'text', + ...props, + }); - if (element === 'h1') { - return (ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP[ariaLevel as AriaLevel] ?? - 'h1') as keyof HTMLElementTagNameMap; + if (hasAncestor) { + return element; + } + + return {element}; } - return element as keyof HTMLElementTagNameMap; + return React.forwardRef(DivImpl) as ( + props: DivProps & { ref?: React.Ref> } + ) => JSX.Element; } -const Div = React.forwardRef(DivImpl) as ( - props: DivProps & { ref?: React.Ref> } -) => JSX.Element; - -const Pressable = Div; +const Pressable = createDivElement('pressable'); -const Text = Div; +const View = createDivElement('view'); -const View = Div; +const Text = createTextElement(); const Image = React.forwardRef>>( ({ asChild, ...props }, ref) => { if (asChild) { return ; } - return ; + return ; } ); diff --git a/packages/core/src/web/constants.ts b/packages/core/src/web/constants.ts deleted file mode 100644 index f4b64381..00000000 --- a/packages/core/src/web/constants.ts +++ /dev/null @@ -1,87 +0,0 @@ -const ROLE_TO_ELEMENT_TAG_NAME_MAP = { - alert: 'div', - alertdialog: 'dialog', - application: 'div', - article: 'article', - banner: 'header', - button: 'button', - cell: 'td', - checkbox: 'input', - columnheader: 'th', - combobox: 'div', - complementary: 'aside', - contentinfo: 'footer', - definition: 'dfn', - dialog: 'dialog', - directory: 'ul', - document: 'div', - feed: 'div', - figure: 'figure', - form: 'form', - grid: 'table', - group: 'div', - heading: 'h1', - link: 'a', - list: 'ul', - listitem: 'li', - log: 'div', - main: 'main', - marquee: 'marquee', - math: 'math', - menu: 'ul', - menubar: 'nav', - menuitem: 'li', - meter: 'meter', - navigation: 'nav', - none: 'div', - note: 'aside', - option: 'option', - paragraph: 'p', - presentation: 'div', - progressbar: 'progress', - radio: 'input', - radiogroup: 'fieldset', - region: 'section', - row: 'tr', - rowgroup: 'tbody', - rowheader: 'th', - scrollbar: 'div', - searchbox: 'input', - separator: 'hr', - slider: 'input', - spinbutton: 'input', - status: 'div', - summary: 'summary', - switch: 'input', - tab: 'button', - table: 'table', - tablist: 'ul', - tabpanel: 'section', - term: 'dt', - timer: 'time', - toolbar: 'div', - tooltip: 'div', - tree: 'ul', - treegrid: 'table', - treeitem: 'li', -} as const; - -const ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP = { - 1: 'h1', - 2: 'h2', - 3: 'h3', - 4: 'h4', - 5: 'h5', - 6: 'h6', -}; - -const ROLE_TO_INPUT_TYPE_MAP = { - checkbox: 'checkbox', - radio: 'radio', - searchbox: 'search', - slider: 'range', - spinbutton: 'number', - switch: 'checkbox', -}; - -export { ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP, ROLE_TO_ELEMENT_TAG_NAME_MAP, ROLE_TO_INPUT_TYPE_MAP }; diff --git a/packages/core/src/web/index.ts b/packages/core/src/web/index.ts index d73b6508..207999f9 100644 --- a/packages/core/src/web/index.ts +++ b/packages/core/src/web/index.ts @@ -2,15 +2,11 @@ export { Image, Pressable, Text, View } from './components'; export { Platform } from './platform'; export type { - AriaLevel, DivProps, - ElementFromRole, - ElementTagFromRole, + Element, + ElementTag, ImageProps, PressableProps, - Role, - RoleForInputType, - RoleToElementMap, TextProps, ViewProps, } from './types'; diff --git a/packages/core/src/web/types.ts b/packages/core/src/web/types.ts index b6b82769..ad971d06 100644 --- a/packages/core/src/web/types.ts +++ b/packages/core/src/web/types.ts @@ -1,45 +1,19 @@ import type { Slottable } from '@rn-primitives/types'; -import type { - ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP, - ROLE_TO_ELEMENT_TAG_NAME_MAP, - ROLE_TO_INPUT_TYPE_MAP, -} from './constants'; -type RoleToElementMap = typeof ROLE_TO_ELEMENT_TAG_NAME_MAP; -type Role = keyof RoleToElementMap; +type ElementTag = keyof HTMLElementTagNameMap; -type ElementTagFromRole = R extends Role - ? Extract - : 'div'; +type Element = T extends ElementTag ? HTMLElementTagNameMap[T] : 'div'; -type ElementFromRole = HTMLElementTagNameMap[ElementTagFromRole]; - -type DivProps = React.ComponentPropsWithoutRef< - ElementTagFromRole +type DivProps = React.ComponentPropsWithoutRef< + T extends ElementTag ? T : 'div' > & { asChild?: boolean; - role?: T; + as?: T; }; -type RoleForInputType = keyof typeof ROLE_TO_INPUT_TYPE_MAP; - -type AriaLevel = keyof typeof ARIA_LEVEL_TO_ELEMENT_TAG_NAME_MAP; - -type PressableProps = DivProps; -type TextProps = DivProps; -type ViewProps = DivProps; +type PressableProps = DivProps; +type TextProps = DivProps; +type ViewProps = DivProps; type ImageProps = Slottable>; -export type { - AriaLevel, - DivProps, - ElementFromRole, - ElementTagFromRole, - ImageProps, - PressableProps, - Role, - RoleForInputType, - RoleToElementMap, - TextProps, - ViewProps, -}; +export type { DivProps, ElementTag, Element, ImageProps, PressableProps, TextProps, ViewProps }; From 5753ee82db0a881fd9992a3ca06879e632682122 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Thu, 13 Mar 2025 16:04:23 -0400 Subject: [PATCH 042/106] feat(core): separate universal props in types --- packages/core/src/universal/types.ts | 53 +++++++++++++++++++++------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/packages/core/src/universal/types.ts b/packages/core/src/universal/types.ts index dfcb7ab4..2f5a2dba 100644 --- a/packages/core/src/universal/types.ts +++ b/packages/core/src/universal/types.ts @@ -33,18 +33,22 @@ type BaseKeys = | 'aria-live' | 'aria-modal'; -type ImageProps = Prettify< +type ImagePropsUniversal = Prettify< Pick> & { className?: string; } > & { src: string; role?: RNRole; + asChild?: boolean; +}; + +type ImageProps = ImagePropsUniversal & { native?: ImagePropsNative; web?: ImagePropsWeb; }; -type PressableProps = Prettify< +type PressablePropsUniversal = Prettify< Pick & { onPress?: () => void; onPressIn?: () => void; @@ -52,29 +56,54 @@ type PressableProps = Prettify< } & { className?: string; role?: RNRole; - native?: PressablePropsNative; - web?: PressablePropsWeb; + asChild?: boolean; } >; -type PressableRef = { press?: () => void }; +type PressableProps = PressablePropsUniversal & { + native?: PressablePropsNative; + web?: PressablePropsWeb; +}; -type TextProps = Prettify< +type PressableRefUniversal = { press?: () => void }; +type PressableRef = PressableRefUniversal; + +type TextPropsUniversal = Prettify< Pick & { className?: string; role?: RNRole; - native?: TextPropsNative; - web?: TextPropsWeb; + asChild?: boolean; } >; -type ViewProps = Prettify< +type TextProps = TextPropsUniversal & { + native?: TextPropsNative; + web?: TextPropsWeb; +}; + +type ViewPropsUniversal = Prettify< Pick & { className?: string; role?: RNRole; - native?: ViewPropsNative; - web?: ViewPropsWeb; + asChild?: boolean; } >; -export type { ElementTag, ImageProps, PressableProps, PressableRef, TextProps, ViewProps }; +type ViewProps = ViewPropsUniversal & { + native?: ViewPropsNative; + web?: ViewPropsWeb; +}; + +export type { + ElementTag, + ImageProps, + ImagePropsUniversal, + PressableProps, + PressablePropsUniversal, + PressableRef, + PressableRefUniversal, + TextProps, + TextPropsUniversal, + ViewProps, + ViewPropsUniversal, +}; From 5e6b0106668391170d4e03b92f4be5e533faceb6 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 14 Mar 2025 15:20:51 -0400 Subject: [PATCH 043/106] feat: allow use of state in render pressable children + add mobile touch events to web pressable props and remove rnw state --- .../utils/src/render-pressable-children.ts | 6 +- .../utils/src/use-web-pressable-props.tsx | 70 ++++++------------- 2 files changed, 27 insertions(+), 49 deletions(-) diff --git a/packages/utils/src/render-pressable-children.ts b/packages/utils/src/render-pressable-children.ts index 93d76d1d..709abda8 100644 --- a/packages/utils/src/render-pressable-children.ts +++ b/packages/utils/src/render-pressable-children.ts @@ -2,10 +2,12 @@ import type { PressableProps, PressableStateCallbackType } from 'react-native'; function renderPressableChildren( children: PressableProps['children'], - render: (children: React.ReactNode) => React.ReactNode + render: (children: React.ReactNode, state?: PressableStateCallbackType) => React.ReactNode ) { return typeof children === 'function' - ? (state: PressableStateCallbackType) => render(children(state)) + ? (state: PressableStateCallbackType) => render(children(state), state) + : render.length > 1 // the `state` argument is provided + ? (state: PressableStateCallbackType) => render(children, state) : render(children); } diff --git a/packages/utils/src/use-web-pressable-props.tsx b/packages/utils/src/use-web-pressable-props.tsx index ad6d708b..175c5da2 100644 --- a/packages/utils/src/use-web-pressable-props.tsx +++ b/packages/utils/src/use-web-pressable-props.tsx @@ -1,25 +1,12 @@ import * as React from 'react'; -import type { PressableProps, PressableStateCallbackType } from 'react-native'; +import type { PressableProps } from 'react-native'; import { rnStyleToWebStyle } from './style/rn-style-to-web-style'; -type Element = - | 'article' - | 'header' - | 'button' - | 'aside' - | 'footer' - | 'figure' - | 'form' - | 'ul' - | 'li' - | 'main' - | 'nav' - | 'section' - | 'div'; +type Element = keyof HTMLElementTagNameMap; -type WebPressableProps = Pick< +type WebPressableProps = Pick< React.ComponentPropsWithoutRef, - 'onFocus' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave' | 'onMouseDown' | 'onMouseUp' + 'onMouseDown' | 'onMouseUp' | 'onTouchStart' | 'onTouchEnd' >; export function useWebPressableProps({ @@ -35,27 +22,25 @@ export function useWebPressableProps({ onPressInProp?: () => void; onPressOutProp?: () => void; }) { - const [focused, setFocused] = React.useState(false); - const [hovered, setHovered] = React.useState(false); const [pressed, setPressed] = React.useState(false); const events = React.useMemo(() => { return { - onFocus: (ev: any) => { - setFocused(true); - webProps?.onFocus?.(ev); - }, - onBlur: (ev: any) => { - setFocused(false); - webProps?.onBlur?.(ev); - }, - onMouseEnter: (ev: any) => { - setHovered(true); - webProps?.onMouseEnter?.(ev); + onTouchStart: (ev: any) => { + setPressed(true); + if (webProps?.onTouchStart) { + webProps.onTouchStart?.(ev); + return; + } + onPressInProp?.(); }, - onMouseLeave: (ev: any) => { - setHovered(false); - webProps?.onMouseLeave?.(ev); + onTouchEnd: (ev: any) => { + setPressed(false); + if (webProps?.onTouchEnd) { + webProps?.onTouchEnd?.(ev); + return; + } + onPressOutProp?.(); }, onMouseDown: (ev: any) => { setPressed(true); @@ -75,10 +60,8 @@ export function useWebPressableProps({ }, }; }, [ - webProps?.onFocus, - webProps?.onBlur, - webProps?.onMouseEnter, - webProps?.onMouseLeave, + webProps?.onTouchStart, + webProps?.onTouchEnd, webProps?.onMouseDown, webProps?.onMouseUp, onPressInProp, @@ -89,19 +72,12 @@ export function useWebPressableProps({ if (!styleProp) { return; } - return rnStyleToWebStyle( - typeof styleProp === 'function' - ? styleProp({ focused, hovered, pressed } as PressableStateCallbackType) - : styleProp - ); - }, [styleProp, focused, hovered, pressed]); + return rnStyleToWebStyle(typeof styleProp === 'function' ? styleProp({ pressed }) : styleProp); + }, [styleProp, pressed]); return { style, events, - children: - typeof childrenProp === 'function' - ? childrenProp({ focused, hovered, pressed } as PressableStateCallbackType) - : childrenProp, + children: typeof childrenProp === 'function' ? childrenProp({ pressed }) : childrenProp, }; } From 42e16768895f0b1460a952063c0a11f3149589c2 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 14 Mar 2025 15:22:46 -0400 Subject: [PATCH 044/106] feat: use core for accordion --- .../app/(components)/accordion.tsx | 2 +- apps/expo-nativewind/package.json | 1 + apps/expo-stylesheet/package.json | 1 + apps/nextjs-nativewind/src/app/page.tsx | 11 +- .../src/components/ui/accordion.tsx | 67 +++++----- apps/nextjs-no-rn/package.json | 4 + apps/nextjs-no-rn/src/app/page.tsx | 47 ++++++- apps/nextjs-no-rn/src/components/core.tsx | 2 +- .../src/components/ui/accordion.tsx | 104 ++++++++++++++++ apps/nextjs-no-rn/src/components/ui/text.tsx | 25 ++++ packages/accordion/package.json | 8 +- packages/accordion/src/base-types.ts | 93 ++++++-------- .../src/native/accordion-native.native.tsx | 117 +++++++----------- .../accordion/src/native/accordion-native.tsx | 15 +++ packages/accordion/src/native/index.ts | 5 +- packages/accordion/src/native/types.ts | 57 +++------ .../accordion/src/universal/accordion.web.tsx | 62 ++++------ packages/accordion/src/universal/types.ts | 87 +++++++------ packages/accordion/src/utils/contexts.ts | 8 +- packages/accordion/src/web/accordion-web.tsx | 9 ++ .../accordion/src/web/accordion-web.web.tsx | 34 ++--- packages/accordion/src/web/index.ts | 5 +- packages/accordion/src/web/types.ts | 81 ++++-------- packages/core/src/native/animatable/types.ts | 2 +- packages/core/src/universal/index.ts | 14 ++- packages/core/src/universal/types.ts | 2 +- pnpm-lock.yaml | 25 +++- 27 files changed, 497 insertions(+), 391 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/accordion.tsx create mode 100644 apps/nextjs-no-rn/src/components/ui/text.tsx diff --git a/apps/expo-nativewind/app/(components)/accordion.tsx b/apps/expo-nativewind/app/(components)/accordion.tsx index 56c9fa3a..cc7facb3 100644 --- a/apps/expo-nativewind/app/(components)/accordion.tsx +++ b/apps/expo-nativewind/app/(components)/accordion.tsx @@ -17,7 +17,7 @@ export default function AccordionScreen() { */} +
- diff --git a/apps/expo-nativewind/components/ui/accordion.tsx b/apps/expo-nativewind/components/ui/accordion.tsx index ed23aeb0..3c2c9a29 100644 --- a/apps/expo-nativewind/components/ui/accordion.tsx +++ b/apps/expo-nativewind/components/ui/accordion.tsx @@ -64,12 +64,13 @@ const AccordionTrigger = React.forwardRef< 'flex flex-row items-center justify-between py-4', Platform.select({ web: 'flex-1 hover:underline transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-muted-foreground [&[data-state=open]>svg]:rotate-180', + native: 'active:opacity-50', }), className )} {...props} > - {renderPressableChildren(children, (children, state) => { + {renderPressableChildren(children, (children) => { return ( <> {children} @@ -84,8 +85,7 @@ const AccordionTrigger = React.forwardRef< size={18} className={cn( 'text-foreground shrink-0', - Platform.select({ web: 'transition-transform duration-200' }), - state?.pressed && 'opacity-50' + Platform.select({ web: 'transition-transform duration-200' }) )} />
diff --git a/apps/expo-nativewind/components/ui/alert-dialog.tsx b/apps/expo-nativewind/components/ui/alert-dialog.tsx index ebd548dc..06200d97 100644 --- a/apps/expo-nativewind/components/ui/alert-dialog.tsx +++ b/apps/expo-nativewind/components/ui/alert-dialog.tsx @@ -1,10 +1,10 @@ +import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog'; +import { Platform, View } from '@rn-primitives/core'; +import { FadeIn, FadeOut } from '@rn-primitives/core/dist/native/reanimated'; import * as React from 'react'; -import { Platform, StyleSheet, View } from 'react-native'; -import Animated, { FadeIn, FadeOut } from 'react-native-reanimated'; import { buttonTextVariants, buttonVariants } from '~/components/ui/button'; -import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog'; -import { cn } from '~/lib/utils'; import { TextClassContext } from '~/components/ui/text'; +import { cn } from '~/lib/utils'; const AlertDialog = AlertDialogPrimitive.Root; @@ -12,83 +12,81 @@ const AlertDialogTrigger = AlertDialogPrimitive.Trigger; const AlertDialogPortal = AlertDialogPrimitive.Portal; -const AlertDialogOverlayWeb = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { - const { open } = AlertDialogPrimitive.useRootContext(); +function AlertDialogOverlay({ + className, + native: { isAnimated = true, ...restNative } = {}, + ...props +}: AlertDialogPrimitive.OverlayProps) { return ( ); -}); - -AlertDialogOverlayWeb.displayName = 'AlertDialogOverlayWeb'; - -const AlertDialogOverlayNative = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { - return ( - - - {children} - - - ); -}); - -AlertDialogOverlayNative.displayName = 'AlertDialogOverlayNative'; - -const AlertDialogOverlay = Platform.select({ - web: AlertDialogOverlayWeb, - default: AlertDialogOverlayNative, -}); - -const AlertDialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, portalHost, ...props }, ref) => { - const { open } = AlertDialogPrimitive.useRootContext(); +} +function AlertDialogContent({ + className, + native: { portalHost, ...nativeProp } = {}, + ...props +}: Omit & { + native?: AlertDialogPrimitive.ContentProps['native'] & { portalHost?: string }; +}) { return ( - - - - + + {Platform.OS === 'web' ? ( + <> + + + + ) : ( + + + + )} ); -}); -AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; +} const AlertDialogHeader = ({ className, ...props }: React.ComponentPropsWithoutRef) => ( - + ); AlertDialogHeader.displayName = 'AlertDialogHeader'; @@ -103,33 +101,31 @@ const AlertDialogFooter = ({ ); AlertDialogFooter.displayName = 'AlertDialogFooter'; -const AlertDialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; +function AlertDialogTitle({ className, ...props }: AlertDialogPrimitive.TitleProps) { + return ( + + ); +} -const AlertDialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName; +function AlertDialogDescription({ className, ...props }: AlertDialogPrimitive.DescriptionProps) { + return ( + + ); +} const AlertDialogAction = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + AlertDialogPrimitive.ActionRef, + AlertDialogPrimitive.ActionProps >(({ className, ...props }, ref) => ( @@ -138,8 +134,8 @@ const AlertDialogAction = React.forwardRef< AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; const AlertDialogCancel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + AlertDialogPrimitive.CancelRef, + AlertDialogPrimitive.CancelProps >(({ className, ...props }, ref) => ( - + {/* @@ -127,7 +127,7 @@ export default function Home() { - + */} ); @@ -181,10 +181,10 @@ function AlertDialogExample() { - - + + {/* */} diff --git a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx index fe83b89d..6cf7f0cd 100644 --- a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx +++ b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx @@ -1,14 +1,12 @@ 'use client'; +import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog'; +import { Platform, View } from '@rn-primitives/core'; +import { FadeIn, FadeOut } from '@rn-primitives/core/native-only-reanimated'; import * as React from 'react'; -import { Platform, StyleSheet, View } from 'react-native'; -import Animated, { FadeIn, FadeOut } from 'react-native-reanimated'; import { buttonTextVariants, buttonVariants } from '~/components/ui/button'; -import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog-new'; -import { cn } from '~/lib/utils'; import { TextClassContext } from '~/components/ui/text'; - -// ! TODO: AS CHILD NOT WORKING FROM WEB TO REACT_NATIVE PRESSABLE +import { cn } from '~/lib/utils'; const AlertDialog = AlertDialogPrimitive.Root; @@ -16,71 +14,88 @@ const AlertDialogTrigger = AlertDialogPrimitive.Trigger; const AlertDialogPortal = AlertDialogPrimitive.Portal; -const AlertDialogOverlayWeb = ({ className, ...props }: AlertDialogPrimitive.OverlayProps) => { - const { open } = AlertDialogPrimitive.useRootContext(); +function AlertDialogOverlay({ + className, + native: { isAnimated = true, ...restNative } = {}, + ...props +}: AlertDialogPrimitive.OverlayProps) { return ( ); -}; - -const AlertDialogOverlayNative = ({ - className, - children, - ...props -}: AlertDialogPrimitive.OverlayProps) => { - return ( - - - {children} - - - ); -}; - -const AlertDialogOverlay = Platform.select({ - web: AlertDialogOverlayWeb, - default: AlertDialogOverlayNative, -}); - -const AlertDialogContent = ({ className, native, ...props }: AlertDialogPrimitive.ContentProps) => { - const { open } = AlertDialogPrimitive.useRootContext(); - - return ( - - +} + +const AlertDialogContent = React.forwardRef( + ( + { + className, + native: { portalHost, ...nativeProp } = {}, + ...props + }: Omit & { + native?: AlertDialogPrimitive.ContentProps['native'] & { portalHost?: string }; + }, + ref + ) => { + return ( + + {/* {Platform.OS === 'web' ? ( */} + {/* <> */} + - - - ); -}; + {/* + ) : ( + + + + )} */} + + ); + } +); const AlertDialogHeader = ({ className, ...props }: React.ComponentPropsWithoutRef) => ( - + ); +AlertDialogHeader.displayName = 'AlertDialogHeader'; const AlertDialogFooter = ({ className, @@ -91,30 +106,43 @@ const AlertDialogFooter = ({ {...props} /> ); +AlertDialogFooter.displayName = 'AlertDialogFooter'; -const AlertDialogTitle = ({ className, ...props }: AlertDialogPrimitive.TitleProps) => ( - -); +function AlertDialogTitle({ className, ...props }: AlertDialogPrimitive.TitleProps) { + return ( + + ); +} -const AlertDialogDescription = ({ className, ...props }: AlertDialogPrimitive.DescriptionProps) => ( - -); +function AlertDialogDescription({ className, ...props }: AlertDialogPrimitive.DescriptionProps) { + return ( + + ); +} -const AlertDialogAction = ({ className, ...props }: AlertDialogPrimitive.ActionProps) => ( +const AlertDialogAction = React.forwardRef< + AlertDialogPrimitive.ActionRef, + AlertDialogPrimitive.ActionProps +>(({ className, ...props }, ref) => ( - + -); +)); +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; const AlertDialogCancel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef + AlertDialogPrimitive.CancelRef, + AlertDialogPrimitive.CancelProps >(({ className, ...props }, ref) => ( (() => { if (process.env.NODE_ENV === 'development') { - console.log('`Root`, from @rn-primitives/accordion/native is only supported on web.'); + console.log('`Root` from @rn-primitives/accordion/native is only supported on native.'); } return null; }); @@ -24,7 +24,7 @@ Root.displayName = 'AccordionRootNative'; const Item = React.forwardRef(() => { if (process.env.NODE_ENV === 'development') { - console.log('`Item`, from @rn-primitives/accordion/native is only supported on web.'); + console.log('`Item` from @rn-primitives/accordion/native is only supported on native.'); } return null; }); @@ -33,7 +33,7 @@ Item.displayName = 'AccordionItemNative'; const Header = React.forwardRef(() => { if (process.env.NODE_ENV === 'development') { - console.log('`Header`, from @rn-primitives/accordion/native is only supported on web.'); + console.log('`Header` from @rn-primitives/accordion/native is only supported on native.'); } return null; }); @@ -42,7 +42,7 @@ Header.displayName = 'AccordionHeaderNative'; const Trigger = React.forwardRef(() => { if (process.env.NODE_ENV === 'development') { - console.log('`Trigger`, from @rn-primitives/accordion/native is only supported on web.'); + console.log('`Trigger` from @rn-primitives/accordion/native is only supported on native.'); } return null; }); @@ -51,7 +51,7 @@ Trigger.displayName = 'AccordionTriggerNative'; const Content = React.forwardRef(() => { if (process.env.NODE_ENV === 'development') { - console.log('`Content`, from @rn-primitives/accordion/native is only supported on web.'); + console.log('`Content` from @rn-primitives/accordion/native is only supported on native.'); } return null; }); @@ -60,14 +60,14 @@ Content.displayName = 'AccordionContentNative'; const useRootContext = () => { throw new Error( - 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' + 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/native`' ); return {} as RootContextReturnType; }; const useItemContext = () => { throw new Error( - 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/web`' + 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/native`' ); return {} as ItemContextReturnType; }; diff --git a/packages/accordion/src/web/accordion-web.tsx b/packages/accordion/src/web/accordion-web.tsx index 245dae43..aace28a6 100644 --- a/packages/accordion/src/web/accordion-web.tsx +++ b/packages/accordion/src/web/accordion-web.tsx @@ -5,7 +5,7 @@ import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } const Root = React.forwardRef(() => { if (process.env.NODE_ENV === 'development') { - console.log('`Root`, from @rn-primitives/accordion/web is only supported on web.'); + console.log('`Root` from @rn-primitives/accordion/web is only supported on web.'); } return null; }); @@ -14,7 +14,7 @@ Root.displayName = 'AccordionRootWeb'; const Item = React.forwardRef(() => { if (process.env.NODE_ENV === 'development') { - console.log('`Item`, from @rn-primitives/accordion/web is only supported on web.'); + console.log('`Item` from @rn-primitives/accordion/web is only supported on web.'); } return null; }); @@ -23,7 +23,7 @@ Item.displayName = 'AccordionItemWeb'; const Trigger = React.forwardRef(() => { if (process.env.NODE_ENV === 'development') { - console.log('`Trigger`, from @rn-primitives/accordion/web is only supported on web.'); + console.log('`Trigger` from @rn-primitives/accordion/web is only supported on web.'); } return null; }); diff --git a/packages/alert-dialog-new/package.json b/packages/alert-dialog-new/package.json deleted file mode 100644 index 8c2b71a6..00000000 --- a/packages/alert-dialog-new/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "@rn-primitives/alert-dialog-new", - "version": "2.0.0-alpha.1", - "description": "Primitive alert-dialog-new", - "license": "MIT", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.js", - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - }, - "./native": { - "import": "./dist/native/index.mjs", - "require": "./dist/native/index.js", - "types": "./dist/native/index.d.ts", - "default": "./dist/native/index.js" - }, - "./web": { - "import": "./dist/web/index.mjs", - "require": "./dist/web/index.js", - "types": "./dist/web/index.d.ts", - "default": "./dist/web/index.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "tsup", - "dev": "tsup --watch", - "clean": "rm -rf dist .turbo node_modules", - "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", - "pub:next": "pnpm publish --no-git-checks --access public --tag next", - "pub:release": "pnpm publish --access public" - }, - "dependencies": { - "@radix-ui/react-alert-dialog": "^1.1.6", - "@rn-primitives/animatable": "workspace:*", - "@rn-primitives/hooks": "workspace:*", - "@rn-primitives/portal": "workspace:*", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*", - "@rn-primitives/utils": "workspace:*" - }, - "devDependencies": { - "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", - "tsup": "^8.1.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - } - } -} diff --git a/packages/alert-dialog-new/src/index.ts b/packages/alert-dialog-new/src/index.ts deleted file mode 100644 index e9ee3ebe..00000000 --- a/packages/alert-dialog-new/src/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -export { - Action, - Cancel, - Content, - Description, - Overlay, - Portal, - Root, - Title, - Trigger, - useRootContext, -} from './universal'; - -export type { - ActionProps, - CancelProps, - CancelRef, - ContentProps, - DescriptionProps, - OverlayProps, - PortalProps, - RootProps, - TitleProps, - TriggerProps, - TriggerRef, -} from './universal'; diff --git a/packages/alert-dialog-new/src/native/types.ts b/packages/alert-dialog-new/src/native/types.ts deleted file mode 100644 index 9bd996f2..00000000 --- a/packages/alert-dialog-new/src/native/types.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { - AnimatablePressableProps, - AnimatableTextProps, - AnimatableViewProps, -} from '@rn-primitives/animatable'; -import type { PressableRef, TextRef, ViewRef } from '@rn-primitives/types'; -import type { - BaseAlertDialogActionProps, - BaseAlertDialogCancelProps, - BaseAlertDialogContentProps, - BaseAlertDialogDescriptionProps, - BaseAlertDialogOverlayProps, - BaseAlertDialogPortalProps, - BaseAlertDialogRootProps, - BaseAlertDialogTitleProps, - BaseAlertDialogTriggerProps, - BaseAlertDialogTriggerRef, -} from '../base-types'; - -type AlertDialogActionNativeOnlyProps = AnimatablePressableProps; -type AlertDialogActionNativeOnlyRef = PressableRef; -type AlertDialogCancelNativeOnlyProps = AnimatablePressableProps; -type AlertDialogCancelNativeOnlyRef = PressableRef; -type AlertDialogContentNativeOnlyProps = AnimatableViewProps; -type AlertDialogContentNativeOnlyRef = ViewRef; -type AlertDialogDescriptionNativeOnlyProps = AnimatableTextProps; -type AlertDialogDescriptionNativeOnlyRef = TextRef; -type AlertDialogOverlayNativeOnlyProps = AnimatableViewProps; -type AlertDialogOverlayNativeOnlyRef = ViewRef; -type AlertDialogPortalNativeOnlyProps = { - hostName?: string; - children?: React.ReactNode; -}; -type AlertDialogTitleNativeOnlyProps = AnimatableTextProps; -type AlertDialogTitleNativeOnlyRef = TextRef; -type AlertDialogTriggerNativeOnlyProps = AnimatablePressableProps; -type AlertDialogTriggerNativeOnlyRef = PressableRef; - -type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; -type ActionProps = AlertDialogActionNativeOnlyProps & BaseAlertDialogActionProps; -type ActionRef = AlertDialogActionNativeOnlyRef; -type CancelProps = AlertDialogCancelNativeOnlyProps & BaseAlertDialogCancelProps; -type CancelRef = AlertDialogCancelNativeOnlyRef; -type ContentProps = AlertDialogContentNativeOnlyProps & BaseAlertDialogContentProps; -type ContentRef = AlertDialogContentNativeOnlyRef; -type DescriptionProps = AlertDialogDescriptionNativeOnlyProps & BaseAlertDialogDescriptionProps; -type DescriptionRef = AlertDialogDescriptionNativeOnlyRef; -type OverlayProps = AlertDialogOverlayNativeOnlyProps & BaseAlertDialogOverlayProps; -type OverlayRef = AlertDialogOverlayNativeOnlyRef; -type PortalProps = AlertDialogPortalNativeOnlyProps & BaseAlertDialogPortalProps; -type TitleProps = AlertDialogTitleNativeOnlyProps & BaseAlertDialogTitleProps; -type TitleRef = AlertDialogTitleNativeOnlyRef; -type TriggerProps = AlertDialogTriggerNativeOnlyProps & BaseAlertDialogTriggerProps; -type TriggerRef = AlertDialogTriggerNativeOnlyRef & BaseAlertDialogTriggerRef; - -export type { - ActionProps, - ActionRef, - AlertDialogActionNativeOnlyProps, - AlertDialogCancelNativeOnlyProps, - AlertDialogContentNativeOnlyProps, - AlertDialogContentNativeOnlyRef, - AlertDialogDescriptionNativeOnlyProps, - AlertDialogDescriptionNativeOnlyRef, - AlertDialogOverlayNativeOnlyProps, - AlertDialogOverlayNativeOnlyRef, - AlertDialogPortalNativeOnlyProps, - AlertDialogTitleNativeOnlyProps, - AlertDialogTitleNativeOnlyRef, - AlertDialogTriggerNativeOnlyProps, - AlertDialogTriggerNativeOnlyRef, - CancelProps, - CancelRef, - ContentProps, - ContentRef, - DescriptionProps, - DescriptionRef, - OverlayProps, - OverlayRef, - PortalProps, - RootProps, - TitleProps, - TitleRef, - TriggerProps, - TriggerRef, -}; diff --git a/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx b/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx deleted file mode 100644 index 6a0ef999..00000000 --- a/packages/alert-dialog-new/src/universal/alert-dialog.web.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import { rnStyleToWebStyle, useWebPressableProps } from '@rn-primitives/utils'; -import * as React from 'react'; -import { - Action as ActionWeb, - Cancel as CancelWeb, - type CancelRef as CancelWebRef, - Content as ContentWeb, - Description as DescriptionWeb, - Overlay as OverlayWeb, - Portal as PortalWeb, - Root as RootWeb, - Title as TitleWeb, - Trigger as TriggerWeb, - type TriggerRef as TriggerWebRef, - useRootContext, -} from '../web'; -import type { - ActionProps, - CancelProps, - CancelRef, - ContentProps, - DescriptionProps, - OverlayProps, - PortalProps, - RootProps, - TitleProps, - TriggerProps, - TriggerRef, -} from './types'; - -function Root(props: RootProps) { - return ; -} - -function Content({ web, native: _native, style, ...props }: ContentProps) { - return ; -} - -function Description({ web, native: _native, style, ...props }: DescriptionProps) { - return ; -} - -function Overlay({ web, native: _native, style, ...props }: OverlayProps) { - return ; -} - -function Portal({ web, native: _native, ...props }: PortalProps) { - return ; -} - -function Title({ web, native: _native, style, ...props }: TitleProps) { - return ; -} - -const Trigger = React.forwardRef( - ( - { - native: _native, - style: styleProp, - children: childrenProp, - onPress: onPressProp, - onPressIn: onPressInProp, - onPressOut: onPressOutProp, - web: webProps, - ...props - }, - ref - ) => { - const { children, events, style } = useWebPressableProps({ - styleProp, - childrenProp, - webProps, - onPressInProp, - onPressOutProp, - }); - - return ( - } - children={children} - style={style} - onClick={onPressProp} - {...props} - {...webProps} - {...events} - /> - ); - } -); - -Trigger.displayName = 'AlertDialogTriggerUniversal'; - -function Action({ - web: webProps, - native: _native, - style: styleProp, - children: childrenProp, - onPress: onPressProp, - onPressIn: onPressInProp, - onPressOut: onPressOutProp, - ...props -}: ActionProps) { - const { children, events, style } = useWebPressableProps({ - styleProp, - childrenProp, - webProps, - onPressInProp, - onPressOutProp, - }); - - return ( - - ); -} - -const Cancel = React.forwardRef( - ( - { - native: _native, - style: styleProp, - children: childrenProp, - onPress: onPressProp, - onPressIn: onPressInProp, - onPressOut: onPressOutProp, - web: webProps, - ...props - }, - ref - ) => { - const { children, events, style } = useWebPressableProps({ - styleProp, - childrenProp, - webProps, - onPressInProp, - onPressOutProp, - }); - - return ( - } - children={children} - style={style} - onClick={onPressProp} - {...props} - {...webProps} - {...events} - /> - ); - } -); - -Cancel.displayName = 'AlertDialogCancelUniversal'; - -export { - Action, - Cancel, - Content, - Description, - Overlay, - Portal, - Root, - Title, - Trigger, - useRootContext, -}; diff --git a/packages/alert-dialog-new/src/universal/types.ts b/packages/alert-dialog-new/src/universal/types.ts deleted file mode 100644 index b4b0e8cf..00000000 --- a/packages/alert-dialog-new/src/universal/types.ts +++ /dev/null @@ -1,125 +0,0 @@ -import type { - BaseSlottablePressableProps, - BaseSlottableTextProps, - BaseSlottableViewProps, - BasicPressEvents, - Prettify, -} from '@rn-primitives/types'; -import type { - BaseAlertDialogActionProps, - BaseAlertDialogCancelProps, - BaseAlertDialogCancelRef, - BaseAlertDialogContentProps, - BaseAlertDialogDescriptionProps, - BaseAlertDialogOverlayProps, - BaseAlertDialogPortalProps, - BaseAlertDialogRootProps, - BaseAlertDialogTitleProps, - BaseAlertDialogTriggerProps, - BaseAlertDialogTriggerRef, -} from '../base-types'; -import type { - AlertDialogActionNativeOnlyProps, - AlertDialogCancelNativeOnlyProps, - AlertDialogContentNativeOnlyProps, - AlertDialogDescriptionNativeOnlyProps, - AlertDialogOverlayNativeOnlyProps, - AlertDialogPortalNativeOnlyProps, - AlertDialogTitleNativeOnlyProps, - AlertDialogTriggerNativeOnlyProps, -} from '../native/types'; -import type { - AlertDialogActionWebOnlyProps, - AlertDialogCancelWebOnlyProps, - AlertDialogContentWebOnlyProps, - AlertDialogDescriptionWebOnlyProps, - AlertDialogOverlayWebOnlyProps, - AlertDialogPortalWebOnlyProps, - AlertDialogTitleWebOnlyProps, - AlertDialogTriggerWebOnlyProps, -} from '../web/types'; - -type ContentProps = Prettify< - BaseAlertDialogContentProps & - BaseSlottableViewProps & { - native?: AlertDialogContentNativeOnlyProps; - web?: AlertDialogContentWebOnlyProps; - } ->; - -type RootProps = Prettify< - BaseAlertDialogRootProps & { - children?: React.ReactNode; - } ->; - -type TriggerProps = Prettify< - BaseAlertDialogTriggerProps & - BaseSlottablePressableProps & { - native?: AlertDialogTriggerNativeOnlyProps; - web?: AlertDialogTriggerWebOnlyProps; - } & BasicPressEvents ->; -type TriggerRef = BaseAlertDialogTriggerRef; - -type ActionProps = Prettify< - BaseAlertDialogActionProps & - BaseSlottablePressableProps & { - native?: AlertDialogActionNativeOnlyProps; - web?: AlertDialogActionWebOnlyProps; - } & BasicPressEvents ->; - -type CancelProps = Prettify< - BaseAlertDialogCancelProps & - BaseSlottablePressableProps & { - native?: AlertDialogCancelNativeOnlyProps; - web?: AlertDialogCancelWebOnlyProps; - } & BasicPressEvents ->; -type CancelRef = BaseAlertDialogCancelRef; - -type DescriptionProps = Prettify< - BaseAlertDialogDescriptionProps & - BaseSlottableTextProps & { - native?: AlertDialogDescriptionNativeOnlyProps; - web?: AlertDialogDescriptionWebOnlyProps; - } ->; - -type OverlayProps = Prettify< - BaseAlertDialogOverlayProps & - BaseSlottableViewProps & { - native?: AlertDialogOverlayNativeOnlyProps; - web?: AlertDialogOverlayWebOnlyProps; - } ->; - -type PortalProps = Prettify< - BaseAlertDialogPortalProps & { - native?: AlertDialogPortalNativeOnlyProps; - web?: AlertDialogPortalWebOnlyProps; - } ->; - -type TitleProps = Prettify< - BaseAlertDialogTitleProps & - BaseSlottableTextProps & { - native?: AlertDialogTitleNativeOnlyProps; - web?: AlertDialogTitleWebOnlyProps; - } ->; - -export type { - ActionProps, - CancelProps, - CancelRef, - ContentProps, - DescriptionProps, - OverlayProps, - PortalProps, - RootProps, - TitleProps, - TriggerProps, - TriggerRef, -}; diff --git a/packages/alert-dialog-new/src/web/types.ts b/packages/alert-dialog-new/src/web/types.ts deleted file mode 100644 index a17c7b72..00000000 --- a/packages/alert-dialog-new/src/web/types.ts +++ /dev/null @@ -1,132 +0,0 @@ -import type { - Action, - Cancel, - Content, - Description, - Overlay, - Portal, - Title, - Trigger, -} from '@radix-ui/react-alert-dialog'; -import type { PropsWithout } from '@rn-primitives/types'; -import type { - BaseAlertDialogActionProps, - BaseAlertDialogCancelProps, - BaseAlertDialogCancelRef, - BaseAlertDialogContentProps, - BaseAlertDialogDescriptionProps, - BaseAlertDialogOverlayProps, - BaseAlertDialogPortalProps, - BaseAlertDialogRootProps, - BaseAlertDialogTitleProps, - BaseAlertDialogTriggerProps, - BaseAlertDialogTriggerRef, -} from '../base-types'; - -type AlertDialogContentWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogContentProps ->; -type AlertDialogContentWebOnlyRef = React.ElementRef; - -type AlertDialogTriggerWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogTriggerProps ->; -type AlertDialogTriggerWebOnlyRef = React.ElementRef; - -type AlertDialogActionWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogActionProps ->; -type AlertDialogActionWebOnlyRef = React.ElementRef; - -type AlertDialogCancelWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogCancelProps ->; -type AlertDialogCancelWebOnlyRef = React.ElementRef; - -type AlertDialogDescriptionWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogDescriptionProps ->; -type AlertDialogDescriptionWebOnlyRef = React.ElementRef; - -type AlertDialogOverlayWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogOverlayProps ->; -type AlertDialogOverlayWebOnlyRef = React.ElementRef; - -type AlertDialogPortalWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogPortalProps ->; -type AlertDialogPortalWebOnlyRef = React.ElementRef; - -type AlertDialogTitleWebOnlyProps = PropsWithout< - React.ComponentPropsWithoutRef, - BaseAlertDialogTitleProps ->; -type AlertDialogTitleWebOnlyRef = React.ElementRef; - -type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; - -type ActionProps = BaseAlertDialogActionProps & AlertDialogActionWebOnlyProps; -type ActionRef = AlertDialogActionWebOnlyRef; - -type CancelProps = BaseAlertDialogCancelProps & AlertDialogCancelWebOnlyProps; -type CancelRef = AlertDialogCancelWebOnlyRef & BaseAlertDialogCancelRef; - -type DescriptionProps = BaseAlertDialogDescriptionProps & AlertDialogDescriptionWebOnlyProps; -type DescriptionRef = AlertDialogDescriptionWebOnlyRef; - -type OverlayProps = BaseAlertDialogOverlayProps & AlertDialogOverlayWebOnlyProps; -type OverlayRef = AlertDialogOverlayWebOnlyRef; - -type PortalProps = BaseAlertDialogPortalProps & AlertDialogPortalWebOnlyProps; - -type TitleProps = BaseAlertDialogTitleProps & AlertDialogTitleWebOnlyProps; -type TitleRef = AlertDialogTitleWebOnlyRef; - -type TriggerProps = BaseAlertDialogTriggerProps & AlertDialogTriggerWebOnlyProps; -type TriggerRef = AlertDialogTriggerWebOnlyRef & BaseAlertDialogTriggerRef; - -type ContentProps = BaseAlertDialogContentProps & AlertDialogContentWebOnlyProps; -type ContentRef = AlertDialogContentWebOnlyRef; - -export type { - ActionProps, - ActionRef, - AlertDialogActionWebOnlyProps, - AlertDialogActionWebOnlyRef, - AlertDialogCancelWebOnlyProps, - AlertDialogCancelWebOnlyRef, - AlertDialogContentWebOnlyProps, - AlertDialogContentWebOnlyRef, - AlertDialogDescriptionWebOnlyProps, - AlertDialogDescriptionWebOnlyRef, - AlertDialogOverlayWebOnlyProps, - AlertDialogOverlayWebOnlyRef, - AlertDialogPortalWebOnlyProps, - AlertDialogPortalWebOnlyRef, - AlertDialogTitleWebOnlyProps, - AlertDialogTitleWebOnlyRef, - AlertDialogTriggerWebOnlyProps, - AlertDialogTriggerWebOnlyRef, - CancelProps, - CancelRef, - ContentProps, - ContentRef, - DescriptionProps, - DescriptionRef, - OverlayProps, - OverlayRef, - PortalProps, - RootProps, - TitleProps, - TitleRef, - TriggerProps, - TriggerRef, -}; diff --git a/packages/alert-dialog-new/tsconfig.json b/packages/alert-dialog-new/tsconfig.json deleted file mode 100644 index 60ce1f95..00000000 --- a/packages/alert-dialog-new/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "extends": "@tsconfig/react-native/tsconfig.json", - "include": [ - "./src/**/*" - ], - "compilerOptions": { - "lib": [ - "dom", - "es2019", - "es2020.bigint", - "es2020.date", - "es2020.number", - "es2020.promise", - "es2020.string", - "es2020.symbol.wellknown", - "es2021.promise", - "es2021.string", - "es2021.weakref", - "es2022.array", - "es2022.object", - "es2022.string" - ], - }, - "exclude": [ - "dist", - "build", - "node_modules" - ], -} \ No newline at end of file diff --git a/packages/alert-dialog-new/tsup.config.ts b/packages/alert-dialog-new/tsup.config.ts deleted file mode 100644 index b1de639c..00000000 --- a/packages/alert-dialog-new/tsup.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { defineConfig, Options } from 'tsup'; - -export default defineConfig((options: Options) => ({ - entry: [ - 'src/index.ts', - 'src/universal/index.ts', - 'src/universal/alert-dialog.tsx', - 'src/universal/alert-dialog.web.tsx', - 'src/native/index.ts', - 'src/native/alert-dialog-native.tsx', - 'src/native/alert-dialog-native.native.tsx', - 'src/web/index.ts', - 'src/web/alert-dialog-web.tsx', - 'src/web/alert-dialog-web.web.tsx', - ], - banner: { - js: "'use client'", - }, - clean: true, - format: ['cjs', 'esm'], - external: [ - 'react', - './universal', - './alert-dialog', - '../native', - './alert-dialog-native', - '../web', - './alert-dialog-web', - ], - dts: true, - ...options, - esbuildOptions(options) { - options.jsx = 'preserve'; - }, -})); diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index 927f5432..6edb2074 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -1,7 +1,7 @@ { "name": "@rn-primitives/alert-dialog", - "version": "1.1.0", - "description": "Primitive alert dialog", + "version": "2.0.0-alpha.1", + "description": "Primitive alert-dialog", "license": "MIT", "main": "dist/index.js", "module": "dist/index.mjs", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/alert-dialog": { - "import": "./dist/alert-dialog.mjs", - "require": "./dist/alert-dialog.js", - "types": "./dist/alert-dialog.d.ts", - "default": "./dist/alert-dialog.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -32,13 +38,16 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-alert-dialog": "^1.1.1", + "@radix-ui/react-alert-dialog": "^1.1.6", + "@rn-primitives/animatable": "workspace:*", + "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", + "@rn-primitives/portal": "workspace:*", "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { - "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", "@types/react": "~18.3.12", "react": "18.3.1", @@ -46,7 +55,6 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "@rn-primitives/portal": "*", "react": "*", "react-native": "*", "react-native-web": "*" diff --git a/packages/alert-dialog/src/alert-dialog.tsx b/packages/alert-dialog/src/alert-dialog.tsx deleted file mode 100644 index fcaa291c..00000000 --- a/packages/alert-dialog/src/alert-dialog.tsx +++ /dev/null @@ -1,244 +0,0 @@ -import { useControllableState } from '@rn-primitives/hooks'; -import { Portal as RNPPortal } from '@rn-primitives/portal'; -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { BackHandler, Pressable, Text, View, type GestureResponderEvent } from 'react-native'; -import type { - ActionProps, - ActionRef, - CancelProps, - CancelRef, - ContentProps, - ContentRef, - DescriptionProps, - DescriptionRef, - OverlayProps, - OverlayRef, - PortalProps, - RootContext, - RootProps, - RootRef, - TitleProps, - TitleRef, - TriggerProps, - TriggerRef, -} from './types'; - -const AlertDialogContext = React.createContext<(RootContext & { nativeID: string }) | null>(null); - -const Root = React.forwardRef( - ({ asChild, open: openProp, defaultOpen, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const nativeID = React.useId(); - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - const Component = asChild ? Slot : View; - return ( - - - - ); - } -); - -Root.displayName = 'RootNativeAlertDialog'; - -function useRootContext() { - const context = React.useContext(AlertDialogContext); - if (!context) { - throw new Error( - 'AlertDialog compound components cannot be rendered outside the AlertDialog component' - ); - } - return context; -} - -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { open: value, onOpenChange } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - onOpenChange(!value); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); - } -); - -Trigger.displayName = 'TriggerNativeAlertDialog'; - -/** - * @warning when using a custom ``, you might have to adjust the Content's sideOffset to account for nav elements like headers. - */ -function Portal({ forceMount, hostName, children }: PortalProps) { - const value = useRootContext(); - - if (!forceMount) { - if (!value.open) { - return null; - } - } - - return ( - - {children} - - ); -} - -const Overlay = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { open: value } = useRootContext(); - - if (!forceMount) { - if (!value) { - return null; - } - } - - const Component = asChild ? Slot : View; - return ; - } -); - -Overlay.displayName = 'OverlayNativeAlertDialog'; - -const Content = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { open: value, nativeID, onOpenChange } = useRootContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - onOpenChange(false); - return true; - }); - - return () => { - backHandler.remove(); - }; - }, []); - - if (!forceMount) { - if (!value) { - return null; - } - } - - const Component = asChild ? Slot : View; - return ( - - ); - } -); - -Content.displayName = 'ContentNativeAlertDialog'; - -const Cancel = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { onOpenChange } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - onOpenChange(false); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); - } -); - -Cancel.displayName = 'CloseNativeAlertDialog'; - -const Action = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { onOpenChange } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - onOpenChange(false); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); - } -); - -Action.displayName = 'ActionNativeAlertDialog'; - -const Title = React.forwardRef(({ asChild, ...props }, ref) => { - const { nativeID } = useRootContext(); - const Component = asChild ? Slot : Text; - return ; -}); - -Title.displayName = 'TitleNativeAlertDialog'; - -const Description = React.forwardRef( - ({ asChild, ...props }, ref) => { - const { nativeID } = useRootContext(); - const Component = asChild ? Slot : Text; - return ; - } -); - -Description.displayName = 'DescriptionNativeAlertDialog'; - -export { - Action, - Cancel, - Content, - Description, - Overlay, - Portal, - Root, - Title, - Trigger, - useRootContext, -}; diff --git a/packages/alert-dialog/src/alert-dialog.web.tsx b/packages/alert-dialog/src/alert-dialog.web.tsx deleted file mode 100644 index 06942967..00000000 --- a/packages/alert-dialog/src/alert-dialog.web.tsx +++ /dev/null @@ -1,256 +0,0 @@ -import * as AlertDialog from '@radix-ui/react-alert-dialog'; -import { - useAugmentedRef, - useControllableState, - useIsomorphicLayoutEffect, -} from '@rn-primitives/hooks'; -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { Pressable, Text, View, type GestureResponderEvent } from 'react-native'; -import type { - ActionProps, - ActionRef, - CancelProps, - CancelRef, - ContentProps, - ContentRef, - DescriptionProps, - DescriptionRef, - OverlayProps, - OverlayRef, - PortalProps, - RootContext, - RootProps, - RootRef, - TitleProps, - TitleRef, - TriggerProps, - TriggerRef, -} from './types'; - -const AlertDialogContext = React.createContext(null); - -const Root = React.forwardRef( - ({ asChild, open: openProp, defaultOpen, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - const Component = asChild ? Slot : View; - return ( - - - - - - ); - } -); - -Root.displayName = 'RootAlertWebDialog'; - -function useRootContext() { - const context = React.useContext(AlertDialogContext); - if (!context) { - throw new Error( - 'AlertDialog compound components cannot be rendered outside the AlertDialog component' - ); - } - return context; -} - -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, role: _role, disabled, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { onOpenChange, open } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); - } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = open ? 'open' : 'closed'; - augRef.type = 'button'; - } - }, [open]); - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); - } -); - -Trigger.displayName = 'TriggerAlertWebDialog'; - -function Portal({ forceMount, container, children }: PortalProps) { - return ; -} - -const Overlay = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); - } -); - -Overlay.displayName = 'OverlayAlertWebDialog'; - -const Content = React.forwardRef( - ({ asChild, forceMount, onOpenAutoFocus, onCloseAutoFocus, onEscapeKeyDown, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { open } = useRootContext(); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = open ? 'open' : 'closed'; - } - }, [open]); - - const Component = asChild ? Slot : View; - return ( - - - - ); - } -); - -Content.displayName = 'ContentAlertWebDialog'; - -const Cancel = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { onOpenChange, open } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); - } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.type = 'button'; - } - }, []); - - const Component = asChild ? Slot : Pressable; - return ( - <> - - - - - ); - } -); - -Cancel.displayName = 'CancelAlertWebDialog'; - -const Action = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { onOpenChange, open } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); - } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.type = 'button'; - } - }, []); - - const Component = asChild ? Slot : Pressable; - return ( - <> - - - - - ); - } -); - -Action.displayName = 'ActionAlertWebDialog'; - -const Title = React.forwardRef(({ asChild, ...props }, ref) => { - const Component = asChild ? Slot : Text; - return ( - - - - ); -}); - -Title.displayName = 'TitleAlertWebDialog'; - -const Description = React.forwardRef( - ({ asChild, ...props }, ref) => { - const Component = asChild ? Slot : Text; - return ( - - - - ); - } -); - -Description.displayName = 'DescriptionAlertWebDialog'; - -export { - Action, - Cancel, - Content, - Description, - Overlay, - Portal, - Root, - Title, - Trigger, - useRootContext, -}; diff --git a/packages/alert-dialog-new/src/base-types.ts b/packages/alert-dialog/src/base-types.ts similarity index 55% rename from packages/alert-dialog-new/src/base-types.ts rename to packages/alert-dialog/src/base-types.ts index 834d2f53..47331ae8 100644 --- a/packages/alert-dialog-new/src/base-types.ts +++ b/packages/alert-dialog/src/base-types.ts @@ -1,37 +1,28 @@ import type { - AlertDialogActionProps, - AlertDialogCancelProps, AlertDialogContentProps, - AlertDialogDescriptionProps, AlertDialogOverlayProps, AlertDialogPortalProps, AlertDialogProps, - AlertDialogTitleProps, - AlertDialogTriggerProps, } from '@radix-ui/react-alert-dialog'; import type { Prettify } from '@rn-primitives/types'; type BaseAlertDialogRootProps = Omit, 'children'>; -type BaseAlertDialogTriggerProps = Pick; +type BaseAlertDialogTriggerProps = {}; type BaseAlertDialogPortalProps = Pick; -type BaseAlertDialogOverlayProps = Pick; +type BaseAlertDialogOverlayProps = Pick; -type BaseAlertDialogActionProps = Pick; +type BaseAlertDialogActionProps = {}; -type BaseAlertDialogCancelProps = Pick; +type BaseAlertDialogCancelProps = {}; -type BaseAlertDialogTitleProps = Pick; +type BaseAlertDialogTitleProps = {}; -type BaseAlertDialogDescriptionProps = Pick; +type BaseAlertDialogDescriptionProps = {}; -type BaseAlertDialogContentProps = Pick; - -type BaseAlertDialogTriggerRef = { trigger: () => void }; - -type BaseAlertDialogCancelRef = { cancel: () => void }; +type BaseAlertDialogContentProps = Pick; type BaseAlertDialogRootContext = Required< Pick @@ -44,10 +35,8 @@ export type { BaseAlertDialogDescriptionProps, BaseAlertDialogOverlayProps, BaseAlertDialogPortalProps, + BaseAlertDialogRootContext, BaseAlertDialogRootProps, BaseAlertDialogTitleProps, BaseAlertDialogTriggerProps, - BaseAlertDialogTriggerRef, - BaseAlertDialogRootContext, - BaseAlertDialogCancelRef, }; diff --git a/packages/alert-dialog/src/index.ts b/packages/alert-dialog/src/index.ts index f9dcd208..df46fb38 100644 --- a/packages/alert-dialog/src/index.ts +++ b/packages/alert-dialog/src/index.ts @@ -1,2 +1,27 @@ -export * from './alert-dialog'; -export * from './types'; +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +} from './universal'; + +export type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +} from './universal'; diff --git a/packages/alert-dialog-new/src/native/alert-dialog-native.native.tsx b/packages/alert-dialog/src/native/alert-dialog-native.native.tsx similarity index 72% rename from packages/alert-dialog-new/src/native/alert-dialog-native.native.tsx rename to packages/alert-dialog/src/native/alert-dialog-native.native.tsx index 2aa4593b..067441d7 100644 --- a/packages/alert-dialog-new/src/native/alert-dialog-native.native.tsx +++ b/packages/alert-dialog/src/native/alert-dialog-native.native.tsx @@ -1,7 +1,6 @@ -import { AnimatablePressable, AnimatableText, AnimatableView } from '@rn-primitives/animatable'; -import { useAugmentedRef, useControllableState } from '@rn-primitives/hooks'; +import { Pressable, Text, View } from '@rn-primitives/core/dist/native'; +import { useControllableState } from '@rn-primitives/hooks'; import { Portal as RNPPortal } from '@rn-primitives/portal'; -import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { BackHandler, type GestureResponderEvent } from 'react-native'; import { RootContext, useRootContext } from '../utils/contexts'; @@ -58,17 +57,8 @@ function useRootInternalContext() { } const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { + ({ onPress: onPressProp, disabled, ...props }, ref) => { const { open: value, onOpenChange } = useRootContext(); - const methods = React.useMemo(() => { - return { - trigger: () => { - onOpenChange(!value); - }, - }; - }, [onOpenChange, value]); - - const triggerRef = useAugmentedRef({ ref, methods }); const onPress = React.useCallback( (ev: GestureResponderEvent) => { @@ -80,14 +70,13 @@ const Trigger = React.forwardRef( [onOpenChange, onPressProp, value] ); - const Component = asChild ? Slot : AnimatablePressable; return ( - ); @@ -116,7 +105,7 @@ function Portal({ forceMount, hostName, children }: PortalProps) { } const Overlay = React.forwardRef( - ({ asChild, forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { + ({ forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { const { open: value, onOpenChange } = useRootContext(); const onAccessibilityEscape = React.useCallback(() => { @@ -132,14 +121,8 @@ const Overlay = React.forwardRef( } } - const Component = asChild ? Slot : AnimatableView; return ( - + ); } ); @@ -147,7 +130,7 @@ const Overlay = React.forwardRef( Overlay.displayName = 'AlertDialogOverlayNative'; const Content = React.forwardRef( - ({ asChild, forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { + ({ forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { const { open: value, onOpenChange } = useRootContext(); const { nativeID } = useRootInternalContext(); @@ -175,9 +158,8 @@ const Content = React.forwardRef( } } - const Component = asChild ? Slot : AnimatableView; return ( - ( Content.displayName = 'AlertDialogContentNative'; const Cancel = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { + ({ onPress: onPressProp, disabled, ...props }, ref) => { const { onOpenChange } = useRootContext(); const onPress = React.useCallback( @@ -207,14 +189,13 @@ const Cancel = React.forwardRef( [onOpenChange, onPressProp] ); - const Component = asChild ? Slot : AnimatablePressable; return ( - ); @@ -224,7 +205,7 @@ const Cancel = React.forwardRef( Cancel.displayName = 'AlertDialogCloseNative'; const Action = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { + ({ onPress: onPressProp, disabled, ...props }, ref) => { const { onOpenChange } = useRootContext(); const onPress = React.useCallback( @@ -237,14 +218,13 @@ const Action = React.forwardRef( [onOpenChange, onPressProp] ); - const Component = asChild ? Slot : AnimatablePressable; return ( - ); @@ -253,21 +233,17 @@ const Action = React.forwardRef( Action.displayName = 'AlertDialogActionNative'; -const Title = React.forwardRef(({ asChild, ...props }, ref) => { +const Title = React.forwardRef((props, ref) => { const { nativeID } = useRootInternalContext(); - const Component = asChild ? Slot : AnimatableText; - return ; + return ; }); Title.displayName = 'AlertDialogTitleNative'; -const Description = React.forwardRef( - ({ asChild, ...props }, ref) => { - const { nativeID } = useRootInternalContext(); - const Component = asChild ? Slot : AnimatableText; - return ; - } -); +const Description = React.forwardRef((props, ref) => { + const { nativeID } = useRootInternalContext(); + return ; +}); Description.displayName = 'AlertDialogDescriptionNative'; diff --git a/packages/alert-dialog-new/src/native/alert-dialog-native.tsx b/packages/alert-dialog/src/native/alert-dialog-native.tsx similarity index 57% rename from packages/alert-dialog-new/src/native/alert-dialog-native.tsx rename to packages/alert-dialog/src/native/alert-dialog-native.tsx index dc422b02..488ab657 100644 --- a/packages/alert-dialog-new/src/native/alert-dialog-native.tsx +++ b/packages/alert-dialog/src/native/alert-dialog-native.tsx @@ -20,52 +20,81 @@ import type { } from './types'; function Root(_props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; } Root.displayName = 'AlertDialogRootNative'; const Trigger = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Trigger` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; }); Trigger.displayName = 'AlertDialogTriggerNative'; function Portal(_props: PortalProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Portal` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; } const Overlay = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Overlay` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; }); Overlay.displayName = 'AlertDialogOverlayNative'; const Content = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Content` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; }); Content.displayName = 'AlertDialogContentNative'; const Cancel = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Cancel` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; }); Cancel.displayName = 'AlertDialogCloseNative'; const Action = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Action` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; }); Action.displayName = 'AlertDialogActionNative'; const Title = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Title` from @rn-primitives/alert-dialog/native is only supported on native.'); + } return null; }); Title.displayName = 'AlertDialogTitleNative'; const Description = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log( + '`Description` from @rn-primitives/alert-dialog/native is only supported on native.' + ); + } return null; }); diff --git a/packages/alert-dialog-new/src/native/index.ts b/packages/alert-dialog/src/native/index.ts similarity index 100% rename from packages/alert-dialog-new/src/native/index.ts rename to packages/alert-dialog/src/native/index.ts diff --git a/packages/alert-dialog/src/native/types.ts b/packages/alert-dialog/src/native/types.ts new file mode 100644 index 00000000..9c62e23d --- /dev/null +++ b/packages/alert-dialog/src/native/types.ts @@ -0,0 +1,86 @@ +import type { + PressableProps, + PressableRef, + TextProps, + ViewProps, +} from '@rn-primitives/core/dist/native'; +import type { TextRef, ViewRef } from '@rn-primitives/types'; +import type { + BaseAlertDialogActionProps, + BaseAlertDialogCancelProps, + BaseAlertDialogContentProps, + BaseAlertDialogDescriptionProps, + BaseAlertDialogOverlayProps, + BaseAlertDialogPortalProps, + BaseAlertDialogRootProps, + BaseAlertDialogTitleProps, + BaseAlertDialogTriggerProps, +} from '../base-types'; + +type ActionPropsNativeOnly = PressableProps; +type ActionNativeOnlyRef = PressableRef; +type CancelPropsNativeOnly = PressableProps; +type CancelNativeOnlyRef = PressableRef; +type ContentPropsNativeOnly = ViewProps; +type ContentNativeOnlyRef = ViewRef; +type DescriptionPropsNativeOnly = TextProps; +type DescriptionNativeOnlyRef = TextRef; +type OverlayPropsNativeOnly = ViewProps; +type OverlayNativeOnlyRef = ViewRef; +type PortalPropsNativeOnly = { + hostName?: string; + children?: React.ReactNode; +}; +type TitlePropsNativeOnly = TextProps; +type TitleNativeOnlyRef = TextRef; +type TriggerPropsNativeOnly = PressableProps; +type TriggerNativeOnlyRef = PressableRef; + +type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; +type ActionProps = ActionPropsNativeOnly & BaseAlertDialogActionProps; +type ActionRef = ActionNativeOnlyRef; +type CancelProps = CancelPropsNativeOnly & BaseAlertDialogCancelProps; +type CancelRef = CancelNativeOnlyRef; +type ContentProps = ContentPropsNativeOnly & BaseAlertDialogContentProps; +type ContentRef = ContentNativeOnlyRef; +type DescriptionProps = DescriptionPropsNativeOnly & BaseAlertDialogDescriptionProps; +type DescriptionRef = DescriptionNativeOnlyRef; +type OverlayProps = OverlayPropsNativeOnly & BaseAlertDialogOverlayProps; +type OverlayRef = OverlayNativeOnlyRef; +type PortalProps = PortalPropsNativeOnly & BaseAlertDialogPortalProps; +type TitleProps = TitlePropsNativeOnly & BaseAlertDialogTitleProps; +type TitleRef = TitleNativeOnlyRef; +type TriggerProps = TriggerPropsNativeOnly & BaseAlertDialogTriggerProps; +type TriggerRef = TriggerNativeOnlyRef; + +export type { + ActionProps, + ActionPropsNativeOnly, + ActionRef, + CancelProps, + CancelPropsNativeOnly, + CancelRef, + ContentNativeOnlyRef, + ContentProps, + ContentPropsNativeOnly, + ContentRef, + DescriptionNativeOnlyRef, + DescriptionProps, + DescriptionPropsNativeOnly, + DescriptionRef, + OverlayNativeOnlyRef, + OverlayProps, + OverlayPropsNativeOnly, + OverlayRef, + PortalProps, + PortalPropsNativeOnly, + RootProps, + TitleNativeOnlyRef, + TitleProps, + TitlePropsNativeOnly, + TitleRef, + TriggerNativeOnlyRef, + TriggerProps, + TriggerPropsNativeOnly, + TriggerRef, +}; diff --git a/packages/alert-dialog/src/types.ts b/packages/alert-dialog/src/types.ts deleted file mode 100644 index f502938b..00000000 --- a/packages/alert-dialog/src/types.ts +++ /dev/null @@ -1,85 +0,0 @@ -import type { - ForceMountable, - PressableRef, - SlottablePressableProps, - SlottableTextProps, - SlottableViewProps, - TextRef, - ViewRef, -} from '@rn-primitives/types'; - -type RootProps = { - open?: boolean; - onOpenChange?: (value: boolean) => void; - defaultOpen?: boolean; -} & SlottableViewProps; - -interface RootContext { - open: boolean; - onOpenChange: (value: boolean) => void; -} - -interface PortalProps extends ForceMountable { - children: React.ReactNode; - /** - * Platform: NATIVE ONLY - */ - hostName?: string; - /** - * Platform: WEB ONLY - */ - container?: HTMLElement | null | undefined; -} -type OverlayProps = ForceMountable & SlottableViewProps; - -type ContentProps = ForceMountable & - SlottableViewProps & { - /** - * Platform: WEB ONLY - */ - onOpenAutoFocus?: (ev: Event) => void; - /** - * Platform: WEB ONLY - */ - onCloseAutoFocus?: (ev: Event) => void; - /** - * Platform: WEB ONLY - */ - onEscapeKeyDown?: (ev: Event) => void; - }; - -type TriggerProps = SlottablePressableProps; -type CancelProps = SlottablePressableProps; -type ActionProps = SlottablePressableProps; -type TitleProps = SlottableTextProps; -type DescriptionProps = SlottableTextProps; - -type ActionRef = PressableRef; -type CancelRef = PressableRef; -type ContentRef = ViewRef; -type DescriptionRef = TextRef; -type OverlayRef = ViewRef; -type RootRef = ViewRef; -type TitleRef = TextRef; -type TriggerRef = PressableRef; - -export type { - ActionProps, - ActionRef, - CancelProps, - CancelRef, - ContentProps, - ContentRef, - DescriptionProps, - DescriptionRef, - OverlayProps, - OverlayRef, - PortalProps, - RootContext, - RootProps, - RootRef, - TitleProps, - TitleRef, - TriggerProps, - TriggerRef, -}; diff --git a/packages/alert-dialog-new/src/universal/alert-dialog.tsx b/packages/alert-dialog/src/universal/alert-dialog.tsx similarity index 79% rename from packages/alert-dialog-new/src/universal/alert-dialog.tsx rename to packages/alert-dialog/src/universal/alert-dialog.tsx index 74ef3e7d..befc447c 100644 --- a/packages/alert-dialog-new/src/universal/alert-dialog.tsx +++ b/packages/alert-dialog/src/universal/alert-dialog.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { Action as ActionNative, + ActionRef as ActionNativeRef, Cancel as CancelNative, type CancelRef as CancelNativeRef, Content as ContentNative, @@ -15,6 +16,7 @@ import { } from '../native'; import type { ActionProps, + ActionRef, CancelProps, CancelRef, ContentProps, @@ -30,11 +32,9 @@ import type { function Root(props: RootProps) { return ; } - -function Content({ web: _web, native, ...props }: ContentProps) { - return ; -} - +const Content = React.forwardRef(({ web: _web, native, ...props }, ref) => { + return ; +}); function Description({ web: _web, native, ...props }: DescriptionProps) { return ; } @@ -61,9 +61,11 @@ const Trigger = React.forwardRef( Trigger.displayName = 'AlertDialogTriggerUniversal'; -function Action({ web: _web, native, ...props }: ActionProps) { - return ; -} +const Action = React.forwardRef(({ web: _web, native, ...props }, ref) => { + return } {...props} {...native} />; +}); + +Action.displayName = 'AlertDialogActionUniversal'; const Cancel = React.forwardRef(({ web: _web, native, ...props }, ref) => { return } {...props} {...native} />; diff --git a/packages/alert-dialog/src/universal/alert-dialog.web.tsx b/packages/alert-dialog/src/universal/alert-dialog.web.tsx new file mode 100644 index 00000000..c0c964bd --- /dev/null +++ b/packages/alert-dialog/src/universal/alert-dialog.web.tsx @@ -0,0 +1,133 @@ +import { Pressable, Text, View } from '@rn-primitives/core'; +import * as React from 'react'; +import { + Action as ActionWeb, + Cancel as CancelWeb, + ContentRef, + Content as ContentWeb, + Description as DescriptionWeb, + Overlay as OverlayWeb, + Portal as PortalWeb, + Root as RootWeb, + Title as TitleWeb, + Trigger as TriggerWeb, + useRootContext, +} from '../web'; +import type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +} from './types'; + +function Root(props: RootProps) { + return ; +} + +const Content = React.forwardRef( + ({ web, native: _native, style, ...props }, ref) => { + if (style) { + return ( + + + + ); + } + return ; + } +); + +Content.displayName = 'AlertDialogContentUniversal'; + +function Description({ web, native: _native, style, ...props }: DescriptionProps) { + if (style) { + return ( + + + + ); + } + + return ; +} + +function Overlay({ web, native: _native, style, ...props }: OverlayProps) { + if (style) { + return ( + + + + ); + } + return ; +} + +function Portal({ web, native: _native, ...props }: PortalProps) { + return ; +} + +function Title({ web, native: _native, style, ...props }: TitleProps) { + if (style) { + return ( + + + + ); + } + return ; +} + +const Trigger = React.forwardRef( + ({ native: _native, web, ...props }, ref) => { + return ( + + + + ); + } +); + +Trigger.displayName = 'AlertDialogTriggerUniversal'; + +const Action = React.forwardRef( + ({ native: _native, web, ...props }, ref) => { + return ( + + + + ); + } +); + +const Cancel = React.forwardRef( + ({ native: _native, web, ...props }, ref) => { + return ( + + + + ); + } +); + +Cancel.displayName = 'AlertDialogCancelUniversal'; + +export { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Root, + Title, + Trigger, + useRootContext, +}; diff --git a/packages/alert-dialog-new/src/universal/index.ts b/packages/alert-dialog/src/universal/index.ts similarity index 96% rename from packages/alert-dialog-new/src/universal/index.ts rename to packages/alert-dialog/src/universal/index.ts index 7be1e4fc..64d14f78 100644 --- a/packages/alert-dialog-new/src/universal/index.ts +++ b/packages/alert-dialog/src/universal/index.ts @@ -13,6 +13,7 @@ export { export type { ActionProps, + ActionRef, CancelProps, CancelRef, ContentProps, diff --git a/packages/alert-dialog/src/universal/types.ts b/packages/alert-dialog/src/universal/types.ts new file mode 100644 index 00000000..68a1f47b --- /dev/null +++ b/packages/alert-dialog/src/universal/types.ts @@ -0,0 +1,126 @@ +import type { + PressablePropsUniversal, + PressableRefUniversal, + TextPropsUniversal, + ViewPropsUniversal, +} from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { + BaseAlertDialogActionProps, + BaseAlertDialogCancelProps, + BaseAlertDialogContentProps, + BaseAlertDialogDescriptionProps, + BaseAlertDialogOverlayProps, + BaseAlertDialogPortalProps, + BaseAlertDialogRootProps, + BaseAlertDialogTitleProps, + BaseAlertDialogTriggerProps, +} from '../base-types'; +import type { + ActionPropsNativeOnly, + CancelPropsNativeOnly, + ContentPropsNativeOnly, + DescriptionPropsNativeOnly, + OverlayPropsNativeOnly, + PortalPropsNativeOnly, + TitlePropsNativeOnly, + TriggerPropsNativeOnly, +} from '../native/types'; +import type { + ActionPropsWebOnly, + CancelPropsWebOnly, + ContentPropsWebOnly, + DescriptionPropsWebOnly, + OverlayPropsWebOnly, + PortalPropsWebOnly, + TitlePropsWebOnly, + TriggerPropsWebOnly, +} from '../web/types'; + +type ContentProps = Prettify< + BaseAlertDialogContentProps & + ViewPropsUniversal & { + native?: ContentPropsNativeOnly; + web?: ContentPropsWebOnly; + } +>; + +type RootProps = Prettify< + BaseAlertDialogRootProps & { + children?: React.ReactNode; + } +>; + +type TriggerProps = Prettify< + BaseAlertDialogTriggerProps & + PressablePropsUniversal & { + native?: TriggerPropsNativeOnly; + web?: TriggerPropsWebOnly; + } +>; +type TriggerRef = PressableRefUniversal; + +type ActionProps = Prettify< + BaseAlertDialogActionProps & + PressablePropsUniversal & { + native?: ActionPropsNativeOnly; + web?: ActionPropsWebOnly; + } +>; + +type ActionRef = PressableRefUniversal; + +type CancelProps = Prettify< + BaseAlertDialogCancelProps & + PressablePropsUniversal & { + native?: CancelPropsNativeOnly; + web?: CancelPropsWebOnly; + } +>; +type CancelRef = PressableRefUniversal; + +type DescriptionProps = Prettify< + BaseAlertDialogDescriptionProps & + TextPropsUniversal & { + native?: DescriptionPropsNativeOnly; + web?: DescriptionPropsWebOnly; + } +>; + +type OverlayProps = Prettify< + BaseAlertDialogOverlayProps & + ViewPropsUniversal & { + native?: OverlayPropsNativeOnly; + web?: OverlayPropsWebOnly; + } +>; + +type PortalProps = Prettify< + BaseAlertDialogPortalProps & { + native?: PortalPropsNativeOnly; + web?: PortalPropsWebOnly; + } +>; + +type TitleProps = Prettify< + BaseAlertDialogTitleProps & + TextPropsUniversal & { + native?: TitlePropsNativeOnly; + web?: TitlePropsWebOnly; + } +>; + +export type { + ActionProps, + ActionRef, + CancelProps, + CancelRef, + ContentProps, + DescriptionProps, + OverlayProps, + PortalProps, + RootProps, + TitleProps, + TriggerProps, + TriggerRef, +}; diff --git a/packages/alert-dialog-new/src/utils/contexts.ts b/packages/alert-dialog/src/utils/contexts.ts similarity index 100% rename from packages/alert-dialog-new/src/utils/contexts.ts rename to packages/alert-dialog/src/utils/contexts.ts diff --git a/packages/alert-dialog-new/src/web/alert-dialog-web.tsx b/packages/alert-dialog/src/web/alert-dialog-web.tsx similarity index 53% rename from packages/alert-dialog-new/src/web/alert-dialog-web.tsx rename to packages/alert-dialog/src/web/alert-dialog-web.tsx index 730d0b34..a7545ca0 100644 --- a/packages/alert-dialog-new/src/web/alert-dialog-web.tsx +++ b/packages/alert-dialog/src/web/alert-dialog-web.tsx @@ -20,50 +20,77 @@ import type { } from './types'; function Root(_props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; } const Trigger = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Trigger` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; }); Trigger.displayName = 'AlertDialogTriggerWeb'; const Content = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Portal` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; }); Content.displayName = 'AlertDialogContentWeb'; const Action = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Overlay` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; }); Action.displayName = 'AlertDialogActionWeb'; const Cancel = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Content` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; }); Cancel.displayName = 'AlertDialogCancelWeb'; const Description = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Cancel` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; }); Description.displayName = 'AlertDialogDescriptionWeb'; const Overlay = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Action` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; }); Overlay.displayName = 'AlertDialogOverlayWeb'; function Portal(_props: PortalProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Title` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; } const Title = React.forwardRef(() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Description` from @rn-primitives/alert-dialog/web is only supported on web.'); + } return null; }); @@ -71,7 +98,7 @@ Title.displayName = 'AlertDialogTitleWeb'; const useRootContext = () => { throw new Error( - 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/alert-dialog` or `@rn-primitives/alert-dialog/native`' + 'Cannot access the web useRootContext on a web platform. Please import from `@rn-primitives/alert-dialog` or `@rn-primitives/alert-dialog/web`' ); return {} as RootContextReturnType; }; diff --git a/packages/alert-dialog-new/src/web/alert-dialog-web.web.tsx b/packages/alert-dialog/src/web/alert-dialog-web.web.tsx similarity index 76% rename from packages/alert-dialog-new/src/web/alert-dialog-web.web.tsx rename to packages/alert-dialog/src/web/alert-dialog-web.web.tsx index 9f6180fb..bc162592 100644 --- a/packages/alert-dialog-new/src/web/alert-dialog-web.web.tsx +++ b/packages/alert-dialog/src/web/alert-dialog-web.web.tsx @@ -56,23 +56,7 @@ function Root({ } const Trigger = React.forwardRef((props, ref) => { - const triggerRef = React.useRef(null); - - React.useImperativeHandle( - ref, - () => - triggerRef.current - ? { - ...triggerRef.current, - trigger: () => { - triggerRef.current?.click(); - }, - } - : ({} as TriggerRef), - [triggerRef.current] - ); - - return ; + return ; }); Trigger.displayName = 'AlertDialogTriggerWeb'; @@ -90,22 +74,7 @@ const Action = React.forwardRef((props, ref) => { Action.displayName = 'AlertDialogActionWeb'; const Cancel = React.forwardRef((props, ref) => { - const triggerRef = React.useRef(null); - React.useImperativeHandle( - ref, - () => - triggerRef.current - ? { - ...triggerRef.current, - cancel: () => { - triggerRef.current?.click(); - }, - } - : ({} as CancelRef), - [] - ); - - return ; + return ; }); Cancel.displayName = 'AlertDialogCancelWeb'; diff --git a/packages/alert-dialog-new/src/web/index.ts b/packages/alert-dialog/src/web/index.ts similarity index 100% rename from packages/alert-dialog-new/src/web/index.ts rename to packages/alert-dialog/src/web/index.ts diff --git a/packages/alert-dialog/src/web/types.ts b/packages/alert-dialog/src/web/types.ts new file mode 100644 index 00000000..0cdbc85a --- /dev/null +++ b/packages/alert-dialog/src/web/types.ts @@ -0,0 +1,107 @@ +import type { + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Title, + Trigger, +} from '@radix-ui/react-alert-dialog'; +import type { Slottable } from '@rn-primitives/types'; +import type { + BaseAlertDialogActionProps, + BaseAlertDialogCancelProps, + BaseAlertDialogContentProps, + BaseAlertDialogDescriptionProps, + BaseAlertDialogOverlayProps, + BaseAlertDialogPortalProps, + BaseAlertDialogRootProps, + BaseAlertDialogTitleProps, + BaseAlertDialogTriggerProps, +} from '../base-types'; + +type ContentPropsWebOnly = React.ComponentPropsWithRef<'div'>; + +type ContentWebOnlyRef = React.ElementRef; + +type TriggerPropsWebOnly = React.ComponentPropsWithRef<'button'>; +type TriggerWebOnlyRef = React.ElementRef; + +type ActionPropsWebOnly = React.ComponentPropsWithRef<'button'>; +type ActionWebOnlyRef = React.ElementRef; + +type CancelPropsWebOnly = React.ComponentPropsWithRef<'button'>; +type CancelWebOnlyRef = React.ElementRef; + +type DescriptionPropsWebOnly = React.ComponentPropsWithRef<'p'>; +type DescriptionWebOnlyRef = React.ElementRef; + +type OverlayPropsWebOnly = React.ComponentPropsWithRef<'div'>; +type OverlayWebOnlyRef = React.ElementRef; + +type PortalPropsWebOnly = Pick, 'container'>; +type PortalWebOnlyRef = React.ElementRef; + +type TitlePropsWebOnly = React.ComponentPropsWithRef<'h1'>; +type TitleWebOnlyRef = React.ElementRef; + +type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; + +type ActionProps = Slottable; +type ActionRef = ActionWebOnlyRef; + +type CancelProps = Slottable; +type CancelRef = CancelWebOnlyRef; + +type DescriptionProps = Slottable; +type DescriptionRef = DescriptionWebOnlyRef; + +type OverlayProps = Slottable; +type OverlayRef = OverlayWebOnlyRef; + +type PortalProps = BaseAlertDialogPortalProps & PortalPropsWebOnly; + +type TitleProps = Slottable; +type TitleRef = TitleWebOnlyRef; + +type TriggerProps = Slottable; +type TriggerRef = TriggerWebOnlyRef; + +type ContentProps = Slottable; +type ContentRef = ContentWebOnlyRef; + +export type { + ActionProps, + ActionPropsWebOnly, + ActionRef, + ActionWebOnlyRef, + CancelProps, + CancelPropsWebOnly, + CancelRef, + CancelWebOnlyRef, + ContentProps, + ContentPropsWebOnly, + ContentRef, + ContentWebOnlyRef, + DescriptionProps, + DescriptionPropsWebOnly, + DescriptionRef, + DescriptionWebOnlyRef, + OverlayProps, + OverlayPropsWebOnly, + OverlayRef, + OverlayWebOnlyRef, + PortalProps, + PortalPropsWebOnly, + PortalWebOnlyRef, + RootProps, + TitleProps, + TitlePropsWebOnly, + TitleRef, + TitleWebOnlyRef, + TriggerProps, + TriggerPropsWebOnly, + TriggerRef, + TriggerWebOnlyRef, +}; diff --git a/packages/alert-dialog/tsup.config.ts b/packages/alert-dialog/tsup.config.ts index 3e9fc1a7..b1de639c 100644 --- a/packages/alert-dialog/tsup.config.ts +++ b/packages/alert-dialog/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/alert-dialog.tsx', 'src/alert-dialog.web.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/alert-dialog.tsx', + 'src/universal/alert-dialog.web.tsx', + 'src/native/index.ts', + 'src/native/alert-dialog-native.tsx', + 'src/native/alert-dialog-native.native.tsx', + 'src/web/index.ts', + 'src/web/alert-dialog-web.tsx', + 'src/web/alert-dialog-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './alert-dialog'], + external: [ + 'react', + './universal', + './alert-dialog', + '../native', + './alert-dialog-native', + '../web', + './alert-dialog-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/packages/core/src/native/animatable/animatable-pressable.tsx b/packages/core/src/native/animatable/animatable-pressable.tsx index 19733931..15ef2ced 100644 --- a/packages/core/src/native/animatable/animatable-pressable.tsx +++ b/packages/core/src/native/animatable/animatable-pressable.tsx @@ -24,6 +24,7 @@ const AnimatablePressable = React.forwardRef; } diff --git a/packages/core/src/universal/components.tsx b/packages/core/src/universal/components.tsx index 750fc2a7..b5848428 100644 --- a/packages/core/src/universal/components.tsx +++ b/packages/core/src/universal/components.tsx @@ -15,6 +15,8 @@ import type { ViewProps, } from './types'; +// TODO: update to react 19 and remove the forwardRef + function Image({ src, web: _web, native, ...props }: ImageProps) { return ; } diff --git a/packages/core/src/universal/components.web.tsx b/packages/core/src/universal/components.web.tsx index 13e3739c..85dc5b12 100644 --- a/packages/core/src/universal/components.web.tsx +++ b/packages/core/src/universal/components.web.tsx @@ -40,12 +40,13 @@ function PressableImpl( React.useImperativeHandle( ref, () => { - return { - ...augmentedRef.current, + if (!augmentedRef.current) return null as unknown as PressableRef; + + return Object.assign(augmentedRef.current, { press: () => { augmentedRef.current?.click(); }, - } as PressableRef; + }); }, [augmentedRef.current] ); diff --git a/packages/hooks/src/use-augmented-ref.tsx b/packages/hooks/src/use-augmented-ref.tsx index 84ae6908..b73a5a03 100644 --- a/packages/hooks/src/use-augmented-ref.tsx +++ b/packages/hooks/src/use-augmented-ref.tsx @@ -12,10 +12,10 @@ export function useAugmentedRef({ ref, methods, deps = [] }: AugmentRefProps< React.useImperativeHandle( ref, () => { - return { - ...augmentedRef.current, + if (!augmentedRef.current) return null as unknown as T; + return Object.assign(augmentedRef.current, { ...methods, - } as T; + }); }, [augmentedRef.current, methods] ); diff --git a/packages/navigation-menu/src/navigation-menu.tsx b/packages/navigation-menu/src/navigation-menu.tsx index 729c7887..8ce75535 100644 --- a/packages/navigation-menu/src/navigation-menu.tsx +++ b/packages/navigation-menu/src/navigation-menu.tsx @@ -120,6 +120,7 @@ const Trigger = React.forwardRef( const { value, onValueChange, setTriggerPosition } = useRootContext(); const { value: menuValue } = useItemContext(); + // TODO: double check that the ref passed to this component has all the correct methods React.useImperativeHandle( ref, () => { diff --git a/packages/slot/src/slot.tsx b/packages/slot/src/slot.tsx index ace2aa31..5f1e6e3b 100644 --- a/packages/slot/src/slot.tsx +++ b/packages/slot/src/slot.tsx @@ -33,9 +33,27 @@ function SlotImplementation( return null; } + if (children.type === React.Fragment) { + return ( + <> + {React.Children.toArray((children.props as any).children).map((child): any => + React.isValidElement(child) + ? SlotImplementation({ ...restOfProps, children: child } as any, forwardedRef) + : child + )} + + ); + } + return React.cloneElement(children, { ...mergeProps(restOfProps, children.props as any), - ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, + ...(children.type === 'function' + ? {} + : { + ref: forwardedRef + ? composeRefs(forwardedRef, (children as any).ref) + : (children as any).ref, + }), } as unknown as Partial>); } diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 4fa5358c..9e3df50a 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -15,6 +15,8 @@ import type { import type { Prettify } from './helper'; export * from './rn-platform-specific'; +// TODO: revise the types + type PropsWithout = Omit; type PropsWithoutHTML = PropsWithout>; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38efd4f7..7ef06268 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -546,9 +546,6 @@ importers: '@rn-primitives/alert-dialog': specifier: workspace:* version: link:../../packages/alert-dialog - '@rn-primitives/alert-dialog-new': - specifier: workspace:* - version: link:../../packages/alert-dialog-new '@rn-primitives/aspect-ratio': specifier: workspace:* version: link:../../packages/aspect-ratio @@ -800,43 +797,6 @@ importers: version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) packages/alert-dialog: - dependencies: - '@radix-ui/react-alert-dialog': - specifier: ^1.1.1 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rn-primitives/hooks': - specifier: workspace:* - version: link:../hooks - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot - '@rn-primitives/types': - specifier: workspace:* - version: link:../types - react-native-web: - specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - devDependencies: - '@rn-primitives/portal': - specifier: workspace:* - version: link:../portal - '@tsconfig/react-native': - specifier: ^1.0.1 - version: 1.0.5 - '@types/react': - specifier: ~18.3.12 - version: 18.3.12 - react: - specifier: 18.3.1 - version: 18.3.1 - react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - tsup: - specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) - - packages/alert-dialog-new: dependencies: '@radix-ui/react-alert-dialog': specifier: ^1.1.6 @@ -844,6 +804,9 @@ importers: '@rn-primitives/animatable': specifier: workspace:* version: link:../animatable + '@rn-primitives/core': + specifier: workspace:* + version: link:../core '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -3446,19 +3409,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-alert-dialog@1.1.2': - resolution: {integrity: sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-alert-dialog@1.1.6': resolution: {integrity: sha512-p4XnPqgej8sZAAReCAKgz1REYZEBLR8hU9Pg27wFnCWIMc8g1ccCs0FjBcy05V15VTu8pAePw/VDYeOm/uZ6yQ==} peerDependencies: @@ -11087,20 +11037,6 @@ snapshots: '@types/react': 18.3.12 '@types/react-dom': 18.3.1 - '@radix-ui/react-alert-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dialog': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 - '@radix-ui/react-alert-dialog@1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 From 731d668ec2e1ee71017a74bb692a7d9ec35d529d Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Mar 2025 15:09:40 -0400 Subject: [PATCH 047/106] wip to using react 19 --- apps/docs/package.json | 28 +- apps/expo-nativewind/package.json | 38 +- apps/expo-stylesheet/package.json | 34 +- apps/nextjs-nativewind/package.json | 22 +- apps/nextjs-no-rn/package.json | 16 +- package.json | 3 - packages/accordion/package.json | 6 +- packages/alert-dialog/package.json | 13 +- packages/animatable/index.ts | 26 - packages/animatable/package.json | 56 - packages/animatable/src/animatable-image.tsx | 43 - .../animatable/src/animatable-pressable.tsx | 94 - packages/animatable/src/animatable-text.tsx | 47 - packages/animatable/src/animatable-view.tsx | 45 - packages/animatable/tsconfig.json | 29 - packages/animatable/tsup.config.ts | 18 - packages/aspect-ratio/package.json | 6 +- packages/avatar/package.json | 6 +- packages/checkbox/package.json | 6 +- packages/collapsible/package.json | 6 +- packages/context-menu/package.json | 6 +- packages/core/package.json | 6 +- .../native/animatable/animatable-image.tsx | 19 +- .../animatable/animatable-pressable.tsx | 43 +- .../src/native/animatable/animatable-text.tsx | 19 +- .../src/native/animatable/animatable-view.tsx | 21 +- packages/core/src/native/animatable/types.ts | 44 +- packages/core/src/native/components.tsx | 19 +- packages/core/src/universal/components.tsx | 23 +- .../core/src/universal/components.web.tsx | 28 +- packages/core/src/universal/types.ts | 1 + packages/core/src/web/components.tsx | 22 +- packages/core/src/web/components.web.tsx | 38 +- packages/core/src/web/platform.ts | 9 +- packages/core/src/web/types.ts | 6 +- packages/dialog/package.json | 6 +- packages/dropdown-menu/package.json | 6 +- packages/hooks/package.json | 6 +- packages/hooks/src/use-augmented-ref.tsx | 2 +- packages/hover-card/package.json | 6 +- packages/label/package.json | 6 +- packages/menubar/package.json | 6 +- packages/navigation-menu/package.json | 6 +- .../navigation-menu/src/navigation-menu.tsx | 3 +- packages/popover/package.json | 6 +- packages/portal/package.json | 8 +- packages/progress/package.json | 6 +- packages/radio-group/package.json | 6 +- packages/select/package.json | 6 +- packages/separator/package.json | 6 +- packages/slider/package.json | 6 +- packages/slot/package.json | 6 +- packages/slot/src/index.ts | 5 +- packages/slot/src/slot.tsx | 33 +- packages/slot/src/slot.web.ts | 4 +- packages/switch/package.json | 6 +- packages/table/package.json | 6 +- packages/tabs/package.json | 6 +- packages/toast/package.json | 6 +- packages/toggle-group/package.json | 6 +- packages/toggle/package.json | 6 +- packages/toolbar/package.json | 6 +- packages/tooltip/package.json | 6 +- packages/tooltip/src/tooltip.tsx | 78 +- packages/tooltip/src/types.ts | 2 +- packages/types/package.json | 6 +- packages/types/src/index.ts | 9 +- packages/utils/package.json | 6 +- ...react-native__assets-registry@0.76.3.patch | 160 - pnpm-lock.yaml | 6562 ++++++++--------- 70 files changed, 3238 insertions(+), 4618 deletions(-) delete mode 100644 packages/animatable/index.ts delete mode 100644 packages/animatable/package.json delete mode 100644 packages/animatable/src/animatable-image.tsx delete mode 100644 packages/animatable/src/animatable-pressable.tsx delete mode 100644 packages/animatable/src/animatable-text.tsx delete mode 100644 packages/animatable/src/animatable-view.tsx delete mode 100644 packages/animatable/tsconfig.json delete mode 100644 packages/animatable/tsup.config.ts delete mode 100644 patches/@react-native__assets-registry@0.76.3.patch diff --git a/apps/docs/package.json b/apps/docs/package.json index c861e885..61a82e4e 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -11,12 +11,12 @@ "clean": "rm -rf .turbo node_modules dist .astro" }, "dependencies": { - "@astrojs/check": "^0.5.6", - "@astrojs/react": "^3.0.10", - "@astrojs/starlight": "^0.21.0", - "@astrojs/starlight-tailwind": "^2.0.1", - "@astrojs/tailwind": "^5.1.0", - "@astrojs/vercel": "^7.3.4", + "@astrojs/check": "^0.9.4", + "@astrojs/react": "^4.2.1", + "@astrojs/starlight": "^0.32.2", + "@astrojs/starlight-tailwind": "^3.0.0", + "@astrojs/tailwind": "^6.0.0", + "@astrojs/vercel": "^8.1.2", "@radix-ui/react-collapsible": "^1.1.0", "@radix-ui/react-dropdown-menu": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", @@ -52,17 +52,17 @@ "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", - "@types/react": "~18.3.12", - "@types/react-dom": "^18.2.19", + "@types/react": "19.0.10", + "@types/react-dom": "19.0.4", "@vercel/analytics": "^1.3.1", - "astro": "^4.4.9", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.0", + "astro": "^5.5.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "lucide-react": "^0.334.0", - "react": "18.3.1", - "react-dom": "18.3.1", + "react": "19.0.0", + "react-dom": "19.0.0", "sharp": "^0.32.5", - "tailwind-merge": "^2.5.3", + "tailwind-merge": "^3.0.2", "tailwindcss": "^3.4.13", "tailwindcss-animate": "^1.0.7", "typescript": "^5.3.3" diff --git a/apps/expo-nativewind/package.json b/apps/expo-nativewind/package.json index 6f1c0a1c..fbf8e5ad 100644 --- a/apps/expo-nativewind/package.json +++ b/apps/expo-nativewind/package.json @@ -46,33 +46,33 @@ "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", - "class-variance-authority": "^0.7.0", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "expo": "^52.0.11", - "expo-linking": "~7.0.3", - "expo-navigation-bar": "~4.0.4", - "expo-router": "~4.0.9", - "expo-splash-screen": "~0.29.13", - "expo-status-bar": "~2.0.0", - "expo-system-ui": "~4.0.4", - "lucide-react-native": "^0.451.0", + "expo": "53.0.0-canary-20250306-d9d3e02", + "expo-linking": "7.1.0-canary-20250306-d9d3e02", + "expo-navigation-bar": "5.0.0-canary-20250306-d9d3e02", + "expo-router": "4.0.18-canary-20250306-d9d3e02", + "expo-splash-screen": "0.29.23-canary-20250306-d9d3e02", + "expo-status-bar": "2.0.2-canary-20250306-d9d3e02", + "expo-system-ui": "5.0.0-canary-20250306-d9d3e02", + "lucide-react-native": "^0.482.0", "nativewind": "^4.1.23", - "react": "18.3.1", - "react-dom": "18.3.1", - "react-native": "0.76.3", - "react-native-reanimated": "~3.16.2", - "react-native-safe-area-context": "4.12.0", - "react-native-screens": "~4.1.0", - "react-native-svg": "15.8.0", + "react": "19.0.0", + "react-dom": "19.0.0", + "react-native": "0.78.0", + "react-native-reanimated": "~3.17.1", + "react-native-safe-area-context": "5.2.0", + "react-native-screens": "~4.9.2", + "react-native-svg": "15.11.2", "react-native-web": "~0.19.13", - "tailwind-merge": "^2.5.3", + "tailwind-merge": "^3.0.2", "tailwindcss": "^3.4.13", "tailwindcss-animate": "^1.0.7", - "zustand": "^4.4.7" + "zustand": "^5.0.3" }, "devDependencies": { "@babel/core": "^7.26.0", - "@types/react": "~18.3.12", + "@types/react": "19.0.10", "typescript": "^5.3.3" }, "private": true diff --git a/apps/expo-stylesheet/package.json b/apps/expo-stylesheet/package.json index 793779b0..478cba95 100644 --- a/apps/expo-stylesheet/package.json +++ b/apps/expo-stylesheet/package.json @@ -46,27 +46,27 @@ "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", - "expo": "^52.0.11", - "expo-linking": "~7.0.3", - "expo-navigation-bar": "~4.0.4", - "expo-router": "~4.0.9", - "expo-splash-screen": "~0.29.13", - "expo-status-bar": "~2.0.0", - "expo-system-ui": "~4.0.4", - "lucide-react-native": "^0.451.0", - "react": "18.3.1", - "react-dom": "18.3.1", - "react-native": "0.76.3", - "react-native-reanimated": "~3.16.2", - "react-native-safe-area-context": "4.12.0", - "react-native-screens": "~4.1.0", - "react-native-svg": "15.8.0", + "expo": "53.0.0-canary-20250306-d9d3e02", + "expo-linking": "7.1.0-canary-20250306-d9d3e02", + "expo-navigation-bar": "5.0.0-canary-20250306-d9d3e02", + "expo-router": "4.0.18-canary-20250306-d9d3e02", + "expo-splash-screen": "0.29.23-canary-20250306-d9d3e02", + "expo-status-bar": "2.0.2-canary-20250306-d9d3e02", + "expo-system-ui": "5.0.0-canary-20250306-d9d3e02", + "lucide-react-native": "^0.482.0", + "react": "19.0.0", + "react-dom": "19.0.0", + "react-native": "0.78.0", + "react-native-reanimated": "~3.17.1", + "react-native-safe-area-context": "5.2.0", + "react-native-screens": "~4.9.2", + "react-native-svg": "15.11.2", "react-native-web": "~0.19.13", - "zustand": "^4.4.7" + "zustand": "^5.0.3" }, "devDependencies": { "@babel/core": "^7.26.0", - "@types/react": "~18.3.12", + "@types/react": "19.0.10", "typescript": "^5.3.3" }, "private": true diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index e97087e4..e4acc09b 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev --turbopack", "build": "next build", "start": "next start", "lint": "next lint", @@ -43,23 +43,23 @@ "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", - "class-variance-authority": "^0.7.0", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "lucide-react-native": "^0.451.0", + "lucide-react-native": "^0.482.0", "nativewind": "^4.1.23", - "next": "14.2.14", - "react": "^18", - "react-dom": "^18", - "react-native": "0.76.3", - "react-native-svg": "15.8.0", + "next": "15.2.2", + "react": "19.0.0", + "react-dom": "19.0.0", + "react-native": "0.78.0", + "react-native-svg": "15.11.2", "react-native-web": "~0.19.13", - "tailwind-merge": "^2.5.3", + "tailwind-merge": "^3.0.2", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", + "@types/react": "19.0.10", + "@types/react-dom": "19.0.4", "postcss": "^8", "tailwindcss": "^3.4.1", "typescript": "^5" diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index fe773f81..985acf4e 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev --turbopack", "build": "next build", "start": "next start", "lint": "next lint", @@ -15,18 +15,18 @@ "@rn-primitives/utils": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/core": "workspace:*", - "class-variance-authority": "^0.7.0", + "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "next": "14.2.14", - "react": "^18", - "react-dom": "^18", - "tailwind-merge": "^2.5.3", + "next": "15.2.2", + "react": "19.0.0", + "react-dom": "19.0.0", + "tailwind-merge": "^3.0.2", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", + "@types/react": "19.0.10", + "@types/react-dom": "19.0.4", "autoprefixer": "^10.4.21", "postcss": "^8", "tailwindcss": "^3.4.1", diff --git a/package.json b/package.json index 5aa15349..956ad12a 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,6 @@ "expo-modules-*", "typescript" ] - }, - "patchedDependencies": { - "@react-native/assets-registry@0.76.3": "patches/@react-native__assets-registry@0.76.3.patch" } }, "prettier": { diff --git a/packages/accordion/package.json b/packages/accordion/package.json index a02d9c8c..c296b123 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -47,9 +47,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index 6edb2074..17c69f49 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -39,7 +39,6 @@ }, "dependencies": { "@radix-ui/react-alert-dialog": "^1.1.6", - "@rn-primitives/animatable": "workspace:*", "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/portal": "workspace:*", @@ -49,22 +48,18 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { "react": "*", - "react-native": "*", - "react-native-web": "*" + "react-native": "*" }, "peerDependenciesMeta": { "react-native": { "optional": true - }, - "react-native-web": { - "optional": true } } } diff --git a/packages/animatable/index.ts b/packages/animatable/index.ts deleted file mode 100644 index 93c437e4..00000000 --- a/packages/animatable/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -export { - AnimatableImage, - type AnimatableImageAndroidProps, - type AnimatableImageIosProps, - type AnimatableImageProps, -} from './src/animatable-image'; -export { - AnimatablePressable, - type AnimatablePressableAndroidProps, - type AnimatablePressableIosProps, - type AnimatablePressableProps, -} from './src/animatable-pressable'; -export { - AnimatableText, - type AnimatableTextAndroidProps, - type AnimatableTextIosProps, - type AnimatableTextProps, -} from './src/animatable-text'; -export { - AnimatableView, - type AnimatableViewAndroidProps, - type AnimatableViewIosProps, - type AnimatableViewProps, -} from './src/animatable-view'; - -// TODO: Delete this package since it's now exported from core diff --git a/packages/animatable/package.json b/packages/animatable/package.json deleted file mode 100644 index 05efc0d3..00000000 --- a/packages/animatable/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "@rn-primitives/animatable", - "version": "1.1.0", - "description": "Primitive animatable", - "license": "MIT", - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.js", - "types": "./dist/index.d.ts", - "default": "./dist/index.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "tsup", - "dev": "tsup --watch", - "clean": "rm -rf dist .turbo node_modules", - "pub:beta": "pnpm publish --no-git-checks --access public --tag beta", - "pub:next": "pnpm publish --no-git-checks --access public --tag next", - "pub:release": "pnpm publish --access public" - }, - "dependencies": { - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" - }, - "devDependencies": { - "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", - "tsup": "^8.1.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-web": "*", - "react-native-reanimated": "*" - }, - "peerDependenciesMeta": { - "react-native": { - "optional": true - }, - "react-native-web": { - "optional": true - }, - "react-native-reanimated": { - "optional": true - } - } -} diff --git a/packages/animatable/src/animatable-image.tsx b/packages/animatable/src/animatable-image.tsx deleted file mode 100644 index 33b79b52..00000000 --- a/packages/animatable/src/animatable-image.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import type { - ImageRef, - RemoveAndroidOnlyImageProps, - RemoveIosOnlyImageProps, - Slottable, -} from '@rn-primitives/types'; -import * as React from 'react'; -import { Image, type ImageProps } from 'react-native'; -import Animated from 'react-native-reanimated'; - -// TODO: handle web - -type AnimatedImageProps = Slottable>; -type RNImageProps = Slottable; - -type AnimatableImageProps = - | (RNImageProps & { isAnimated?: false | undefined }) - | (AnimatedImageProps & { isAnimated: true }); - -const AnimatableImage = React.forwardRef( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; - } -); - -type AnimatableImageIosProps = - | (RemoveAndroidOnlyImageProps & { isAnimated?: false | undefined }) - | (RemoveAndroidOnlyImageProps & { isAnimated: true }); - -type AnimatableImageAndroidProps = - | (RemoveIosOnlyImageProps & { isAnimated?: false | undefined }) - | (RemoveIosOnlyImageProps & { isAnimated: true }); - -export { AnimatableImage }; - -export type { AnimatableImageAndroidProps, AnimatableImageIosProps, AnimatableImageProps }; diff --git a/packages/animatable/src/animatable-pressable.tsx b/packages/animatable/src/animatable-pressable.tsx deleted file mode 100644 index af49e9bd..00000000 --- a/packages/animatable/src/animatable-pressable.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import type { - AndroidOnlyViewPropKeys, - AndroidOnlyViewStyleKeys, - IosOnlyViewPropKeys, - IosOnlyViewStyleKeys, - PressableRef, - Slottable, -} from '@rn-primitives/types'; -import * as React from 'react'; -import { - Pressable, - type PressableProps, - type PressableStateCallbackType, - type StyleProp, - type ViewStyle, -} from 'react-native'; -import Animated from 'react-native-reanimated'; - -// TODO: handle web - -type AnimatedPressableProps = Slottable< - React.ComponentPropsWithoutRef & { - key?: React.Key | null | undefined; - } ->; - -type RNPressableProps = Slottable; - -type AnimatablePressableProps = - | (AnimatedPressableProps & { isAnimated: true }) - | (RNPressableProps & { isAnimated?: false | undefined }); - -const AnimatedPressable = Animated.createAnimatedComponent(Pressable); - -const AnimatablePressable = React.forwardRef( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; - } -); - -AnimatablePressable.displayName = 'AnimatablePressable'; - -type AnimatedPressableStyle = AnimatedPressableProps['style']; -type AnimatedPressableCbStyle = Exclude>; - -type AnimatedPressableIosProps = Omit & { - style?: AnimatedPressableStyle extends AnimatedPressableCbStyle - ? (state: PressableStateCallbackType) => Omit - : AnimatedPressableStyle; -}; - -type RNPressableStyle = RNPressableProps['style']; -type RNPressableCbStyle = Exclude>; - -type RNPressableIosProps = Omit & { - style?: RNPressableStyle extends RNPressableCbStyle - ? (state: PressableStateCallbackType) => Omit - : RNPressableStyle; -}; - -type AnimatablePressableIosProps = - | (AnimatedPressableIosProps & { isAnimated: true }) - | (RNPressableIosProps & { isAnimated?: false | undefined }); - -type AnimatedPressableAndroidProps = Omit & { - style?: AnimatedPressableStyle extends AnimatedPressableCbStyle - ? (state: PressableStateCallbackType) => Omit - : AnimatedPressableStyle; -}; - -type RNPressableAndroidProps = Omit & { - style?: RNPressableStyle extends RNPressableCbStyle - ? (state: PressableStateCallbackType) => Omit - : RNPressableStyle; -}; - -type AnimatablePressableAndroidProps = - | (AnimatedPressableAndroidProps & { isAnimated: true }) - | (RNPressableAndroidProps & { isAnimated?: false | undefined }); - -export { AnimatablePressable }; - -export type { - AnimatablePressableAndroidProps, - AnimatablePressableIosProps, - AnimatablePressableProps, -}; diff --git a/packages/animatable/src/animatable-text.tsx b/packages/animatable/src/animatable-text.tsx deleted file mode 100644 index 1bb868a7..00000000 --- a/packages/animatable/src/animatable-text.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import type { - RemoveAndroidOnlyTextProps, - RemoveIosOnlyTextProps, - Slottable, - TextRef, -} from '@rn-primitives/types'; -import * as React from 'react'; -import { Text, type TextProps } from 'react-native'; -import type { SharedValue } from 'react-native-reanimated'; -import Animated from 'react-native-reanimated'; - -// TODO: handle web -type AnimatedTextProps = Slottable< - Omit, 'children'> & { - children?: React.ReactNode | SharedValue; - } ->; -type RNTextProps = Slottable; - -type AnimatableTextProps = - | (RNTextProps & { isAnimated?: false | undefined }) - | (AnimatedTextProps & { isAnimated: true }); - -const AnimatableText = React.forwardRef( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; - } -); - -type AnimatableTextIosProps = - | (RemoveAndroidOnlyTextProps & { isAnimated?: false | undefined }) - | (RemoveAndroidOnlyTextProps & { isAnimated: true }); - -type AnimatableTextAndroidProps = - | (RemoveIosOnlyTextProps & { isAnimated?: false | undefined }) - | (RemoveIosOnlyTextProps & { isAnimated: true }); - -export { AnimatableText }; - -export type { AnimatableTextAndroidProps, AnimatableTextIosProps, AnimatableTextProps }; diff --git a/packages/animatable/src/animatable-view.tsx b/packages/animatable/src/animatable-view.tsx deleted file mode 100644 index 7032e164..00000000 --- a/packages/animatable/src/animatable-view.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import type { - RemoveAndroidOnlyViewProps, - RemoveIosOnlyViewProps, - Slottable, - ViewRef, -} from '@rn-primitives/types'; -import * as React from 'react'; -import { View, type ViewProps } from 'react-native'; -import Animated from 'react-native-reanimated'; - -// TODO: handle web - -type AnimatedViewProps = Slottable>; -type RNViewProps = Slottable; - -type AnimatableViewProps = - | (RNViewProps & { isAnimated?: false | undefined }) - | (AnimatedViewProps & { isAnimated: true }); - -const AnimatableView = React.forwardRef( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; - } -); - -AnimatableView.displayName = 'AnimatableView'; - -type AnimatableViewIosProps = - | (RemoveAndroidOnlyViewProps & { isAnimated?: false | undefined }) - | (RemoveAndroidOnlyViewProps & { isAnimated: true }); - -type AnimatableViewAndroidProps = - | (RemoveIosOnlyViewProps & { isAnimated?: false | undefined }) - | (RemoveIosOnlyViewProps & { isAnimated: true }); - -export { AnimatableView }; - -export type { AnimatableViewAndroidProps, AnimatableViewIosProps, AnimatableViewProps }; diff --git a/packages/animatable/tsconfig.json b/packages/animatable/tsconfig.json deleted file mode 100644 index 233db5d7..00000000 --- a/packages/animatable/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "extends": "@tsconfig/react-native/tsconfig.json", - "include": [ - "." - ], - "compilerOptions": { - "lib": [ - "dom", - "es2019", - "es2020.bigint", - "es2020.date", - "es2020.number", - "es2020.promise", - "es2020.string", - "es2020.symbol.wellknown", - "es2021.promise", - "es2021.string", - "es2021.weakref", - "es2022.array", - "es2022.object", - "es2022.string" - ], - }, - "exclude": [ - "dist", - "build", - "node_modules" - ], -} \ No newline at end of file diff --git a/packages/animatable/tsup.config.ts b/packages/animatable/tsup.config.ts deleted file mode 100644 index 116ea85e..00000000 --- a/packages/animatable/tsup.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineConfig, Options } from 'tsup'; - -export default defineConfig((options: Options) => ({ - entry: { - index: 'index.ts', - }, - banner: { - js: "'use client'", - }, - clean: true, - format: ['cjs', 'esm'], - external: ['react'], - dts: true, - ...options, - esbuildOptions(options) { - options.jsx = 'preserve'; - }, -})); diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index 1196abf7..a62ea7b7 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -37,9 +37,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/avatar/package.json b/packages/avatar/package.json index d2cf3c57..2dc7840c 100644 --- a/packages/avatar/package.json +++ b/packages/avatar/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json index b8dcea5a..52f18f15 100644 --- a/packages/checkbox/package.json +++ b/packages/checkbox/package.json @@ -39,9 +39,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/collapsible/package.json b/packages/collapsible/package.json index e4bb13f7..b34236d5 100644 --- a/packages/collapsible/package.json +++ b/packages/collapsible/package.json @@ -39,9 +39,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/context-menu/package.json b/packages/context-menu/package.json index 2eed27cb..9b5e4a5e 100644 --- a/packages/context-menu/package.json +++ b/packages/context-menu/package.json @@ -41,9 +41,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 1a88efb2..df0c55ae 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -52,9 +52,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/core/src/native/animatable/animatable-image.tsx b/packages/core/src/native/animatable/animatable-image.tsx index 82ca8300..68127711 100644 --- a/packages/core/src/native/animatable/animatable-image.tsx +++ b/packages/core/src/native/animatable/animatable-image.tsx @@ -1,22 +1,19 @@ 'use client'; import { Slot } from '@rn-primitives/slot'; -import type { ImageRef } from '@rn-primitives/types'; import * as React from 'react'; import { Image } from 'react-native'; import Animated from 'react-native-reanimated'; import type { AnimatableImageProps } from './types'; -const AnimatableImage = React.forwardRef( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; +function AnimatableImage({ asChild, ...props }: AnimatableImageProps) { + if (asChild) { + return ; } -); + if (props.isAnimated) { + return ; + } + return ; +} export { AnimatableImage }; diff --git a/packages/core/src/native/animatable/animatable-pressable.tsx b/packages/core/src/native/animatable/animatable-pressable.tsx index 15ef2ced..2e041ab4 100644 --- a/packages/core/src/native/animatable/animatable-pressable.tsx +++ b/packages/core/src/native/animatable/animatable-pressable.tsx @@ -6,35 +6,30 @@ import { EmptyGestureResponderEvent } from '@rn-primitives/utils'; import * as React from 'react'; import { Pressable } from 'react-native'; import Animated from 'react-native-reanimated'; -import type { AnimatablePressableProps, AnimatablePressableRef } from './types'; +import type { AnimatablePressableProps } from './types'; const AnimatedPressable = Animated.createAnimatedComponent(Pressable); -const AnimatablePressable = React.forwardRef( - ({ asChild, ...props }, ref) => { - const methods = React.useMemo(() => { - return { - press: () => { - if (typeof props.onPress === 'function') { - props.onPress(EmptyGestureResponderEvent); - } - }, - }; - }, [props.onPress]); +const AnimatablePressable = ({ ref, asChild, ...props }: AnimatablePressableProps) => { + const methods = React.useMemo(() => { + return { + press: () => { + if (typeof props.onPress === 'function') { + props.onPress(EmptyGestureResponderEvent); + } + }, + }; + }, [props.onPress]); - const triggerRef = useAugmentedRef({ ref, methods }); + const triggerRef = useAugmentedRef({ ref, methods }); - // TODO: if pressable, pass the state to the Slot if possible? - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; + if (asChild) { + return ; } -); - -AnimatablePressable.displayName = 'AnimatablePressable'; + if (props.isAnimated) { + return ; + } + return ; +}; export { AnimatablePressable }; diff --git a/packages/core/src/native/animatable/animatable-text.tsx b/packages/core/src/native/animatable/animatable-text.tsx index 403cef30..ba46e771 100644 --- a/packages/core/src/native/animatable/animatable-text.tsx +++ b/packages/core/src/native/animatable/animatable-text.tsx @@ -1,22 +1,19 @@ 'use client'; import { Slot } from '@rn-primitives/slot'; -import type { TextRef } from '@rn-primitives/types'; import * as React from 'react'; import { Text } from 'react-native'; import Animated from 'react-native-reanimated'; import type { AnimatableTextProps } from './types'; -const AnimatableText = React.forwardRef( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; +function AnimatableText({ asChild, ...props }: AnimatableTextProps) { + if (asChild) { + return ; } -); + if (props.isAnimated) { + return ; + } + return ; +} export { AnimatableText }; diff --git a/packages/core/src/native/animatable/animatable-view.tsx b/packages/core/src/native/animatable/animatable-view.tsx index d22a3169..6260b5f8 100644 --- a/packages/core/src/native/animatable/animatable-view.tsx +++ b/packages/core/src/native/animatable/animatable-view.tsx @@ -1,24 +1,19 @@ 'use client'; import { Slot } from '@rn-primitives/slot'; -import type { ViewRef } from '@rn-primitives/types'; import * as React from 'react'; import { View } from 'react-native'; import Animated from 'react-native-reanimated'; import type { AnimatableViewProps } from './types'; -const AnimatableView = React.forwardRef( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - if (props.isAnimated) { - return ; - } - return ; +const AnimatableView = ({ asChild, ...props }: AnimatableViewProps) => { + if (asChild) { + return ; } -); - -AnimatableView.displayName = 'AnimatableView'; + if (props.isAnimated) { + return ; + } + return ; +}; export { AnimatableView }; diff --git a/packages/core/src/native/animatable/types.ts b/packages/core/src/native/animatable/types.ts index 0fbe6f38..94d1b375 100644 --- a/packages/core/src/native/animatable/types.ts +++ b/packages/core/src/native/animatable/types.ts @@ -1,6 +1,7 @@ import type { AndroidOnlyViewPropKeys, AndroidOnlyViewStyleKeys, + ImageRef, IosOnlyViewPropKeys, IosOnlyViewStyleKeys, PressableRef, @@ -11,6 +12,8 @@ import type { RemoveIosOnlyTextProps, RemoveIosOnlyViewProps, Slottable, + TextRef, + ViewRef, } from '@rn-primitives/types'; import type { ImageProps, @@ -21,11 +24,15 @@ import type { View, ViewProps, ViewStyle, + Image, } from 'react-native'; import type Animated from 'react-native-reanimated'; +import type { AnimatedProps, SharedValue } from 'react-native-reanimated'; -type AnimatedImageProps = Slottable>; -type RNImageProps = Slottable; +type AnimatedImageProps = Slottable> & { + ref?: React.RefObject; +}; +type RNImageProps = Slottable & { ref?: React.RefObject }; type AnimatableImageProps = | (RNImageProps & { isAnimated?: false | undefined }) @@ -33,26 +40,32 @@ type AnimatableImageProps = type AnimatableImageIosProps = | (RemoveAndroidOnlyImageProps & { isAnimated?: false | undefined }) - | (RemoveAndroidOnlyImageProps & { isAnimated: true }); + | (RemoveAndroidOnlyImageProps & { + isAnimated: true; + }); type AnimatableImageAndroidProps = | (RemoveIosOnlyImageProps & { isAnimated?: false | undefined }) - | (RemoveIosOnlyImageProps & { isAnimated: true }); + | (RemoveIosOnlyImageProps & { + isAnimated: true; + }); + +type AnimatablePressableRef = PressableRef & { press: () => void }; type AnimatedPressableProps = Slottable< - React.ComponentPropsWithoutRef< - React.FunctionComponent>> + React.ComponentProps< + React.FunctionComponent>> > & { key?: React.Key | null | undefined; + ref?: AnimatablePressableRef; } >; -type RNPressableProps = Slottable; +type RNPressableProps = Slottable; type AnimatablePressableProps = | (AnimatedPressableProps & { isAnimated: true }) | (RNPressableProps & { isAnimated?: false | undefined }); -type AnimatablePressableRef = PressableRef & { press: () => void }; type AnimatedPressableStyle = AnimatedPressableProps['style']; type AnimatedPressableCbStyle = Exclude>; @@ -92,11 +105,12 @@ type AnimatablePressableAndroidProps = | (RNPressableAndroidProps & { isAnimated?: false | undefined }); type AnimatedTextProps = Slottable< - Omit, 'children'> & { - children?: React.ReactNode | Animated.SharedValue; - } + Omit, 'children'> & { + children?: React.ReactNode | SharedValue; + } & { ref?: React.RefObject } >; -type RNTextProps = Slottable; + +type RNTextProps = Slottable; type AnimatableTextProps = | (RNTextProps & { isAnimated?: false | undefined }) @@ -110,8 +124,10 @@ type AnimatableTextAndroidProps = | (RemoveIosOnlyTextProps & { isAnimated?: false | undefined }) | (RemoveIosOnlyTextProps & { isAnimated: true }); -type AnimatedViewProps = Slottable>; -type RNViewProps = Slottable; +type AnimatedViewProps = Slottable> & { + ref?: React.RefObject; +}; +type RNViewProps = Slottable; type AnimatableViewProps = | (RNViewProps & { isAnimated?: false | undefined }) diff --git a/packages/core/src/native/components.tsx b/packages/core/src/native/components.tsx index 30ba3f25..1ba6247b 100644 --- a/packages/core/src/native/components.tsx +++ b/packages/core/src/native/components.tsx @@ -1,40 +1,37 @@ 'use client'; -import type { ImageRef, PressableRef, TextRef, ViewRef } from '@rn-primitives/types'; -import * as React from 'react'; import type { AnimatableImageProps, AnimatablePressableProps, AnimatableTextProps, AnimatableViewProps, } from './animatable/types'; - -const Image = React.forwardRef(() => { +function Image(_props: AnimatableImageProps) { if (process.env.NODE_ENV === 'development') { console.log('`Image` from @rn-primitives/core/native is only supported on native.'); } return null; -}); +} -const Pressable = React.forwardRef(() => { +function Pressable(_props: AnimatablePressableProps) { if (process.env.NODE_ENV === 'development') { console.log('`Pressable` from @rn-primitives/core/native is only supported on native.'); } return null; -}); +} -const Text = React.forwardRef(() => { +function Text(_props: AnimatableTextProps) { if (process.env.NODE_ENV === 'development') { console.log('`Text` from @rn-primitives/core/native is only supported on native.'); } return null; -}); +} -const View = React.forwardRef(() => { +function View(_props: AnimatableViewProps) { if (process.env.NODE_ENV === 'development') { console.log('`View` from @rn-primitives/core/native is only supported on native.'); } return null; -}); +} export { Image, Pressable, Text, View }; diff --git a/packages/core/src/universal/components.tsx b/packages/core/src/universal/components.tsx index b5848428..a22739f1 100644 --- a/packages/core/src/universal/components.tsx +++ b/packages/core/src/universal/components.tsx @@ -6,32 +6,15 @@ import { type PressableRef as TriggerNativeRef, View as ViewNative, } from '../native'; -import type { - ElementTag, - ImageProps, - PressableProps, - PressableRef, - TextProps, - ViewProps, -} from './types'; - -// TODO: update to react 19 and remove the forwardRef +import type { ElementTag, ImageProps, PressableProps, TextProps, ViewProps } from './types'; function Image({ src, web: _web, native, ...props }: ImageProps) { return ; } -function PressableImpl( - { web: _web, native, ...props }: PressableProps, - ref?: React.Ref -) { - return ( - } {...props} {...native} /> - ); +function Pressable({ web: _web, native, ref, ...props }: PressableProps) { + return ; } -const Pressable = React.forwardRef(PressableImpl) as ( - props: PressableProps & { ref?: React.Ref } -) => JSX.Element; function Text({ web: _web, native, ...props }: TextProps) { return ; diff --git a/packages/core/src/universal/components.web.tsx b/packages/core/src/universal/components.web.tsx index 85dc5b12..3ff22bde 100644 --- a/packages/core/src/universal/components.web.tsx +++ b/packages/core/src/universal/components.web.tsx @@ -23,19 +23,17 @@ function Image({ web, native: _native, style, ...props }: ImageProps) { return ; } -function PressableImpl( - { - native: _native, - web: webProps, - children: childrenProp, - onPress: onPressProp, - onPressIn: onPressInProp, - onPressOut: onPressOutProp, - style: styleProp, - ...props - }: PressableProps, - ref: React.Ref -) { +function Pressable({ + native: _native, + web: webProps, + children: childrenProp, + onPress: onPressProp, + onPressIn: onPressInProp, + onPressOut: onPressOutProp, + style: styleProp, + ref, + ...props +}: PressableProps) { const augmentedRef = React.useRef(null); React.useImperativeHandle( ref, @@ -72,10 +70,6 @@ function PressableImpl( ); } -const Pressable = React.forwardRef(PressableImpl) as ( - props: PressableProps & { ref?: React.Ref } -) => JSX.Element; - function TextWithStyle({ web, native: _native, diff --git a/packages/core/src/universal/types.ts b/packages/core/src/universal/types.ts index 795f725a..7ef20823 100644 --- a/packages/core/src/universal/types.ts +++ b/packages/core/src/universal/types.ts @@ -54,6 +54,7 @@ type PressablePropsUniversal = Prettify< onPressIn?: () => void; onPressOut?: () => void; } & { + ref?: React.RefObject; className?: string; role?: RNRole; asChild?: boolean | undefined; diff --git a/packages/core/src/web/components.tsx b/packages/core/src/web/components.tsx index 4f35081a..571fadb7 100644 --- a/packages/core/src/web/components.tsx +++ b/packages/core/src/web/components.tsx @@ -2,9 +2,9 @@ import type { Slottable } from '@rn-primitives/types'; import * as React from 'react'; -import type { DivProps, Element, ElementTag } from './types'; +import type { DivProps, ElementTag } from './types'; -function DivImpl(_props: DivProps, _ref: React.Ref>) { +function Div(_props: DivProps) { if (process.env.NODE_ENV === 'development') { console.log( '`Pressable`, `Text`, and `View` from @rn-primitives/core/web are only supported on web.' @@ -13,19 +13,13 @@ function DivImpl(_props: DivProps, _ref: React. return null; } -const Div = React.forwardRef(DivImpl) as ( - props: DivProps & { ref?: React.Ref> } -) => JSX.Element; - -const Image = React.forwardRef>>( - () => { - if (process.env.NODE_ENV === 'development') { - console.log('`Image` from @rn-primitives/core/web is only supported on web.'); - } - - return null; +function Image(_props: Slottable>) { + if (process.env.NODE_ENV === 'development') { + console.log('`Image` from @rn-primitives/core/web is only supported on web.'); } -); + + return null; +} Image.displayName = 'ImgWeb'; diff --git a/packages/core/src/web/components.web.tsx b/packages/core/src/web/components.web.tsx index 92776296..a14f249c 100644 --- a/packages/core/src/web/components.web.tsx +++ b/packages/core/src/web/components.web.tsx @@ -3,44 +3,34 @@ import { Slot } from '@rn-primitives/slot'; import type { Slottable } from '@rn-primitives/types'; import * as React from 'react'; -import type { DivProps, Element, ElementTag } from './types'; +import type { DivProps, ElementTag } from './types'; function createDivElement(type: 'pressable' | 'view') { - function DivImpl( - { asChild, as, ...props }: DivProps, - ref?: React.Ref> - ) { + function DivImpl({ asChild, as, ...props }: DivProps) { if (asChild) { - return ; + return ; } return React.createElement(as ?? 'div', { - ref, 'data-rn-primitives': type, ...props, }); } - return React.forwardRef(DivImpl) as ( - props: DivProps & { ref?: React.Ref> } - ) => JSX.Element; + return DivImpl; } const HasAncestorContext = React.createContext(false); function createTextElement() { - function DivImpl( - { asChild, as, ...props }: DivProps, - ref?: React.Ref> - ) { + function DivImpl({ asChild, as, ...props }: DivProps) { const hasAncestor = React.useContext(HasAncestorContext); if (asChild) { - return ; + return ; } const element = React.createElement(!as ? (hasAncestor ? 'span' : 'div') : as, { - ref, 'data-rn-primitives': 'text', ...props, }); @@ -52,9 +42,7 @@ function createTextElement() { return {element}; } - return React.forwardRef(DivImpl) as ( - props: DivProps & { ref?: React.Ref> } - ) => JSX.Element; + return DivImpl; } const Pressable = createDivElement('pressable'); @@ -63,14 +51,12 @@ const View = createDivElement('view'); const Text = createTextElement(); -const Image = React.forwardRef>>( - ({ asChild, ...props }, ref) => { - if (asChild) { - return ; - } - return ; +function Image({ asChild, ...props }: Slottable>) { + if (asChild) { + return ; } -); + return ; +} Image.displayName = 'ImageWeb'; diff --git a/packages/core/src/web/platform.ts b/packages/core/src/web/platform.ts index e6fe15cb..1286257a 100644 --- a/packages/core/src/web/platform.ts +++ b/packages/core/src/web/platform.ts @@ -13,8 +13,13 @@ const PlatformImpl: Platform = { patch: 0, }, }, - select(specifics: Record<'ios' | 'android' | 'macos' | 'windows' | 'web' | 'native', unknown>) { - return specifics.web; + select( + specifics: Record< + 'ios' | 'android' | 'macos' | 'windows' | 'web' | 'native' | 'default', + unknown + > + ) { + return specifics.web ?? specifics.default; }, }; diff --git a/packages/core/src/web/types.ts b/packages/core/src/web/types.ts index a2595b69..38c67c97 100644 --- a/packages/core/src/web/types.ts +++ b/packages/core/src/web/types.ts @@ -4,9 +4,7 @@ type ElementTag = keyof HTMLElementTagNameMap; type Element = T extends ElementTag ? HTMLElementTagNameMap[T] : 'div'; -type DivProps = React.ComponentPropsWithoutRef< - T extends ElementTag ? T : 'div' -> & { +type DivProps = React.ComponentProps & { asChild?: boolean | undefined; as?: T; }; @@ -14,6 +12,6 @@ type DivProps = React.ComponentPropsWithoutRef< type PressableProps = DivProps; type TextProps = DivProps; type ViewProps = DivProps; -type ImageProps = Slottable>; +type ImageProps = Slottable>; export type { DivProps, ElementTag, Element, ImageProps, PressableProps, TextProps, ViewProps }; diff --git a/packages/dialog/package.json b/packages/dialog/package.json index f051ea8e..19ae1e19 100644 --- a/packages/dialog/package.json +++ b/packages/dialog/package.json @@ -40,9 +40,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/dropdown-menu/package.json b/packages/dropdown-menu/package.json index 91b8781f..90d95426 100644 --- a/packages/dropdown-menu/package.json +++ b/packages/dropdown-menu/package.json @@ -41,9 +41,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 96326678..d9bb5f56 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -30,9 +30,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/hooks/src/use-augmented-ref.tsx b/packages/hooks/src/use-augmented-ref.tsx index b73a5a03..83369c3d 100644 --- a/packages/hooks/src/use-augmented-ref.tsx +++ b/packages/hooks/src/use-augmented-ref.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; interface AugmentRefProps { - ref: React.Ref; + ref?: React.Ref; methods?: Record any>; // TODO: remove this deps?: any[]; diff --git a/packages/hover-card/package.json b/packages/hover-card/package.json index 5ea3f5a6..f78b11bd 100644 --- a/packages/hover-card/package.json +++ b/packages/hover-card/package.json @@ -41,9 +41,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/label/package.json b/packages/label/package.json index b3b5e436..6c734057 100644 --- a/packages/label/package.json +++ b/packages/label/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/menubar/package.json b/packages/menubar/package.json index a43ca995..6603d705 100644 --- a/packages/menubar/package.json +++ b/packages/menubar/package.json @@ -41,9 +41,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/navigation-menu/package.json b/packages/navigation-menu/package.json index eacfe5e2..ec562521 100644 --- a/packages/navigation-menu/package.json +++ b/packages/navigation-menu/package.json @@ -41,9 +41,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/navigation-menu/src/navigation-menu.tsx b/packages/navigation-menu/src/navigation-menu.tsx index 8ce75535..5e2439df 100644 --- a/packages/navigation-menu/src/navigation-menu.tsx +++ b/packages/navigation-menu/src/navigation-menu.tsx @@ -123,6 +123,7 @@ const Trigger = React.forwardRef( // TODO: double check that the ref passed to this component has all the correct methods React.useImperativeHandle( ref, + // @ts-expect-error () => { if (!triggerRef.current) { return new View({}); @@ -282,7 +283,7 @@ const Link = React.forwardRef(({ asChild, ...props }, ref) = Link.displayName = 'LinkNativeNavigationMenu'; const Viewport = React.forwardRef((props, ref) => { - return ; + return ; }); Viewport.displayName = 'ViewportNativeNavigationMenu'; diff --git a/packages/popover/package.json b/packages/popover/package.json index 70e449a3..b77776c5 100644 --- a/packages/popover/package.json +++ b/packages/popover/package.json @@ -40,9 +40,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/portal/package.json b/packages/portal/package.json index 5647e5a6..5c65d423 100644 --- a/packages/portal/package.json +++ b/packages/portal/package.json @@ -26,13 +26,13 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "zustand": "^4.4.7" + "zustand": "^5.0.3" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/progress/package.json b/packages/progress/package.json index 7e44490b..9f6e7def 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/radio-group/package.json b/packages/radio-group/package.json index 76a4d9b6..6d8c8007 100644 --- a/packages/radio-group/package.json +++ b/packages/radio-group/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/select/package.json b/packages/select/package.json index 317ffe26..23c7d591 100644 --- a/packages/select/package.json +++ b/packages/select/package.json @@ -40,9 +40,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/separator/package.json b/packages/separator/package.json index 3bb3f3cc..365a19ca 100644 --- a/packages/separator/package.json +++ b/packages/separator/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/slider/package.json b/packages/slider/package.json index 612941c2..d346b043 100644 --- a/packages/slider/package.json +++ b/packages/slider/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/slot/package.json b/packages/slot/package.json index 18c8e198..62e89810 100644 --- a/packages/slot/package.json +++ b/packages/slot/package.json @@ -27,9 +27,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/slot/src/index.ts b/packages/slot/src/index.ts index 805e1938..8f683209 100644 --- a/packages/slot/src/index.ts +++ b/packages/slot/src/index.ts @@ -1 +1,4 @@ -export * from './slot'; +export { Slot } from './slot'; + +// Deprecated +export { Image, Pressable, Text, View } from './slot'; diff --git a/packages/slot/src/slot.tsx b/packages/slot/src/slot.tsx index 5f1e6e3b..9d271149 100644 --- a/packages/slot/src/slot.tsx +++ b/packages/slot/src/slot.tsx @@ -17,11 +17,8 @@ import { // TODO: test the slot component // TODO: if all works, remove other slots -function SlotImplementation( - props: React.ComponentPropsWithoutRef, - forwardedRef: React.Ref> -) { - const { children, ...restOfProps } = props; +function Slot(props: React.ComponentProps) { + const { children, ref: forwardedRef, ...restOfProps } = props; if (!React.isValidElement(children)) { console.log('Slot - Invalid asChild element', children); @@ -38,7 +35,7 @@ function SlotImplementation( <> {React.Children.toArray((children.props as any).children).map((child): any => React.isValidElement(child) - ? SlotImplementation({ ...restOfProps, children: child } as any, forwardedRef) + ? Slot({ ...restOfProps, ref: forwardedRef, children: child } as any) : child )} @@ -57,14 +54,10 @@ function SlotImplementation( } as unknown as Partial>); } -const Slot = React.forwardRef(SlotImplementation) as ( - props: React.ComponentPropsWithoutRef & { ref?: React.Ref> } -) => React.ReactElement | null; - -(Slot as React.NamedExoticComponent).displayName = 'Slot'; +Slot.displayName = 'Slot'; /** - * Deprecated: Use Slot instead + * @deprecated: Use Slot instead */ const Pressable = React.forwardRef, RNPressableProps>( (props, forwardedRef) => { @@ -79,7 +72,7 @@ const Pressable = React.forwardRef, RNPress React.ComponentPropsWithoutRef, React.Component, 'ref'>, any, any> >(isTextChildren(children) ? <> : children, { - ...mergeProps(pressableSlotProps, children.props), + ...mergeProps(pressableSlotProps, children.props as any), ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, }); } @@ -88,7 +81,7 @@ const Pressable = React.forwardRef, RNPress Pressable.displayName = 'SlotPressable'; /** - * Deprecated: Use Slot instead + * @deprecated: Use Slot instead */ const View = React.forwardRef, RNViewProps>( (props, forwardedRef) => { @@ -103,7 +96,7 @@ const View = React.forwardRef, RNViewProps>( React.ComponentPropsWithoutRef, React.ElementRef >(isTextChildren(children) ? <> : children, { - ...mergeProps(viewSlotProps, children.props), + ...mergeProps(viewSlotProps, children.props as any), ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, }); } @@ -112,7 +105,7 @@ const View = React.forwardRef, RNViewProps>( View.displayName = 'SlotView'; /** - * Deprecated: Use Slot instead + * @deprecated: Use Slot instead */ const Text = React.forwardRef, RNTextProps>( (props, forwardedRef) => { @@ -127,7 +120,7 @@ const Text = React.forwardRef, RNTextProps>( React.ComponentPropsWithoutRef, React.ElementRef >(isTextChildren(children) ? <> : children, { - ...mergeProps(textSlotProps, children.props), + ...mergeProps(textSlotProps, children.props as any), ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, }); } @@ -140,7 +133,7 @@ type ImageSlotProps = RNImageProps & { }; /** - * Deprecated: Use Slot instead + * @deprecated: Use Slot instead */ const Image = React.forwardRef, ImageSlotProps>( (props, forwardedRef) => { @@ -155,7 +148,7 @@ const Image = React.forwardRef, ImageSlotProps> React.ComponentPropsWithoutRef, React.ElementRef >(isTextChildren(children) ? <> : children, { - ...mergeProps(imageSlotProps, children.props), + ...mergeProps(imageSlotProps, children.props as any), ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, }); } @@ -175,7 +168,7 @@ function composeRefs(...refs: (React.Ref | undefined)[]) { if (typeof ref === 'function') { ref(node); } else if (ref != null) { - (ref as React.MutableRefObject).current = node; + (ref as React.RefObject).current = node; } }); } diff --git a/packages/slot/src/slot.web.ts b/packages/slot/src/slot.web.ts index c8454dd0..8b997d3e 100644 --- a/packages/slot/src/slot.web.ts +++ b/packages/slot/src/slot.web.ts @@ -1,7 +1,7 @@ import { Root } from '@radix-ui/react-slot'; const Slot = Root as ( - props: React.ComponentPropsWithoutRef & { ref?: React.Ref> } -) => React.ReactElement | null; + props: React.ComponentProps +) => React.JSX.Element | null; export { Slot }; diff --git a/packages/switch/package.json b/packages/switch/package.json index 601824ec..c12bfe34 100644 --- a/packages/switch/package.json +++ b/packages/switch/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/table/package.json b/packages/table/package.json index 6c0a6005..b880632e 100644 --- a/packages/table/package.json +++ b/packages/table/package.json @@ -37,9 +37,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/tabs/package.json b/packages/tabs/package.json index 2a88932c..235f9915 100644 --- a/packages/tabs/package.json +++ b/packages/tabs/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toast/package.json b/packages/toast/package.json index 7be08adc..ee5924fe 100644 --- a/packages/toast/package.json +++ b/packages/toast/package.json @@ -37,9 +37,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index b83b8f36..eeaee803 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -39,9 +39,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 90a1018b..2041bd6b 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -38,9 +38,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toolbar/package.json b/packages/toolbar/package.json index f1ec4a61..7a31b4f6 100644 --- a/packages/toolbar/package.json +++ b/packages/toolbar/package.json @@ -39,9 +39,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json index f9b27bf3..bf890bc4 100644 --- a/packages/tooltip/package.json +++ b/packages/tooltip/package.json @@ -40,9 +40,9 @@ "devDependencies": { "@rn-primitives/portal": "workspace:*", "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/tooltip/src/tooltip.tsx b/packages/tooltip/src/tooltip.tsx index 44ffb689..213756cf 100644 --- a/packages/tooltip/src/tooltip.tsx +++ b/packages/tooltip/src/tooltip.tsx @@ -85,49 +85,47 @@ function useTooltipContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { open, onOpenChange, setTriggerPosition } = useTooltipContext(); - - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open: () => { - onOpenChange(true); - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - }, - close: () => { - setTriggerPosition(null); - onOpenChange(false); - }, +function Trigger({ asChild, onPress: onPressProp, disabled = false, ref, ...props }: TriggerProps) { + const { open, onOpenChange, setTriggerPosition } = useTooltipContext(); + + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open: () => { + onOpenChange(true); + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); }, - }); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - const newValue = !open; - onOpenChange(newValue); - onPressProp?.(ev); - } + close: () => { + setTriggerPosition(null); + onOpenChange(false); + }, + }, + }); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); + const newValue = !open; + onOpenChange(newValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +} Trigger.displayName = 'TriggerNativeTooltip'; diff --git a/packages/tooltip/src/types.ts b/packages/tooltip/src/types.ts index 90f5443b..7ba9f793 100644 --- a/packages/tooltip/src/types.ts +++ b/packages/tooltip/src/types.ts @@ -50,7 +50,7 @@ type ContentProps = SlottableViewProps & side?: 'top' | 'right' | 'bottom' | 'left'; }; -type TriggerProps = SlottablePressableProps; +type TriggerProps = SlottablePressableProps & { ref?: TriggerRef }; type RootRef = ViewRef; type ContentRef = ViewRef; diff --git a/packages/types/package.json b/packages/types/package.json index 73bf20fc..a026ceb7 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -27,9 +27,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 9e3df50a..f9fd94d2 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -2,7 +2,6 @@ import type { Image, ImageProps, ImageStyle, - Pressable, PressableProps, StyleProp, Text, @@ -58,10 +57,10 @@ type BaseSlottableImageProps = Slottable<{ className?: string; }>; -type ViewRef = React.ElementRef; -type PressableRef = React.ElementRef; -type TextRef = React.ElementRef; -type ImageRef = React.ElementRef; +type ViewRef = React.RefObject; +type PressableRef = React.RefObject; +type TextRef = React.RefObject; +type ImageRef = React.RefObject; type BasicPressEvents = { onPress?: () => void; diff --git a/packages/utils/package.json b/packages/utils/package.json index b2c06823..cf280da4 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -27,9 +27,9 @@ }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", - "@types/react": "~18.3.12", - "react": "18.3.1", - "react-native": "0.76.3", + "@types/react": "19.0.10", + "react": "19.0.0", + "react-native": "0.78.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/patches/@react-native__assets-registry@0.76.3.patch b/patches/@react-native__assets-registry@0.76.3.patch deleted file mode 100644 index 1a6888fa..00000000 --- a/patches/@react-native__assets-registry@0.76.3.patch +++ /dev/null @@ -1,160 +0,0 @@ -diff --git a/path-support.js b/path-support.js -index 7d9388ad12567ba99d1c02650cb25c16a052d3de..fc5eac172d574e4dc953bba6dd30ef3f2e821b4b 100644 ---- a/path-support.js -+++ b/path-support.js -@@ -8,17 +8,13 @@ - * @flow strict - */ - --'use strict'; -- --import type {PackagerAsset} from './registry.js'; -- - const androidScaleSuffix = { -- '0.75': 'ldpi', -- '1': 'mdpi', -- '1.5': 'hdpi', -- '2': 'xhdpi', -- '3': 'xxhdpi', -- '4': 'xxxhdpi', -+ "0.75": "ldpi", -+ "1": "mdpi", -+ "1.5": "hdpi", -+ "2": "xhdpi", -+ "3": "xxhdpi", -+ "4": "xxxhdpi", - }; - - const ANDROID_BASE_DENSITY = 160; -@@ -27,7 +23,7 @@ const ANDROID_BASE_DENSITY = 160; - * FIXME: using number to represent discrete scale numbers is fragile in essence because of - * floating point numbers imprecision. - */ --function getAndroidAssetSuffix(scale: number): string { -+function getAndroidAssetSuffix(scale) { - if (scale.toString() in androidScaleSuffix) { - // $FlowFixMe[invalid-computed-prop] - return androidScaleSuffix[scale.toString()]; -@@ -35,55 +31,52 @@ function getAndroidAssetSuffix(scale: number): string { - // NOTE: Android Gradle Plugin does not fully support the nnndpi format. - // See https://issuetracker.google.com/issues/72884435 - if (Number.isFinite(scale) && scale > 0) { -- return Math.round(scale * ANDROID_BASE_DENSITY) + 'dpi'; -+ return Math.round(scale * ANDROID_BASE_DENSITY) + "dpi"; - } -- throw new Error('no such scale ' + scale.toString()); -+ throw new Error("no such scale " + scale.toString()); - } - - // See https://developer.android.com/guide/topics/resources/drawable-resource.html - const drawableFileTypes = new Set([ -- 'gif', -- 'jpeg', -- 'jpg', -- 'ktx', -- 'png', -- 'svg', -- 'webp', -- 'xml', -+ "gif", -+ "jpeg", -+ "jpg", -+ "ktx", -+ "png", -+ "svg", -+ "webp", -+ "xml", - ]); - --function getAndroidResourceFolderName( -- asset: PackagerAsset, -- scale: number, --): string | $TEMPORARY$string<'raw'> { -+function getAndroidResourceFolderName(asset, scale) { - if (!drawableFileTypes.has(asset.type)) { -- return 'raw'; -+ return "raw"; - } - const suffix = getAndroidAssetSuffix(scale); - if (!suffix) { - throw new Error( - "Don't know which android drawable suffix to use for scale: " + - scale + -- '\nAsset: ' + -- JSON.stringify(asset, null, '\t') + -- '\nPossible scales are:' + -- JSON.stringify(androidScaleSuffix, null, '\t'), -+ "\nAsset: " + -+ JSON.stringify(asset, null, "\t") + -+ "\nPossible scales are:" + -+ JSON.stringify(androidScaleSuffix, null, "\t") - ); - } -- return 'drawable-' + suffix; -+ return "drawable-" + suffix; - } - --function getAndroidResourceIdentifier(asset: PackagerAsset): string { -- return (getBasePath(asset) + '/' + asset.name) -+function getAndroidResourceIdentifier(asset) { -+ return (getBasePath(asset) + "/" + asset.name) - .toLowerCase() -- .replace(/\//g, '_') // Encode folder structure in file name -- .replace(/([^a-z0-9_])/g, '') // Remove illegal chars -- .replace(/^assets_/, ''); // Remove "assets_" prefix -+ .replace(/\//g, "_") // Encode folder structure in file name -+ .replace(/([^a-z0-9_])/g, "") // Remove illegal chars -+ .replace(/^assets_/, ""); // Remove "assets_" prefix - } - --function getBasePath(asset: PackagerAsset): string { -+function getBasePath(asset) { - const basePath = asset.httpServerLocation; -- return basePath.startsWith('/') ? basePath.slice(1) : basePath; -+ return basePath.startsWith("/") ? basePath.slice(1) : basePath; - } - - module.exports = { -diff --git a/registry.js b/registry.js -index 64b2735d3bb5284bd2450bf0d06115c3de5dcf80..dcc4889953c624c31e16aba30c4bb20701de609b 100644 ---- a/registry.js -+++ b/registry.js -@@ -8,34 +8,16 @@ - * @format - */ - --'use strict'; -+const assets = []; - --export type AssetDestPathResolver = 'android' | 'generic'; -- --export type PackagerAsset = { -- +__packager_asset: boolean, -- +fileSystemLocation: string, -- +httpServerLocation: string, -- +width: ?number, -- +height: ?number, -- +scales: Array, -- +hash: string, -- +name: string, -- +type: string, -- +resolver?: AssetDestPathResolver, -- ... --}; -- --const assets: Array = []; -- --function registerAsset(asset: PackagerAsset): number { -+function registerAsset(asset) { - // `push` returns new array length, so the first asset will - // get id 1 (not 0) to make the value truthy - return assets.push(asset); - } - --function getAssetByID(assetId: number): PackagerAsset { -+function getAssetByID(assetId) { - return assets[assetId - 1]; - } - --module.exports = {registerAsset, getAssetByID}; -+module.exports = { registerAsset, getAssetByID }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ef06268..001dcefb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,11 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -patchedDependencies: - '@react-native/assets-registry@0.76.3': - hash: 6fst5vxplq4cjuecsevwdyugdm - path: patches/@react-native__assets-registry@0.76.3.patch - importers: .: @@ -23,32 +18,32 @@ importers: apps/docs: dependencies: '@astrojs/check': - specifier: ^0.5.6 - version: 0.5.10(typescript@5.7.2) + specifier: ^0.9.4 + version: 0.9.4(typescript@5.7.2) '@astrojs/react': - specifier: ^3.0.10 - version: 3.6.3(@types/node@20.17.7)(@types/react-dom@18.3.1)(@types/react@18.3.12)(lightningcss@1.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.36.0) + specifier: ^4.2.1 + version: 4.2.1(@types/node@20.17.7)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.6)(lightningcss@1.28.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.36.0)(yaml@2.6.1) '@astrojs/starlight': - specifier: ^0.21.0 - version: 0.21.5(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2)) + specifier: ^0.32.2 + version: 0.32.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1)) '@astrojs/starlight-tailwind': - specifier: ^2.0.1 - version: 2.0.3(@astrojs/starlight@0.21.5(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2)))(@astrojs/tailwind@5.1.2(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))(tailwindcss@3.4.15))(tailwindcss@3.4.15) + specifier: ^3.0.0 + version: 3.0.0(@astrojs/starlight@0.32.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1)))(@astrojs/tailwind@6.0.0(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.15))(tailwindcss@3.4.15) '@astrojs/tailwind': - specifier: ^5.1.0 - version: 5.1.2(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))(tailwindcss@3.4.15) + specifier: ^6.0.0 + version: 6.0.0(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.15) '@astrojs/vercel': - specifier: ^7.3.4 - version: 7.8.2(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))(next@14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + specifier: ^8.1.2 + version: 8.1.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))(next@15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.35.0) '@radix-ui/react-collapsible': specifier: ^1.1.0 - version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-dropdown-menu': specifier: ^2.1.1 - version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-slot': specifier: ^1.1.0 - version: 1.1.0(@types/react@18.3.12)(react@18.3.1) + version: 1.1.0(@types/react@19.0.10)(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -146,38 +141,38 @@ importers: specifier: workspace:* version: link:../../packages/utils '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 '@types/react-dom': - specifier: ^18.2.19 - version: 18.3.1 + specifier: 19.0.4 + version: 19.0.4(@types/react@19.0.10) '@vercel/analytics': specifier: ^1.3.1 - version: 1.4.1(next@14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + version: 1.4.1(next@15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) astro: - specifier: ^4.4.9 - version: 4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2) + specifier: ^5.5.2 + version: 5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1) class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 clsx: - specifier: ^2.1.0 + specifier: ^2.1.1 version: 2.1.1 lucide-react: specifier: ^0.334.0 - version: 0.334.0(react@18.3.1) + version: 0.334.0(react@19.0.0) react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) sharp: specifier: ^0.32.5 version: 0.32.6 tailwind-merge: - specifier: ^2.5.3 - version: 2.5.4 + specifier: ^3.0.2 + version: 3.0.2 tailwindcss: specifier: ^3.4.13 version: 3.4.15 @@ -192,10 +187,10 @@ importers: dependencies: '@react-native-async-storage/async-storage': specifier: 1.23.1 - version: 1.23.1(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + version: 1.23.1(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) '@react-navigation/native': specifier: ^7.0.0 - version: 7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + version: 7.0.4(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -293,65 +288,65 @@ importers: specifier: workspace:* version: link:../../packages/utils class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 clsx: specifier: ^2.1.1 version: 2.1.1 expo: - specifier: ^52.0.11 - version: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 53.0.0-canary-20250306-d9d3e02 + version: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: - specifier: ~7.0.3 - version: 7.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 7.1.0-canary-20250306-d9d3e02 + version: 7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: - specifier: ~4.0.4 - version: 4.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 5.0.0-canary-20250306-d9d3e02 + version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: - specifier: ~4.0.9 - version: 4.0.9(expo-constants@17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(expo-linking@7.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + specifier: 4.0.18-canary-20250306-d9d3e02 + version: 4.0.18-canary-20250306-d9d3e02(expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: - specifier: ~0.29.13 - version: 0.29.13(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)) + specifier: 0.29.23-canary-20250306-d9d3e02 + version: 0.29.23-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: - specifier: ~2.0.0 - version: 2.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 2.0.2-canary-20250306-d9d3e02 + version: 2.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: - specifier: ~4.0.4 - version: 4.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + specifier: 5.0.0-canary-20250306-d9d3e02 + version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: - specifier: ^0.451.0 - version: 0.451.0(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: ^0.482.0 + version: 0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.15) + version: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.15) react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) react-native-reanimated: - specifier: ~3.16.2 - version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: ~3.17.1 + version: 3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-safe-area-context: - specifier: 4.12.0 - version: 4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 5.2.0 + version: 5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: - specifier: ~4.1.0 - version: 4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: ~4.9.2 + version: 4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: - specifier: 15.8.0 - version: 15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 15.11.2 + version: 15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: ~0.19.13 - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwind-merge: - specifier: ^2.5.3 - version: 2.5.4 + specifier: ^3.0.2 + version: 3.0.2 tailwindcss: specifier: ^3.4.13 version: 3.4.15 @@ -359,15 +354,15 @@ importers: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.15) zustand: - specifier: ^4.4.7 - version: 4.5.5(@types/react@18.3.12)(react@18.3.1) + specifier: ^5.0.3 + version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)) devDependencies: '@babel/core': specifier: ^7.26.0 version: 7.26.0 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 typescript: specifier: ^5.3.3 version: 5.7.2 @@ -376,10 +371,10 @@ importers: dependencies: '@react-native-async-storage/async-storage': specifier: 1.23.1 - version: 1.23.1(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + version: 1.23.1(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) '@react-navigation/native': specifier: ^7.0.0 - version: 7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + version: 7.0.4(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -477,63 +472,63 @@ importers: specifier: workspace:* version: link:../../packages/utils expo: - specifier: ^52.0.11 - version: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 53.0.0-canary-20250306-d9d3e02 + version: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: - specifier: ~7.0.3 - version: 7.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 7.1.0-canary-20250306-d9d3e02 + version: 7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: - specifier: ~4.0.4 - version: 4.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 5.0.0-canary-20250306-d9d3e02 + version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: - specifier: ~4.0.9 - version: 4.0.9(expo-constants@17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(expo-linking@7.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + specifier: 4.0.18-canary-20250306-d9d3e02 + version: 4.0.18-canary-20250306-d9d3e02(expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: - specifier: ~0.29.13 - version: 0.29.13(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)) + specifier: 0.29.23-canary-20250306-d9d3e02 + version: 0.29.23-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: - specifier: ~2.0.0 - version: 2.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 2.0.2-canary-20250306-d9d3e02 + version: 2.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: - specifier: ~4.0.4 - version: 4.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + specifier: 5.0.0-canary-20250306-d9d3e02 + version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: - specifier: ^0.451.0 - version: 0.451.0(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: ^0.482.0 + version: 0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) react-native-reanimated: - specifier: ~3.16.2 - version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: ~3.17.1 + version: 3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-safe-area-context: - specifier: 4.12.0 - version: 4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 5.2.0 + version: 5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: - specifier: ~4.1.0 - version: 4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: ~4.9.2 + version: 4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: - specifier: 15.8.0 - version: 15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 15.11.2 + version: 15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: ~0.19.13 - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zustand: - specifier: ^4.4.7 - version: 4.5.5(@types/react@18.3.12)(react@18.3.1) + specifier: ^5.0.3 + version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)) devDependencies: '@babel/core': specifier: ^7.26.0 version: 7.26.0 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 typescript: specifier: ^5.3.3 version: 5.7.2 @@ -640,38 +635,38 @@ importers: specifier: workspace:* version: link:../../packages/utils class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 clsx: specifier: ^2.1.1 version: 2.1.1 lucide-react-native: - specifier: ^0.451.0 - version: 0.451.0(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: ^0.482.0 + version: 0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.15) + version: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.15) next: - specifier: 14.2.14 - version: 14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 15.2.2 + version: 15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: - specifier: ^18 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: ^18 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) react-native-svg: - specifier: 15.8.0 - version: 15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + specifier: 15.11.2 + version: 15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: ~0.19.13 - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwind-merge: - specifier: ^2.5.3 - version: 2.5.4 + specifier: ^3.0.2 + version: 3.0.2 tailwindcss-animate: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.15) @@ -680,11 +675,11 @@ importers: specifier: ^20 version: 20.17.7 '@types/react': - specifier: ^18 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 '@types/react-dom': - specifier: ^18 - version: 18.3.1 + specifier: 19.0.4 + version: 19.0.4(@types/react@19.0.10) postcss: specifier: ^8 version: 8.4.49 @@ -713,23 +708,23 @@ importers: specifier: workspace:* version: link:../../packages/utils class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.7.1 + version: 0.7.1 clsx: specifier: ^2.1.1 version: 2.1.1 next: - specifier: 14.2.14 - version: 14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 15.2.2 + version: 15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: - specifier: ^18 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-dom: - specifier: ^18 - version: 18.3.1(react@18.3.1) + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) tailwind-merge: - specifier: ^2.5.3 - version: 2.5.4 + specifier: ^3.0.2 + version: 3.0.2 tailwindcss-animate: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.15) @@ -738,11 +733,11 @@ importers: specifier: ^20 version: 20.17.7 '@types/react': - specifier: ^18 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 '@types/react-dom': - specifier: ^18 - version: 18.3.1 + specifier: 19.0.4 + version: 19.0.4(@types/react@19.0.10) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.4.49) @@ -760,7 +755,7 @@ importers: dependencies: '@radix-ui/react-accordion': specifier: ^1.2.3 - version: 1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -778,32 +773,29 @@ importers: version: link:../utils react-native-reanimated: specifier: '*' - version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + version: 3.16.2(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/alert-dialog: dependencies: '@radix-ui/react-alert-dialog': specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rn-primitives/animatable': - specifier: workspace:* - version: link:../animatable + version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -822,25 +814,22 @@ importers: '@rn-primitives/utils': specifier: workspace:* version: link:../utils - react-native-web: - specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/animatable: dependencies: @@ -852,26 +841,26 @@ importers: version: link:../types react-native-reanimated: specifier: '*' - version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + version: 3.16.2(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/aspect-ratio: dependencies: @@ -883,23 +872,23 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/avatar: dependencies: @@ -914,29 +903,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/checkbox: dependencies: '@radix-ui/react-checkbox': specifier: ^1.1.1 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -948,29 +937,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/collapsible: dependencies: '@radix-ui/react-collapsible': specifier: ^1.1.0 - version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -982,29 +971,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/context-menu: dependencies: '@radix-ui/react-context-menu': specifier: ^2.2.1 - version: 2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1019,7 +1008,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1028,17 +1017,17 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/core: dependencies: @@ -1059,29 +1048,29 @@ importers: version: link:../utils react-native-reanimated: specifier: '*' - version: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + version: 3.16.2(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/dialog: dependencies: '@radix-ui/react-dialog': specifier: ^1.1.1 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1093,7 +1082,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1102,23 +1091,23 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/dropdown-menu: dependencies: '@radix-ui/react-dropdown-menu': specifier: ^2.1.1 - version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1133,7 +1122,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1142,17 +1131,17 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/hooks: dependencies: @@ -1161,29 +1150,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/hover-card: dependencies: '@radix-ui/react-hover-card': specifier: ^1.1.1 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1198,7 +1187,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1207,23 +1196,23 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/label: dependencies: '@radix-ui/react-label': specifier: ^2.1.0 - version: 2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1232,29 +1221,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/menubar: dependencies: '@radix-ui/react-menubar': specifier: ^1.1.1 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1269,7 +1258,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1278,23 +1267,23 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/navigation-menu: dependencies: '@radix-ui/react-navigation-menu': specifier: ^1.2.0 - version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1309,7 +1298,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1318,23 +1307,23 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/popover: dependencies: '@radix-ui/react-popover': specifier: ^1.1.1 - version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1346,7 +1335,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1355,48 +1344,48 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/portal: dependencies: react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zustand: - specifier: ^4.4.7 - version: 4.5.5(@types/react@18.3.12)(react@18.3.1) + specifier: ^5.0.3 + version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/progress: dependencies: '@radix-ui/react-progress': specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1405,29 +1394,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/radio-group: dependencies: '@radix-ui/react-radio-group': specifier: ^1.2.0 - version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1436,29 +1425,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/select: dependencies: '@radix-ui/react-select': specifier: ^2.1.1 - version: 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1470,7 +1459,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1479,23 +1468,23 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/separator: dependencies: '@radix-ui/react-separator': specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1504,29 +1493,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/slider: dependencies: '@radix-ui/react-slider': specifier: ^1.2.0 - version: 1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1535,54 +1524,54 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/slot: dependencies: '@radix-ui/react-slot': specifier: ^1.1.0 - version: 1.1.2(@types/react@18.3.12)(react@18.3.1) + version: 1.1.2(@types/react@19.0.10)(react@19.0.0) react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/switch: dependencies: '@radix-ui/react-switch': specifier: ^1.1.0 - version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1591,23 +1580,23 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/table: dependencies: @@ -1619,29 +1608,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/tabs: dependencies: '@radix-ui/react-tabs': specifier: ^1.1.0 - version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1650,23 +1639,23 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/toast: dependencies: @@ -1678,29 +1667,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/toggle: dependencies: '@radix-ui/react-toggle': specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1709,29 +1698,29 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/toggle-group: dependencies: '@radix-ui/react-toggle-group': specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1743,29 +1732,29 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/toolbar: dependencies: '@radix-ui/react-toolbar': specifier: ^1.1.0 - version: 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1777,29 +1766,29 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/tooltip: dependencies: '@radix-ui/react-tooltip': specifier: ^1.1.2 - version: 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1811,7 +1800,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1820,39 +1809,39 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/types: dependencies: react-native-web: specifier: '*' - version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages/utils: devDependencies: @@ -1860,17 +1849,17 @@ importers: specifier: ^1.0.1 version: 1.0.5 '@types/react': - specifier: ~18.3.12 - version: 18.3.12 + specifier: 19.0.10 + version: 19.0.10 react: - specifier: 18.3.1 - version: 18.3.1 + specifier: 19.0.0 + version: 19.0.0 react-native: - specifier: 0.76.3 - version: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + specifier: 0.78.0 + version: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1) + version: 8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1) packages: @@ -1890,8 +1879,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@astrojs/check@0.5.10': - resolution: {integrity: sha512-vliHXM9cu/viGeKiksUM4mXfO816ohWtawTl2ADPgTsd4nUMjFiyAl7xFZhF34yy4hq4qf7jvK1F2PlR3b5I5w==} + '@astrojs/check@0.9.4': + resolution: {integrity: sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==} hasBin: true peerDependencies: typescript: ^5.0.0 @@ -1899,8 +1888,11 @@ packages: '@astrojs/compiler@2.10.3': resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} - '@astrojs/internal-helpers@0.4.1': - resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} + '@astrojs/compiler@2.11.0': + resolution: {integrity: sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==} + + '@astrojs/internal-helpers@0.6.1': + resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==} '@astrojs/language-server@2.15.4': resolution: {integrity: sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==} @@ -1914,60 +1906,57 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@5.1.0': - resolution: {integrity: sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ==} + '@astrojs/markdown-remark@6.3.0': + resolution: {integrity: sha512-imInEojAbpeV9D/SRaSQBz3yUzvtg3UQC1euX70QHVf8X0kWAIAArmzBbgXl8LlyxSFe52f/++PXQ4t14V9b+A==} - '@astrojs/markdown-remark@5.3.0': - resolution: {integrity: sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg==} - - '@astrojs/mdx@2.3.1': - resolution: {integrity: sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@astrojs/mdx@4.2.0': + resolution: {integrity: sha512-MHiogYeb7XdzbqUktoMsrziph1vK10WfLgwDJVejGOieEsJ1eOUtNtQCl2vv85tnr/+IGBqZ0bOf6ydQGgJMYA==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: - astro: ^4.0.0 + astro: ^5.0.0 - '@astrojs/prism@3.1.0': - resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@astrojs/prism@3.2.0': + resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} - '@astrojs/react@3.6.3': - resolution: {integrity: sha512-5ihLQDH5Runddug5AZYlnp/Q5T81QxhwnWJXA9rchBAdh11c6UhBbv9Kdk7b2PkXoEU70CGWBP9hSh0VCR58eA==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@astrojs/react@4.2.1': + resolution: {integrity: sha512-g0P6zxG7RPHNcbmMB15dJJ83+ApBVFBcgnf6BnMz/PVXM150Pa1vYKeuTcWhERqLNgmpI2uXuch5MecIhrUlqQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: - '@types/react': ^17.0.50 || ^18.0.21 - '@types/react-dom': ^17.0.17 || ^18.0.6 - react: ^17.0.2 || ^18.0.0 || ^19.0.0-beta - react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0-beta + '@types/react': ^17.0.50 || ^18.0.21 || ^19.0.0 + '@types/react-dom': ^17.0.17 || ^18.0.6 || ^19.0.0 + react: ^17.0.2 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0 '@astrojs/sitemap@3.2.1': resolution: {integrity: sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==} - '@astrojs/starlight-tailwind@2.0.3': - resolution: {integrity: sha512-ZwbdXS/9rxYlo3tKZoTZoBPUnaaqek02b341dHwOkmMT0lIR2w+8k0mRUGxnRaYtPdMcaL+nYFd8RUa8sjdyRg==} + '@astrojs/starlight-tailwind@3.0.0': + resolution: {integrity: sha512-oYHG9RY+VaOSeAhheVZfm9HDA892qvcQA82VT86POYmg1OsgBuWwdf1ZbofV8iq/z5kO06ajcSdzhPE8lhEx8g==} peerDependencies: - '@astrojs/starlight': '>=0.9.0' - '@astrojs/tailwind': ^5.0.0 + '@astrojs/starlight': '>=0.30.0' + '@astrojs/tailwind': ^5.1.3 tailwindcss: ^3.3.3 - '@astrojs/starlight@0.21.5': - resolution: {integrity: sha512-cvftxu7DM4C25KGSxqyIk81DiQGX0zx9s5sfmprd1kKQK1h/MQXaRVDCpJrK4SjrgWtpG1UoKLJZBgD5w4k9kw==} + '@astrojs/starlight@0.32.2': + resolution: {integrity: sha512-FLz8Y8R+GsD0jD/G64bYijwwVsAq99Ugk2bJYRmH2k1reYMh83GRma2IaKGgSI2fLNEu7tdyG4cpkwrwP3W02A==} peerDependencies: - astro: ^4.2.7 + astro: ^5.1.5 - '@astrojs/tailwind@5.1.2': - resolution: {integrity: sha512-IvOF0W/dtHElcXvhrPR35nHmhyV3cfz1EzPitMGtU7sYy9Hci3BNK1To6FWmVuuNKPxza1IgCGetSynJZL7fOg==} + '@astrojs/tailwind@6.0.0': + resolution: {integrity: sha512-GbEK2/h0nvY8i6g1GZT5ddHAgj71lQIf34/j7+jPLhUti3xDxKcWElApDe2jWvqAaKl2oKEh045ITSm8mU9BVQ==} peerDependencies: - astro: ^3.0.0 || ^4.0.0 || ^5.0.0-beta.0 + astro: ^3.0.0 || ^4.0.0 || ^5.0.0 tailwindcss: ^3.0.24 - '@astrojs/telemetry@3.1.0': - resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + '@astrojs/telemetry@3.2.0': + resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} - '@astrojs/vercel@7.8.2': - resolution: {integrity: sha512-U2JsfN0LzFMX5CPrcb+5bAAyqyYURP6Dk/mUIXX87r5x4baQy+juU+ntvf926YA0tR7u6jPRXHymE2axQ/l3NQ==} + '@astrojs/vercel@8.1.2': + resolution: {integrity: sha512-Qps7oYfQVvXov/ucP5sjTqRAgqbY84ayf8zyz5lNqTy88As09KGaZJTW4qrxU2xO5GdoE3+AoMGDUkU2rVY+cg==} peerDependencies: - astro: ^4.2.0 + astro: ^5.0.0 '@astrojs/yaml2ts@0.2.2': resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} @@ -2121,13 +2110,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-decorators@7.25.9': resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} engines: {node: '>=6.9.0'} @@ -2140,20 +2122,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} @@ -2691,9 +2659,9 @@ packages: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@ctrl/tinycolor@3.6.1': - resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} - engines: {node: '>=10'} + '@ctrl/tinycolor@4.1.0': + resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} + engines: {node: '>=14'} '@emmetio/abbreviation@2.3.3': resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} @@ -2719,23 +2687,17 @@ packages: '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.24.0': resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] + '@esbuild/aix-ppc64@0.25.1': + resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] '@esbuild/android-arm64@0.24.0': resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} @@ -2743,10 +2705,10 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/android-arm64@0.25.1': + resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + engines: {node: '>=18'} + cpu: [arm64] os: [android] '@esbuild/android-arm@0.24.0': @@ -2755,10 +2717,10 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/android-arm@0.25.1': + resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + engines: {node: '>=18'} + cpu: [arm] os: [android] '@esbuild/android-x64@0.24.0': @@ -2767,11 +2729,11 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + '@esbuild/android-x64@0.25.1': + resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] '@esbuild/darwin-arm64@0.24.0': resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} @@ -2779,10 +2741,10 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/darwin-arm64@0.25.1': + resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.24.0': @@ -2791,11 +2753,11 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + '@esbuild/darwin-x64@0.25.1': + resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] '@esbuild/freebsd-arm64@0.24.0': resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} @@ -2803,10 +2765,10 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/freebsd-arm64@0.25.1': + resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + engines: {node: '>=18'} + cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.24.0': @@ -2815,11 +2777,11 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + '@esbuild/freebsd-x64@0.25.1': + resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] '@esbuild/linux-arm64@0.24.0': resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} @@ -2827,10 +2789,10 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] + '@esbuild/linux-arm64@0.25.1': + resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.24.0': @@ -2839,10 +2801,10 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/linux-arm@0.25.1': + resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + engines: {node: '>=18'} + cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.24.0': @@ -2851,10 +2813,10 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] + '@esbuild/linux-ia32@0.25.1': + resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + engines: {node: '>=18'} + cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.24.0': @@ -2863,10 +2825,10 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] + '@esbuild/linux-loong64@0.25.1': + resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + engines: {node: '>=18'} + cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.24.0': @@ -2875,10 +2837,10 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] + '@esbuild/linux-mips64el@0.25.1': + resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + engines: {node: '>=18'} + cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.24.0': @@ -2887,10 +2849,10 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] + '@esbuild/linux-ppc64@0.25.1': + resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + engines: {node: '>=18'} + cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.24.0': @@ -2899,10 +2861,10 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] + '@esbuild/linux-riscv64@0.25.1': + resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + engines: {node: '>=18'} + cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.24.0': @@ -2911,10 +2873,10 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/linux-s390x@0.25.1': + resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + engines: {node: '>=18'} + cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.24.0': @@ -2923,10 +2885,16 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.25.1': + resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + engines: {node: '>=18'} cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.1': + resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + engines: {node: '>=18'} + cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.24.0': @@ -2935,16 +2903,22 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.1': + resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.24.0': resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/openbsd-arm64@0.25.1': + resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + engines: {node: '>=18'} + cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.24.0': @@ -2953,11 +2927,11 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} + '@esbuild/openbsd-x64@0.25.1': + resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + engines: {node: '>=18'} cpu: [x64] - os: [sunos] + os: [openbsd] '@esbuild/sunos-x64@0.24.0': resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} @@ -2965,11 +2939,11 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + '@esbuild/sunos-x64@0.25.1': + resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] '@esbuild/win32-arm64@0.24.0': resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} @@ -2977,10 +2951,10 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] + '@esbuild/win32-arm64@0.25.1': + resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + engines: {node: '>=18'} + cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.24.0': @@ -2989,10 +2963,10 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/win32-ia32@0.25.1': + resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + engines: {node: '>=18'} + cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.24.0': @@ -3001,72 +2975,70 @@ packages: cpu: [x64] os: [win32] - '@expo/bunyan@4.0.1': - resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} - engines: {node: '>=0.10.0'} + '@esbuild/win32-x64@0.25.1': + resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] - '@expo/cli@0.21.8': - resolution: {integrity: sha512-gU+NlL/XS9r7LEfLhjDDKuv3jEtOh+rVnk/k7Lp8WrUwaMCoEGfmQpSqLXetFCCC4UFXSaj1cdMGoy2UBw4rew==} + '@expo/cli@1.0.0-canary-20250306-d9d3e02': + resolution: {integrity: sha512-Pp7PgZeG7O9Ou5d2W8vf3gwsUrIrFIw9VIycwJf37xplOFS/e/imenbR191N/FATxU9bzFThg0GN6p8fSYdeNA==} hasBin: true '@expo/code-signing-certificates@0.0.5': resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} - '@expo/config-plugins@9.0.10': - resolution: {integrity: sha512-4piPSylJ8z3to+YZpl/6M2mLxASOdIFANA8FYihsTf9kWlyimV9L/+MGgPXJcieaHXYZZqOryf8hQFVeg/68+A==} + '@expo/config-plugins@9.1.0-canary-20250306-d9d3e02': + resolution: {integrity: sha512-8v0v67OV6jcSBUOocyc0ELo66DkZks1wfT1FPHPLZz43J/oOrptAdm71ZKvHweSdHkbOgkS6DyciKdWnjcK6gg==} - '@expo/config-types@52.0.1': - resolution: {integrity: sha512-vD8ZetyKV7U29lR6+NJohYeoLYTH+eNYXJeNiSOrWCz0witJYY11meMmEnpEaVbN89EfC6uauSUOa6wihtbyPQ==} + '@expo/config-types@53.0.0-canary-20250306-d9d3e02': + resolution: {integrity: sha512-Kna72gQozGDCeCnayyKksA8XDdGozvK7oL9Yp0/DdjCwZgut3uXE38aN9Agmi5dYK6XzbakpPUimSxNU/i083w==} - '@expo/config@10.0.5': - resolution: {integrity: sha512-wq48h3HlAPq5v/gMprarAiVY1aEXNBVJ+Em0vrHcYFO8UyxzR6oIao2E4Ed3VWHqhTzPXkMPH4hKCKlzFVBFwQ==} + '@expo/config@11.0.0-canary-20250306-d9d3e02': + resolution: {integrity: sha512-f/mkS3sYTYjo67MU3daDfH5JOYVXFcOg8gcfgbo+QsFiRJpKD72uTit/mAL+59bvPxsP38KKQJNAzJ1Yey9q4w==} '@expo/devcert@1.1.4': resolution: {integrity: sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==} - '@expo/env@0.4.0': - resolution: {integrity: sha512-g2JYFqck3xKIwJyK+8LxZ2ENZPWtRgjFWpeht9abnKgzXVXBeSNECFBkg+WQjQocSIdxXhEWM6hz4ZAe7Tc4ng==} + '@expo/env@1.0.1-canary-20250306-d9d3e02': + resolution: {integrity: sha512-9+ZxeROpsPS/3K51uUfXyoXw8Y3pORT+u9K5rkhkOeeNRTE7FR8f4NFgDWOk7qle2NkG6/JTnE2QbJSWhqfyUQ==} - '@expo/fingerprint@0.11.2': - resolution: {integrity: sha512-WPibADqymGSKkNNnrGfw4dRipz7F8DwMSv7zb6T9oTGtdRiObrUpGmtBXmvo6z9MqWkNRprEJNxPjvkkvMvwhQ==} + '@expo/fingerprint@0.11.12-canary-20250306-d9d3e02': + resolution: {integrity: sha512-77hVUZqByM7bIMTYy4vf0canNEuPlp1mjKn9T8VnMMAkiJMJJGi6hMRyU0nsnJM8x5NtZD/L9DgoKhK8iYy9jw==} hasBin: true - '@expo/image-utils@0.6.3': - resolution: {integrity: sha512-v/JbCKBrHeudxn1gN1TgfPE/pWJSlLPrl29uXJBgrJFQVkViQvUHQNDhaS+UEa9wYI5HHh7XYmtzAehyG4L+GA==} + '@expo/image-utils@0.6.6-canary-20250306-d9d3e02': + resolution: {integrity: sha512-2Sqi+10F8uKNYWZMDxvWP1cXUmdpRq50NYTBTV0IgHDsBc+bcJ+fWYe/4NmF8aukY/MgB0BAycIiDBxXn5JZOg==} - '@expo/json-file@9.0.0': - resolution: {integrity: sha512-M+55xFVrFzDcgMDf+52lPDLjKB5xwRfStWlv/b/Vu2OLgxGZLWpxoPYjlRoHqxjPbCQIi2ZCbobK+0KuNhsELg==} + '@expo/json-file@9.0.3-canary-20250306-d9d3e02': + resolution: {integrity: sha512-9qrcHOEUqoesMRcjCxnxISvYT6XmKS0k30yBaVOMJ7UN021kgQbe5KT58Nf6kv8tkZ90AouAI1i/XqlBbbOayw==} - '@expo/metro-config@0.19.4': - resolution: {integrity: sha512-2SWwYN8MZvMIRawWEr+1RBYncitPwu2VMACRYig+wBycJ9fsPb6BMVmBYi+3MHDUlJHNy/Bqfw++jn1eqBFETQ==} + '@expo/metro-config@0.20.0-canary-20250306-d9d3e02': + resolution: {integrity: sha512-LRQroidJZCRsdmIQueCZJ9CeDeDsNGMrhB7NrrljmkMtQW2VKoBcugM+DDY+lLADr9S3a5JRl74new6HQDkWZQ==} - '@expo/metro-runtime@4.0.0': - resolution: {integrity: sha512-+zgCyuXqIzgZVN8h0g36sursGXBy3xqtJW9han7t/iR2HTTrrbEoep5ftW1a27bdSINU96ng+rSsPLbyHYeBvw==} + '@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02': + resolution: {integrity: sha512-38Z8BacXSNzHGW5FLd/2tcFzKiCS9k7gkCMP7OwibqzBKHEdGdG64NYO23sdMXpi/ijaqPxkrLxtGGUwMLEphg==} peerDependencies: react-native: '*' - '@expo/osascript@2.1.4': - resolution: {integrity: sha512-LcPjxJ5FOFpqPORm+5MRLV0CuYWMthJYV6eerF+lQVXKlvgSn3EOqaHC3Vf3H+vmB0f6G4kdvvFtg40vG4bIhA==} + '@expo/osascript@2.1.7-canary-20250306-d9d3e02': + resolution: {integrity: sha512-84GY3VyI/KSSixjAVtQtZHTZ6qb6naGrv0CLFLOSxTIfYEUrdkutxMIAxxIPawsTWzZdTh3Ph8ZR8jSdrfTYjw==} engines: {node: '>=12'} - '@expo/package-manager@1.6.1': - resolution: {integrity: sha512-4rT46wP/94Ll+CWXtFKok1Lbo9XncSUtErFOo/9/3FVughGbIfdG4SKZOAWIpr9wxwEfkyhHfAP9q71ONlWODw==} - - '@expo/plist@0.2.0': - resolution: {integrity: sha512-F/IZJQaf8OIVnVA6XWUeMPC3OH6MV00Wxf0WC0JhTQht2QgjyHUa3U5Gs3vRtDq8tXNsZneOQRDVwpaOnd4zTQ==} + '@expo/package-manager@1.6.2-canary-20250306-d9d3e02': + resolution: {integrity: sha512-sF4tK3fHluqXJSzeF4tfJNLqCxLrLGigu8f9BDFZsUnlp0vjOViV0ymEJPBcx6//pgCPTuCWkDoGsj5UyYwbcQ==} - '@expo/prebuild-config@8.0.20': - resolution: {integrity: sha512-2N2R3qP12Jitmi8V0UG/5s6Se2Fq9RKIdlOTrVA5TzJeHkhCcvQRaRUlojwqjlYh4B3cByLjhTXyWoxM6+wpXQ==} + '@expo/plist@0.2.3-canary-20250306-d9d3e02': + resolution: {integrity: sha512-2ImG5M36tAuKH5YQe7bvtzjQdkCakGmjsyj62RCWwrQ4TsZW7Z0DUHrjMl3GLt7hoy/tzYFGNWLQ7/sASDECyw==} - '@expo/rudder-sdk-node@1.1.1': - resolution: {integrity: sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==} - engines: {node: '>=12'} + '@expo/prebuild-config@9.0.0-canary-20250306-d9d3e02': + resolution: {integrity: sha512-7K7NdT/t8GaYHC30EydZQV63jrFLSGYrCxtPIp9VHqjiqInXZlUOoe6x/TnCncWPTMOirXSW1S8OZw4t15gKAg==} '@expo/sdk-runtime-versions@1.0.0': resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - '@expo/server@0.5.0': - resolution: {integrity: sha512-bfo5udr9C2feCn+vGQ9LvjRD2zFjMyBEnMWDZLYr5D8eCjqLjazGBpPKOVjWOhFR2SshKA3hUBkWEYrVpun0NQ==} + '@expo/server@0.5.2-canary-20250306-d9d3e02': + resolution: {integrity: sha512-aSE62Tn7povD+Ija0EtiJ9zY6wC1DZBIu2ntvVsZHw6Rh5HBUVFrYoxfPl/jRVZn4u3kai1kF1u2Bkvkw9EXxw==} '@expo/spawn-async@1.7.2': resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} @@ -3075,21 +3047,24 @@ packages: '@expo/vector-icons@14.0.4': resolution: {integrity: sha512-+yKshcbpDfbV4zoXOgHxCwh7lkE9VVTT5T03OUlBsqfze1PLy6Hi4jp1vSb1GVbY6eskvMIivGVc9SKzIv0oEQ==} + '@expo/ws-tunnel@1.0.6': + resolution: {integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==} + '@expo/xcpretty@4.3.1': resolution: {integrity: sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==} hasBin: true - '@expressive-code/core@0.33.5': - resolution: {integrity: sha512-KL0EkKAvd7SSIQL3ZIP19xqe4xNjBaQYNvcJC6RmoBUnQpvxaJNFwRxCBEF/X0ftJEMaSG7WTrabZ9c/zFeqmA==} + '@expressive-code/core@0.40.2': + resolution: {integrity: sha512-gXY3v7jbgz6nWKvRpoDxK4AHUPkZRuJsM79vHX/5uhV9/qX6Qnctp/U/dMHog/LCVXcuOps+5nRmf1uxQVPb3w==} - '@expressive-code/plugin-frames@0.33.5': - resolution: {integrity: sha512-lFt/gbnZscBSxHovg4XiWohp5nrxk4McS6RGABdj6+0gJcX8/YrFTM23GKBIkaDePxdDidVY0jQYGYDL/RrQHw==} + '@expressive-code/plugin-frames@0.40.2': + resolution: {integrity: sha512-aLw5IlDlZWb10Jo/TTDCVsmJhKfZ7FJI83Zo9VDrV0OBlmHAg7klZqw68VDz7FlftIBVAmMby53/MNXPnMjTSQ==} - '@expressive-code/plugin-shiki@0.33.5': - resolution: {integrity: sha512-LWgttQTUrIPE1X+Lya1qFWiX47tH2AS2hkbj/cZoWkdiSjn6zUvtTypK/2Xn6Rgn6z6ClzpgHvkXRqFn7nAB4A==} + '@expressive-code/plugin-shiki@0.40.2': + resolution: {integrity: sha512-t2HMR5BO6GdDW1c1ISBTk66xO503e/Z8ecZdNcr6E4NpUfvY+MRje+LtrcvbBqMwWBBO8RpVKcam/Uy+1GxwKQ==} - '@expressive-code/plugin-text-markers@0.33.5': - resolution: {integrity: sha512-JxSHL1MGrJAPNaUMjFXex3K+9NJDbfew9H6PmX8LQ+fm9VNQdtBYTAz/x7nqOk7bkTrtAZK5RfDqUfb8U5M+2A==} + '@expressive-code/plugin-text-markers@0.40.2': + resolution: {integrity: sha512-/XoLjD67K9nfM4TgDlXAExzMJp6ewFKxNpfUw4F7q5Ecy+IU3/9zQQG/O70Zy+RxYTwKGw2MA9kd7yelsxnSmw==} '@floating-ui/core@1.6.8': resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} @@ -3215,6 +3190,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@isaacs/ttlcache@1.4.1': resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} @@ -3272,66 +3251,61 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + '@mapbox/node-pre-gyp@2.0.0': + resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==} + engines: {node: '>=18'} hasBin: true '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} - '@next/env@14.2.14': - resolution: {integrity: sha512-/0hWQfiaD5//LvGNgc8PjvyqV50vGK0cADYzaoOOGN8fxzBn3iAiaq3S0tCRnFBldq0LVveLcxCTi41ZoYgAgg==} + '@next/env@15.2.2': + resolution: {integrity: sha512-yWgopCfA9XDR8ZH3taB5nRKtKJ1Q5fYsTOuYkzIIoS8TJ0UAUKAGF73JnGszbjk2ufAQDj6mDdgsJAFx5CLtYQ==} - '@next/swc-darwin-arm64@14.2.14': - resolution: {integrity: sha512-bsxbSAUodM1cjYeA4o6y7sp9wslvwjSkWw57t8DtC8Zig8aG8V6r+Yc05/9mDzLKcybb6EN85k1rJDnMKBd9Gw==} + '@next/swc-darwin-arm64@15.2.2': + resolution: {integrity: sha512-HNBRnz+bkZ+KfyOExpUxTMR0Ow8nkkcE6IlsdEa9W/rI7gefud19+Sn1xYKwB9pdCdxIP1lPru/ZfjfA+iT8pw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@14.2.14': - resolution: {integrity: sha512-cC9/I+0+SK5L1k9J8CInahduTVWGMXhQoXFeNvF0uNs3Bt1Ub0Azb8JzTU9vNCr0hnaMqiWu/Z0S1hfKc3+dww==} + '@next/swc-darwin-x64@15.2.2': + resolution: {integrity: sha512-mJOUwp7al63tDpLpEFpKwwg5jwvtL1lhRW2fI1Aog0nYCPAhxbJsaZKdoVyPZCy8MYf/iQVNDuk/+i29iLCzIA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@14.2.14': - resolution: {integrity: sha512-RMLOdA2NU4O7w1PQ3Z9ft3PxD6Htl4uB2TJpocm+4jcllHySPkFaUIFacQ3Jekcg6w+LBaFvjSPthZHiPmiAUg==} + '@next/swc-linux-arm64-gnu@15.2.2': + resolution: {integrity: sha512-5ZZ0Zwy3SgMr7MfWtRE7cQWVssfOvxYfD9O7XHM7KM4nrf5EOeqwq67ZXDgo86LVmffgsu5tPO57EeFKRnrfSQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@14.2.14': - resolution: {integrity: sha512-WgLOA4hT9EIP7jhlkPnvz49iSOMdZgDJVvbpb8WWzJv5wBD07M2wdJXLkDYIpZmCFfo/wPqFsFR4JS4V9KkQ2A==} + '@next/swc-linux-arm64-musl@15.2.2': + resolution: {integrity: sha512-cgKWBuFMLlJ4TWcFHl1KOaVVUAF8vy4qEvX5KsNd0Yj5mhu989QFCq1WjuaEbv/tO1ZpsQI6h/0YR8bLwEi+nA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@14.2.14': - resolution: {integrity: sha512-lbn7svjUps1kmCettV/R9oAvEW+eUI0lo0LJNFOXoQM5NGNxloAyFRNByYeZKL3+1bF5YE0h0irIJfzXBq9Y6w==} + '@next/swc-linux-x64-gnu@15.2.2': + resolution: {integrity: sha512-c3kWSOSsVL8rcNBBfOq1+/j2PKs2nsMwJUV4icUxRgGBwUOfppeh7YhN5s79enBQFU+8xRgVatFkhHU1QW7yUA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@14.2.14': - resolution: {integrity: sha512-7TcQCvLQ/hKfQRgjxMN4TZ2BRB0P7HwrGAYL+p+m3u3XcKTraUFerVbV3jkNZNwDeQDa8zdxkKkw2els/S5onQ==} + '@next/swc-linux-x64-musl@15.2.2': + resolution: {integrity: sha512-PXTW9PLTxdNlVYgPJ0equojcq1kNu5NtwcNjRjHAB+/sdoKZ+X8FBu70fdJFadkxFIGekQTyRvPMFF+SOJaQjw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@14.2.14': - resolution: {integrity: sha512-8i0Ou5XjTLEje0oj0JiI0Xo9L/93ghFtAUYZ24jARSeTMXLUx8yFIdhS55mTExq5Tj4/dC2fJuaT4e3ySvXU1A==} + '@next/swc-win32-arm64-msvc@15.2.2': + resolution: {integrity: sha512-nG644Es5llSGEcTaXhnGWR/aThM/hIaz0jx4MDg4gWC8GfTCp8eDBWZ77CVuv2ha/uL9Ce+nPTfYkSLG67/sHg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-ia32-msvc@14.2.14': - resolution: {integrity: sha512-2u2XcSaDEOj+96eXpyjHjtVPLhkAFw2nlaz83EPeuK4obF+HmtDJHqgR1dZB7Gb6V/d55FL26/lYVd0TwMgcOQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.14': - resolution: {integrity: sha512-MZom+OvZ1NZxuRovKt1ApevjiUJTcU2PmdJKL66xUPaJeRywnbGGRWUlaAOwunD6dX+pm83vj979NTC8QXjGWg==} + '@next/swc-win32-x64-msvc@15.2.2': + resolution: {integrity: sha512-52nWy65S/R6/kejz3jpvHAjZDPKIbEQu4x9jDBzmB9jJfuOy5rspjKu4u77+fI4M/WzLXrrQd57hlFGzz1ubcQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3348,38 +3322,34 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/fs@3.1.1': - resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@pagefind/darwin-arm64@1.2.0': - resolution: {integrity: sha512-pHnPL2rm4xbe0LqV376g84hUIsVdy4PK6o2ACveo0DSGoC40eOIwPUPftnUPUinSdDWkkySaL5FT5r9hsXk0ZQ==} + '@pagefind/darwin-arm64@1.3.0': + resolution: {integrity: sha512-365BEGl6ChOsauRjyVpBjXybflXAOvoMROw3TucAROHIcdBvXk9/2AmEvGFU0r75+vdQI4LJdJdpH4Y6Yqaj4A==} cpu: [arm64] os: [darwin] - '@pagefind/darwin-x64@1.2.0': - resolution: {integrity: sha512-q2tcnfvcRyx0GnrJoUQJ5bRpiFNtI8DZWM6a4/k8sNJxm2dbM1BnY5hUeo4MbDfpb64Qc1wRMcvBUSOaMKBjfg==} + '@pagefind/darwin-x64@1.3.0': + resolution: {integrity: sha512-zlGHA23uuXmS8z3XxEGmbHpWDxXfPZ47QS06tGUq0HDcZjXjXHeLG+cboOy828QIV5FXsm9MjfkP5e4ZNbOkow==} cpu: [x64] os: [darwin] - '@pagefind/default-ui@1.2.0': - resolution: {integrity: sha512-MDSbm34veKpzFP5eJMh/pcPdrOc4FZKUsbpDsbdjSLC2ZeuTjsfDBNu9MGZaNUvGKUdlKk5JozQkVO/dzdSxrQ==} + '@pagefind/default-ui@1.3.0': + resolution: {integrity: sha512-CGKT9ccd3+oRK6STXGgfH+m0DbOKayX6QGlq38TfE1ZfUcPc5+ulTuzDbZUnMo+bubsEOIypm4Pl2iEyzZ1cNg==} - '@pagefind/linux-arm64@1.2.0': - resolution: {integrity: sha512-wVtLOlF9AUrwLovP9ZSEKOYnwIVrrxId4I2Mz02Zxm3wbUIJyx8wHf6LyEf7W7mJ6rEjW5jtavKAbngKCAaicg==} + '@pagefind/linux-arm64@1.3.0': + resolution: {integrity: sha512-8lsxNAiBRUk72JvetSBXs4WRpYrQrVJXjlRRnOL6UCdBN9Nlsz0t7hWstRk36+JqHpGWOKYiuHLzGYqYAqoOnQ==} cpu: [arm64] os: [linux] - '@pagefind/linux-x64@1.2.0': - resolution: {integrity: sha512-Lo5aO2bA++sQTeEWzK5WKr3KU0yzVH5OnTY88apZfkgL4AVfXckH2mrOU8ouYKCLNPseIYTLFEdj0V5xjHQSwQ==} + '@pagefind/linux-x64@1.3.0': + resolution: {integrity: sha512-hAvqdPJv7A20Ucb6FQGE6jhjqy+vZ6pf+s2tFMNtMBG+fzcdc91uTw7aP/1Vo5plD0dAOHwdxfkyw0ugal4kcQ==} cpu: [x64] os: [linux] - '@pagefind/windows-x64@1.2.0': - resolution: {integrity: sha512-tGQcwQAb5Ndv7woc7lhH9iAdxOnTNsgCz8sEBbsASPB2A0uI8BWBmVdf2GFLQkYHqnnqYuun63sa+UOzB7Ah3g==} + '@pagefind/windows-x64@1.3.0': + resolution: {integrity: sha512-BR1bIRWOMqkf8IoU576YDhij1Wd/Zf2kX/kCI0b2qzCKC8wcc2GQJaaRMCpzvCCrmliO4vtJ6RITp/AnoYUUmQ==} cpu: [x64] os: [win32] @@ -4104,28 +4074,28 @@ packages: peerDependencies: react-native: ^0.0.0-0 || >=0.60 <1.0 - '@react-native/assets-registry@0.76.3': - resolution: {integrity: sha512-7Fnc3lzCFFpnoyL1egua6d/qUp0KiIpeSLbfOMln4nI2g2BMzyFHdPjJnpLV2NehmS0omOOkrfRqK5u1F/MXzA==} + '@react-native/assets-registry@0.78.0': + resolution: {integrity: sha512-PPHlTRuP9litTYkbFNkwveQFto3I94QRWPBBARU0cH/4ks4EkfCfb/Pdb3AHgtJi58QthSHKFvKTQnAWyHPs7w==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.76.3': - resolution: {integrity: sha512-mZ7jmIIg4bUnxCqY3yTOkoHvvzsDyrZgfnIKiTGm5QACrsIGa5eT3pMFpMm2OpxGXRDrTMsYdPXE2rCyDX52VQ==} + '@react-native/babel-plugin-codegen@0.78.0': + resolution: {integrity: sha512-+Sy9Uine0QAbQRxMl6kBlkzKW0qHQk8hghCoKswRWt1ZfxaMA3rezobD5mtSwt/Yhadds9cGbMFWfFJM3Tynsg==} engines: {node: '>=18'} - '@react-native/babel-preset@0.76.3': - resolution: {integrity: sha512-zi2nPlQf9q2fmfPyzwWEj6DU96v8ziWtEfG7CTAX2PG/Vjfsr94vn/wWrCdhBVvLRQ6Kvd/MFAuDYpxmQwIiVQ==} + '@react-native/babel-preset@0.78.0': + resolution: {integrity: sha512-q44ZbR0JXdPvNrjNw75VmiVXXoJhZIx8dTUBVgnZx/UHBQuhPu0e8pAuo56E2mZVkF7FK0s087/Zji8n5OSxbQ==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.76.3': - resolution: {integrity: sha512-oJCH/jbYeGmFJql8/y76gqWCCd74pyug41yzYAjREso1Z7xL88JhDyKMvxEnfhSdMOZYVl479N80xFiXPy3ZYA==} + '@react-native/codegen@0.78.0': + resolution: {integrity: sha512-8iVT2VYhkalLFUWoQRGSluZZHEG93StfwQGwQ+wk1vOUlOfoT/Xqglt6DvGXIyM9gaMCr6fJBFQVrU+FrXEFYA==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/community-cli-plugin@0.76.3': - resolution: {integrity: sha512-vgsLixHS24jR0d0QqPykBWFaC+V8x9cM3cs4oYXw3W199jgBNGP9MWcUJLazD2vzrT/lUTVBVg0rBeB+4XR6fg==} + '@react-native/community-cli-plugin@0.78.0': + resolution: {integrity: sha512-LpfEU+F1hZGcxIf07aBrjlImA0hh8v76V4wTJOgxxqGDUjjQ/X6h9V+bMXne60G9gwccTtvs1G0xiKWNUPI0VQ==} engines: {node: '>=18'} peerDependencies: '@react-native-community/cli-server-api': '*' @@ -4133,24 +4103,24 @@ packages: '@react-native-community/cli-server-api': optional: true - '@react-native/debugger-frontend@0.76.3': - resolution: {integrity: sha512-pMHQ3NpPB28RxXciSvm2yD+uDx3pkhzfuWkc7VFgOduyzPSIr0zotUiOJzsAtrj8++bPbOsAraCeQhCqoOTWQw==} + '@react-native/debugger-frontend@0.78.0': + resolution: {integrity: sha512-KQYD9QlxES/VdmXh9EEvtZCJK1KAemLlszQq4dpLU1stnue5N8dnCY6A7PpStMf5UtAMk7tiniQhaicw0uVHgQ==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.76.3': - resolution: {integrity: sha512-b+2IpW40z1/S5Jo5JKrWPmucYU/PzeGyGBZZ/SJvmRnBDaP3txb9yIqNZAII1EWsKNhedh8vyRO5PSuJ9Juqzw==} + '@react-native/dev-middleware@0.78.0': + resolution: {integrity: sha512-zEafAZdOz4s37Jh5Xcv4hJE5qZ6uNxgrTLcpjDOJnQG6dO34/BoZeXvDrjomQFNn6ogdysR51mKJStaQ3ixp5A==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.76.3': - resolution: {integrity: sha512-t0aYZ8ND7+yc+yIm6Yp52bInneYpki6RSIFZ9/LMUzgMKvEB62ptt/7sfho9QkKHCNxE1DJSWIqLIGi/iHHkyg==} + '@react-native/gradle-plugin@0.78.0': + resolution: {integrity: sha512-WvwgfmVs1QfFl1FOL514kz2Fs5Nkg2BGgpE8V0ild8b/UT6jCD8qh2dTI5kL0xdT0d2Xd2BxfuFN0xCLkMC+SA==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.76.3': - resolution: {integrity: sha512-pubJFArMMrdZiytH+W95KngcSQs+LsxOBsVHkwgMnpBfRUxXPMK4fudtBwWvhnwN76Oe+WhxSq7vOS5XgoPhmw==} + '@react-native/js-polyfills@0.78.0': + resolution: {integrity: sha512-YZ9XtS77s/df7548B6dszX89ReehnA7hiab/axc30j/Mgk7Wv2woOjBKnAA4+rZ0ITLtxNwyJIMaRAc9kGznXw==} engines: {node: '>=18'} - '@react-native/metro-babel-transformer@0.76.3': - resolution: {integrity: sha512-b2zQPXmW7avw/7zewc9nzMULPIAjsTwN03hskhxHUJH5pzUf7pIklB3FrgYPZrRhJgzHiNl3tOPu7vqiKzBYPg==} + '@react-native/metro-babel-transformer@0.78.0': + resolution: {integrity: sha512-Hy/dl+zytLCRD9dp32ukcRS1Bn0gZH0h0i3AbriS6OGYgUgjAUFhXOKzZ15/G1SEq2sng91MNo/hMvo4uXoc5A==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' @@ -4158,27 +4128,27 @@ packages: '@react-native/normalize-colors@0.74.88': resolution: {integrity: sha512-He5oTwPBxvXrxJ91dZzpxR7P+VYmc9IkJfhuH8zUiU50ckrt+xWNjtVugPdUv4LuVjmZ36Vk2EX8bl1gVn2dVA==} - '@react-native/normalize-colors@0.76.3': - resolution: {integrity: sha512-Yrpmrh4IDEupUUM/dqVxhAN8QW1VEUR3Qrk2lzJC1jB2s46hDe0hrMP2vs12YJqlzshteOthjwXQlY0TgIzgbg==} - '@react-native/normalize-colors@0.77.1': resolution: {integrity: sha512-sCmEs/Vpi14CtFYhmKXpPFZntKYGezFGgT9cJANRS2aFseAL4MOomb5Ms+TOQw82aFcwPPjDX6Hrl87WjTf73A==} - '@react-native/virtualized-lists@0.76.3': - resolution: {integrity: sha512-wTGv9pVh3vAOWb29xFm+J9VRe9dUcUcb9FyaMLT/Hxa88W4wqa5ZMe1V9UvrrBiA1G5DKjv8/1ZcDsJhyugVKA==} + '@react-native/normalize-colors@0.78.0': + resolution: {integrity: sha512-FkeLvLLaMYlGsSntixTUvlNtc1OHij4TYRtymMNPWqBKFAMXJB/qe45VxXNzWP+jD0Ok6yXineQFtktKcHk9PA==} + + '@react-native/virtualized-lists@0.78.0': + resolution: {integrity: sha512-ibETs3AwpkkRcORRANvZeEFjzvN41W02X882sBzoxC5XdHiZ2DucXo4fjKF7i86MhYCFLfNSIYbwupx1D1iFmg==} engines: {node: '>=18'} peerDependencies: - '@types/react': ^18.2.6 + '@types/react': ^19.0.0 react: '*' react-native: '*' peerDependenciesMeta: '@types/react': optional: true - '@react-navigation/bottom-tabs@7.0.7': - resolution: {integrity: sha512-ZosKpDjalic/MiOu0kRJe9s0aGzDJcTR6wCWdJ0Ncnd3FXu3V55jS0502HjFCbaVXRItww4r3O0e5nc0Nq86NA==} + '@react-navigation/bottom-tabs@7.2.1': + resolution: {integrity: sha512-UGC7csRD/1+SJKLbaEg8K44KvkdBaEBIro0PpIRawRmHS93emf4LNfDafd8y6pReJN93OVVnqLWqcYozx4lZ4A==} peerDependencies: - '@react-navigation/native': ^7.0.4 + '@react-navigation/native': ^7.0.15 react: '>= 18.2.0' react-native: '*' react-native-safe-area-context: '>= 4.0.0' @@ -4189,11 +4159,16 @@ packages: peerDependencies: react: '>= 18.2.0' - '@react-navigation/elements@2.1.1': - resolution: {integrity: sha512-5ENc4tFpSpSDECaIq0j4+TT8BDjF6Wc3qvLrWxsY+UCG8veFY+SunDQG5HmHZ91CFXXsj7zBUQ8Q14b1J7tOIA==} + '@react-navigation/core@7.4.0': + resolution: {integrity: sha512-URiDluFl7cLA7GtOAsEvRqPmEMlSSXadqQ3wi9+Dl43dNRMqnoF76WQ9BCXeUPLydJq4yVte9XeMPyD6a0lY1g==} + peerDependencies: + react: '>= 18.2.0' + + '@react-navigation/elements@2.2.6': + resolution: {integrity: sha512-UPeaCcEDSDRaxjG+qEHbur6jmNW/f9QNCyPsUt6NMgPEdbB5Z8K8oSx2swIaiCnvUbs/K5G3MuWkqQxGj8QXXA==} peerDependencies: '@react-native-masked-view/masked-view': '>= 0.2.0' - '@react-navigation/native': ^7.0.4 + '@react-navigation/native': ^7.0.15 react: '>= 18.2.0' react-native: '*' react-native-safe-area-context: '>= 4.0.0' @@ -4201,15 +4176,21 @@ packages: '@react-native-masked-view/masked-view': optional: true - '@react-navigation/native-stack@7.1.1': - resolution: {integrity: sha512-IM2u3nYSfb/K7gOyMn/5Lg3kaZtrwcamyMvM+x4CzEuZIL2CzeCOKHXlmdiwJpW2kBYt/FDZmWwgOH38OwVJ0Q==} + '@react-navigation/native-stack@7.2.1': + resolution: {integrity: sha512-zqC6DVpO4pFZrl+8JuIgV8qk+AGdTuv+hJ5EHePmzs9gYSUrDpw6LahFCiXshwBvi9LinIw9Do7mtnQK2Q8AGA==} peerDependencies: - '@react-navigation/native': ^7.0.4 + '@react-navigation/native': ^7.0.15 react: '>= 18.2.0' react-native: '*' react-native-safe-area-context: '>= 4.0.0' react-native-screens: '>= 4.0.0' + '@react-navigation/native@7.0.15': + resolution: {integrity: sha512-72PabJJ8VY3GM8i/DCutFW+ATED96ZV6NH+bW+ry1EL0ZFGHoie96H+KzTqktsrUbBw1rd9KXbEQhBQgo0N7iQ==} + peerDependencies: + react: '>= 18.2.0' + react-native: '*' + '@react-navigation/native@7.0.4': resolution: {integrity: sha512-0K9AqV+qWjAzcielVClMltFr5e8bYppxM9f7GmG6R8+yUv9l60k/VEQFH5eKIyyld7u2PkWCLRKE3ghlUjMt/w==} peerDependencies: @@ -4219,50 +4200,20 @@ packages: '@react-navigation/routers@7.0.0': resolution: {integrity: sha512-b2ehNmgAfDziTd0EERm0C9JI9JH1kdRS4SNBWbKQOVPv23WG+5ExovwWet26sGtMabLJ5lxSE8Z2/fByfggjNQ==} - '@remix-run/node@2.15.0': - resolution: {integrity: sha512-tWbR7pQ6gwj+MkGf6WVIYnjgfGfpdU8EOIa6xsCIRlrm0p3BtMz4jA3GvBWEpOuEnN5MV7CarVzhduaRzkZ0SQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - typescript: ^5.1.0 - peerDependenciesMeta: - typescript: - optional: true + '@react-navigation/routers@7.2.0': + resolution: {integrity: sha512-lMyib39H4a//u+eiyt162U6TwCfI8zJbjl9ovjKtDddQ4/Vf7b8/OhyimnJH09N2CBfm4pv0gCV6Q0WnZcfaJg==} - '@remix-run/router@1.21.0': - resolution: {integrity: sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==} + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} - - '@remix-run/server-runtime@2.15.0': - resolution: {integrity: sha512-FuM8vAg1sPskf4wn0ivbuj/7s9Qdh2wnKu+sVXqYz0a95gH5b73TuMzk6n3NMSkFVKKc6+UmlG1WLYre7L2LTg==} - engines: {node: '>=18.0.0'} peerDependencies: - typescript: ^5.1.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: - typescript: + rollup: optional: true - '@remix-run/web-blob@3.1.0': - resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} - - '@remix-run/web-fetch@4.4.2': - resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} - engines: {node: ^10.17 || >=12.3} - - '@remix-run/web-file@3.1.0': - resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} - - '@remix-run/web-form-data@3.1.0': - resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} - - '@remix-run/web-stream@1.1.0': - resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} - - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - - '@rollup/pluginutils@5.1.3': - resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -4275,108 +4226,206 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.35.0': + resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.27.4': resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.35.0': + resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.27.4': resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.35.0': + resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.27.4': resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.35.0': + resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-freebsd-arm64@4.27.4': resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.35.0': + resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.27.4': resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==} cpu: [x64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.35.0': + resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.27.4': resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.35.0': + resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.27.4': resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.35.0': + resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.27.4': resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.35.0': + resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.27.4': resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.35.0': + resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.27.4': resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.35.0': + resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.27.4': resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.35.0': + resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.27.4': resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.35.0': + resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.27.4': resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.35.0': + resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.27.4': resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.35.0': + resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.27.4': resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==} cpu: [x64] os: [win32] - '@segment/loosely-validate-event@2.0.0': - resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} + '@rollup/rollup-win32-x64-msvc@4.35.0': + resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} + cpu: [x64] + os: [win32] + + '@shikijs/core@1.29.2': + resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} + + '@shikijs/engine-javascript@1.29.2': + resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} - '@shikijs/core@1.23.1': - resolution: {integrity: sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==} + '@shikijs/engine-oniguruma@1.29.2': + resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - '@shikijs/engine-javascript@1.23.1': - resolution: {integrity: sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg==} + '@shikijs/langs@1.29.2': + resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - '@shikijs/engine-oniguruma@1.23.1': - resolution: {integrity: sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ==} + '@shikijs/themes@1.29.2': + resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - '@shikijs/types@1.23.1': - resolution: {integrity: sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g==} + '@shikijs/types@1.29.2': + resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - '@shikijs/vscode-textmate@9.3.0': - resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -4390,8 +4439,8 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} '@tsconfig/react-native@1.0.5': resolution: {integrity: sha512-hRGn7FKJQD5dCKaXm7xL0zMEYZvCw+lpGlnOYGtixQygPYnH8h6Vn8zaam0n2nxE2PkUMoJU852MO7ckc4JTpg==} @@ -4426,9 +4475,6 @@ packages: '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/hast@2.3.10': - resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} - '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -4441,6 +4487,9 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -4453,9 +4502,6 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/nlcst@1.0.4': - resolution: {integrity: sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==} - '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} @@ -4468,17 +4514,13 @@ packages: '@types/node@20.17.7': resolution: {integrity: sha512-sZXXnpBFMKbao30dUAvzKbdwA2JM1fwUtVEq/kxKuPI5mMwZiRElCpTXb0Biq/LMEVpXDZL5G5V0RPnxKeyaYg==} - '@types/parse5@6.0.3': - resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} - - '@types/prop-types@15.7.13': - resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - - '@types/react-dom@18.3.1': - resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + '@types/react-dom@19.0.4': + resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==} + peerDependencies: + '@types/react': ^19.0.0 - '@types/react@18.3.12': - resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + '@types/react@19.0.10': + resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -4535,30 +4577,59 @@ packages: vue-router: optional: true - '@vercel/edge@1.1.2': - resolution: {integrity: sha512-wt5SnhsMahWX8U9ZZhFUQoiXhMn/CUxA5xeMdZX1cwyOL1ZbDR3rNI8HRT9RSU73nDxeF6jlnqJyp/0Jy0VM2A==} - - '@vercel/nft@0.27.6': - resolution: {integrity: sha512-mwuyUxskdcV8dd7N7JnxBgvFEz1D9UOePI/WyLLzktv6HSCwgPNQGit/UJ2IykAWGlypKw4pBQjOKWvIbXITSg==} - engines: {node: '>=16'} - hasBin: true - - '@vitejs/plugin-react@4.3.3': - resolution: {integrity: sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 - - '@volar/kit@2.4.10': - resolution: {integrity: sha512-ul+rLeO9RlFDgkY/FhPWMnpFqAsjvjkKz8VZeOY5YCJMwTblmmSBlNJtFNxSBx9t/k1q80nEthLyxiJ50ZbIAg==} + '@vercel/analytics@1.5.0': + resolution: {integrity: sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g==} peerDependencies: - typescript: '*' - - '@volar/language-core@2.4.10': - resolution: {integrity: sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==} - - '@volar/language-server@2.4.10': - resolution: {integrity: sha512-odQsgrJh8hOXfxkSj/BSnpjThb2/KDhbxZnG/XAEx6E3QGDQv4hAOz9GWuKoNs0tkjgwphQGIwDMT1JYaTgRJw==} + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 + next: '>= 13' + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 + peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true + next: + optional: true + react: + optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true + + '@vercel/edge@1.2.1': + resolution: {integrity: sha512-1++yncEyIAi68D3UEOlytYb1IUcIulMWdoSzX2h9LuSeeyR7JtaIgR8DcTQ6+DmYOQn+5MCh6LY+UmK6QBByNA==} + + '@vercel/nft@0.29.2': + resolution: {integrity: sha512-A/Si4mrTkQqJ6EXJKv5EYCDQ3NL6nJXxG8VGXePsaiQigsomHYQC9xSpX8qGk7AEZk4b1ssbYIqJ0ISQQ7bfcA==} + engines: {node: '>=18'} + hasBin: true + + '@vercel/routing-utils@5.0.4': + resolution: {integrity: sha512-4ke67zkXVi2fRZdoYckABcsSkRC9CnrdadOGxoS/Bk22+ObHjGQWvUHExRSXh339anwu9YY7ZacNSGH4gUnTQA==} + + '@vitejs/plugin-react@4.3.4': + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + + '@volar/kit@2.4.10': + resolution: {integrity: sha512-ul+rLeO9RlFDgkY/FhPWMnpFqAsjvjkKz8VZeOY5YCJMwTblmmSBlNJtFNxSBx9t/k1q80nEthLyxiJ50ZbIAg==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.4.10': + resolution: {integrity: sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==} + + '@volar/language-server@2.4.10': + resolution: {integrity: sha512-odQsgrJh8hOXfxkSj/BSnpjThb2/KDhbxZnG/XAEx6E3QGDQv4hAOz9GWuKoNs0tkjgwphQGIwDMT1JYaTgRJw==} '@volar/language-service@2.4.10': resolution: {integrity: sha512-VxUiWS11rnRzakkqw5x1LPhsz+RBfD0CrrFarLGW2/voliYXEdCuSOM3r8JyNRvMvP4uwhD38ccAdTcULQEAIQ==} @@ -4575,23 +4646,13 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - '@web3-storage/multipart-parser@1.0.0': - resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} - - '@xmldom/xmldom@0.7.13': - resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} - engines: {node: '>=10.0.0'} - deprecated: this version is no longer supported, please update to at least 0.8.* - '@xmldom/xmldom@0.8.10': resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - '@zxing/text-encoding@0.9.0': - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@3.0.0: + resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} + engines: {node: ^18.17.0 || >=20.5.0} abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -4616,13 +4677,14 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} @@ -4637,6 +4699,9 @@ packages: peerDependencies: ajv: ^8.8.2 + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -4688,14 +4753,6 @@ packages: application-config-path@0.1.1: resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -4719,29 +4776,25 @@ packages: array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro-expressive-code@0.33.5: - resolution: {integrity: sha512-9JAyllueMUN8JTl/h/yTdbKinNmfalEWcV11s3lSf/UJQbAZfWJuy+IlGcArZDI/CmD21GXhFHLqYthpdY33ug==} + astro-expressive-code@0.40.2: + resolution: {integrity: sha512-yJMQId0yXSAbW9I6yqvJ3FcjKzJ8zRL7elbJbllkv1ZJPlsI0NI83Pxn1YL1IapEM347EvOOkSW2GL+2+NO61w==} peerDependencies: - astro: ^4.0.0-beta || ^3.3.0 + astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@4.16.14: - resolution: {integrity: sha512-2IuLkIp4idyspugq+F52rHZyNqHHi2AdQzuKp3SGytg/YAm50dNeWhP/7l+enjgWZLloLq5xsH5gVQpoDFoyFg==} - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + astro@5.5.2: + resolution: {integrity: sha512-SOTJxB8mqxe/KEYEJiLIot0YULiCffyfTEclwmdeaASitDJ7eLM/KYrJ9sx3U5hq9GVI17Z4Y0P/1T2aQ0ZN3A==} + engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true async-limiter@1.0.1: @@ -4750,20 +4803,6 @@ packages: async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -4771,10 +4810,6 @@ packages: peerDependencies: postcss: ^8.1.0 - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -4782,11 +4817,6 @@ packages: b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4819,9 +4849,6 @@ packages: babel-plugin-react-native-web@0.19.13: resolution: {integrity: sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==} - babel-plugin-syntax-hermes-parser@0.23.1: - resolution: {integrity: sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==} - babel-plugin-syntax-hermes-parser@0.25.1: resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} @@ -4833,8 +4860,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-expo@12.0.2: - resolution: {integrity: sha512-WLApoPw4sOnwwJY+tzp270ndUNfq6xXcZEQUjEQJr8YyDd6uacz7/4iyt2Wl4wEQTabm9DYIZ3GVuNkZzL0M1g==} + babel-preset-expo@13.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-65eIaxpY2EmsBIpCcF+ZvC9vWQn/1PML2tnGiB5dPSAmkmNlSPiC69WuD4pDEDX4L4Sy1pfEuuGPNEVixxGasQ==} peerDependencies: babel-plugin-react-compiler: ^19.0.0-beta-9ee70a1-20241017 react-compiler-runtime: ^19.0.0-beta-8a03594-20241020 @@ -4908,9 +4935,6 @@ packages: resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} - bplist-creator@0.0.7: - resolution: {integrity: sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA==} - bplist-creator@0.1.0: resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} @@ -4945,15 +4969,6 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -4978,14 +4993,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - cacache@18.0.4: - resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} engines: {node: '>=4'} @@ -5047,9 +5054,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -5058,12 +5062,16 @@ packages: resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} engines: {node: '>= 14.16.0'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} chrome-launcher@0.15.2: resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} @@ -5080,16 +5088,12 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - ci-info@4.1.0: - resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} + ci-info@4.2.0: + resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} engines: {node: '>=8'} - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} @@ -5099,10 +5103,6 @@ packages: resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} engines: {node: '>=4'} - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -5122,10 +5122,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -5149,18 +5145,10 @@ packages: color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -5192,9 +5180,6 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - component-type@1.2.2: - resolution: {integrity: sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==} - compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -5214,19 +5199,11 @@ packages: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} @@ -5245,16 +5222,12 @@ packages: cross-fetch@3.1.8: resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - cross-spawn@6.0.6: - resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} - engines: {node: '>=4.8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + crossws@0.3.4: + resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==} crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} @@ -5285,10 +5258,6 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-uri-to-buffer@3.0.1: - resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} - engines: {node: '>= 6'} - debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -5314,6 +5283,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -5333,31 +5311,19 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-gateway@4.2.0: - resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} - engines: {node: '>=6'} + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} denodeify@1.2.1: resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} @@ -5370,6 +5336,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -5403,10 +5372,6 @@ packages: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - direction@2.0.1: resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} hasBin: true @@ -5494,16 +5459,8 @@ packages: error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -5511,16 +5468,16 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - esbuild@0.24.0: resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} hasBin: true + esbuild@0.25.1: + resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5591,10 +5548,6 @@ packages: exec-async@2.2.0: resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -5603,65 +5556,65 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - expo-asset@11.0.1: - resolution: {integrity: sha512-WatvD7JVC89EsllXFYcS/rji3ajVzE2B/USo0TqedsETixwyVCQfrrvCdCPQyuKghrxVNEj8bQ/Qbea/RZLYjg==} + expo-asset@12.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-gOXnvbC5cr8jVeicZ51BAWR/Lfm5W+qCP89Di2VTPCDpmfKoIm2sepxnNcSWp4BmhWAVjDPewUsJYTvc2RqgCQ==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 react: '*' react-native: '*' - expo-constants@17.0.3: - resolution: {integrity: sha512-lnbcX2sAu8SucHXEXxSkhiEpqH+jGrf+TF+MO6sHWIESjwOUVVYlT8qYdjR9xbxWmqFtrI4KV44FkeJf2DaFjQ==} + expo-constants@18.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-bzreYC9p/m7ovgIWabGLYFjXwJgUVEnzNNCVuas62vMLaNulcGtpSKNjlleVMgHsgsbCqaDfFcYtRGWm1GPQlw==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 react-native: '*' - expo-file-system@18.0.4: - resolution: {integrity: sha512-aAWEDwnu0XHOBYvQ9Q0+QIa+483vYJaC4IDsXyWQ73Rtsg273NZh5kYowY+cAocvoSmA99G6htrLBn11ax2bTQ==} + expo-file-system@19.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-zP1ChBtf0z9UKqssxcYIKav3wv2h8vzUbdXA9GBfdKiLqkRfBb3HiG8B2IO8vVa6jv6bahbX1NernT2XAQ21lg==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 react-native: '*' - expo-font@13.0.1: - resolution: {integrity: sha512-8JE47B+6cLeKWr5ql8gU6YsPHjhrz1vMrTqYMm72No/8iW8Sb/uL4Oc0dpmbjq3hLLXBY0xPBQOgU7FQ6Y04Vg==} + expo-font@14.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-8VXoNfJcNLxfsV9Fz+rDK6G0Ufdwwndif0JlKwZmCjlB0mnpnMQS/HX7MfmYu4J0JyX+uYKWHM6aFolx6/7XDw==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 react: '*' - expo-keep-awake@14.0.1: - resolution: {integrity: sha512-c5mGCAIk2YM+Vsdy90BlEJ4ZX+KG5Au9EkJUIxXWlpnuKmDAJ3N+5nEZ7EUO1ZTheqoSBeAo4jJ8rTWPU+JXdw==} + expo-keep-awake@15.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-MNaZlQaWoC9F8sHWUhu+EWkwraP16Ba8gGlEDMlhe9bPp3PCCveQyfwFHu57vlJPO2DQ6+kThPLz67SWe2qHjw==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 react: '*' - expo-linking@7.0.3: - resolution: {integrity: sha512-YiDacNzeQZd/bdOwGyi+YlawM4GGbcSRkuFCpDGIK7D1KUGqLinBHwJvxUMb9Zert2Ois5IHtmZaZ1et6g229g==} + expo-linking@7.1.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-6XcAZ08Gn5IRB3WgVHU63fh1YuUQxzLRzizotpwAHnW0172JMlmrC4TP4SFEN7+c9kkR7sir2ZH/2eQhzeWaWQ==} peerDependencies: react: '*' react-native: '*' - expo-modules-autolinking@2.0.2: - resolution: {integrity: sha512-n3jC7VoJLfOLGk8NWhEAvM5zSjbLh1kMUSo76nJupx5/vASxDdzihppYebrKrNXPHq5mcw8Jr+r7YB+8xHx7QQ==} + expo-modules-autolinking@3.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-ZXVNf+cz3uaazWK8agQc9TG6RfMdcbBRwMZB7Gr5GlxG/3Ss6+duIeR/Ilc5testMm0nH16WCLn0BH1yj2Zf0g==} hasBin: true - expo-modules-core@2.0.6: - resolution: {integrity: sha512-IsFDn8TqhmnxNUWxkhyVqJ07x/vLlaUN1f2R4eYaP9NFoSWb0c2bTf99a03NGxnfuQ9G7Jrzu+VafSHzCKUxxQ==} + expo-modules-core@3.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-ArvZty2BYOTfxFqfjo49mpdiJNyn0G9cGSYOkoj/1cS03QHw6lFCKdTgf6I03JKHKpiGC5hPZe66PLW553V9mw==} - expo-navigation-bar@4.0.4: - resolution: {integrity: sha512-rVoKQFK00+fBPx/nRapLGs+Vl3pe1x+ufkp6/GztGR601tv+1ENAC+KaIMYYQm1L8SpVR0bpNoZ+wr2Xi8Gu9A==} + expo-navigation-bar@5.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-K3xQ7DG2YbEhtm26eGC/RSrv+44oX2k/ES8isYr6T16tCHM5mb/xbHjY5f0Q+l+Qwh+2ZD05sI3DZDhkGlANqw==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 react: '*' react-native: '*' - expo-router@4.0.9: - resolution: {integrity: sha512-bZupRd2nUWolihwhW2kqTTAVyhMaHJbtEFn49bOHtrfl0gkIHld+IecUIh+eJW6QTAcTOHCu5gVHLoJeM0mwjA==} + expo-router@4.0.18-canary-20250306-d9d3e02: + resolution: {integrity: sha512-9eQiHacxvPA1uiKHEsm31LIlWQj71PNDiSjpIBFBthbGPBOOJ9PqlDhyNxyXcz6K9t+t9dHltFr6CUAMGn0e4Q==} peerDependencies: - '@react-navigation/drawer': ^7.0.0 + '@react-navigation/drawer': ^7.1.1 '@testing-library/jest-native': '*' - expo: '*' - expo-constants: '*' - expo-linking: '*' + expo: 53.0.0-canary-20250306-d9d3e02 + expo-constants: 18.0.0-canary-20250306-d9d3e02 + expo-linking: 7.1.0-canary-20250306-d9d3e02 react-native-reanimated: '*' react-native-safe-area-context: '*' react-native-screens: '*' @@ -5673,33 +5626,33 @@ packages: react-native-reanimated: optional: true - expo-splash-screen@0.29.13: - resolution: {integrity: sha512-OTaW6v2ErKTlguFDNi4PN+qrEFRA4TIEyFag4204CiFIpAB+13PqQiW4Ovt29aYlLERIjWD++PyoHeSdLSiZwg==} + expo-splash-screen@0.29.23-canary-20250306-d9d3e02: + resolution: {integrity: sha512-Nrag2m91B7Upkg4rDH9aRgyVNqIehtWLzVlDIv6twFk8Sg/bgKtCzEyUIWrxEa4OEOUX11BEsylIdWsSfkpLhg==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 - expo-status-bar@2.0.0: - resolution: {integrity: sha512-vxxdpvpNDMTEc5uTiIrbTvySKKUsOACmfl8OZuUdjNle05oGqwtq3v5YObwym/njSByjoyuZX8UpXBZnxvarwQ==} + expo-status-bar@2.0.2-canary-20250306-d9d3e02: + resolution: {integrity: sha512-BcWSU5BmY3Q09bAuweMGKsqr+3wRPOuC17K4gsp+Qf9VuPNhCy+f6UPVaAq2yVrJsWY8XNTlqzhFDZmgdTMsOQ==} peerDependencies: react: '*' react-native: '*' - expo-system-ui@4.0.4: - resolution: {integrity: sha512-HShVNcHhdxl2zwlophX2ghjDr40Kexxa2hdeDhZliBoQkOkVrmp28agY+2W8pibAmQDIjjGAEYai07C0U8xQ8w==} + expo-system-ui@5.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-mehTsOuGSH2Q78bg5uAr0c1ZvT2fkqLHy6Izji3JSexZD9kDAVj0SF4y6b+NbtWjStqIUAGaY57mXxUnUY/8zg==} peerDependencies: - expo: '*' + expo: 53.0.0-canary-20250306-d9d3e02 react-native: '*' react-native-web: '*' peerDependenciesMeta: react-native-web: optional: true - expo@52.0.11: - resolution: {integrity: sha512-flUffjURDVufsMpoHrgsp+QDvR6xG/hjeMbzeSyFUcPP64uh3Av1/EJ4uUXhmHYV6/8YbHMwEgUbmko85vBtKQ==} + expo@53.0.0-canary-20250306-d9d3e02: + resolution: {integrity: sha512-15QDMfClEV+s8TUwuAaz97AbndzBpTbICnJAfdiqzn4PP9n2Yah/ujReP8uvmu1BsTcI9m3z89EhTtJPM0MAsw==} hasBin: true peerDependencies: - '@expo/dom-webview': '*' - '@expo/metro-runtime': '*' + '@expo/dom-webview': 0.0.3-canary-20250306-d9d3e02 + '@expo/metro-runtime': 4.0.2-canary-20250306-d9d3e02 react: '*' react-native: '*' react-native-webview: '*' @@ -5714,12 +5667,8 @@ packages: exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - expressive-code@0.33.5: - resolution: {integrity: sha512-UPg2jSvZEfXPiCa4MKtMoMQ5Hwiv7In5/LSCa/ukhjzZqPO48iVsCcEBgXWEUmEAQ02P0z00/xFfBmVnUKH+Zw==} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + expressive-code@0.40.2: + resolution: {integrity: sha512-1zIda2rB0qiDZACawzw2rbdBQiWHBT56uBctS+ezFe5XMAaFaHLnnSYND/Kd+dVzO9HfCXRDpzH3d+3fvOWRcw==} extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -5766,8 +5715,13 @@ packages: picomatch: optional: true - fetch-retry@4.1.1: - resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -5788,10 +5742,6 @@ packages: resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} engines: {node: '>=6'} - find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} - engines: {node: '>=18'} - find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} @@ -5804,9 +5754,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -5821,17 +5768,10 @@ packages: fontfaceobserver@2.3.0: resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - form-data@3.0.2: - resolution: {integrity: sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==} - engines: {node: '>= 6'} - fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -5846,26 +5786,6 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@9.0.0: - resolution: {integrity: sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==} - engines: {node: '>=10'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -5877,11 +5797,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -5894,10 +5809,6 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -5910,10 +5821,6 @@ packages: resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} engines: {node: '>=4'} - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -5948,19 +5855,11 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} + h3@1.15.1: + resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -5974,51 +5873,39 @@ packages: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-embedded@3.0.0: + resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} + + hast-util-format@1.1.0: + resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==} + hast-util-from-html@2.0.3: resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} - hast-util-from-parse5@7.1.2: - resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} - hast-util-from-parse5@8.0.2: resolution: {integrity: sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==} hast-util-has-property@3.0.0: resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} + hast-util-is-body-ok-link@3.0.1: + resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} + hast-util-is-element@3.0.0: resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + hast-util-minify-whitespace@1.0.1: + resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - hast-util-raw@7.2.3: - resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + hast-util-phrasing@3.0.1: + resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} hast-util-raw@9.1.0: resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} @@ -6029,18 +5916,15 @@ packages: hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - hast-util-to-html@8.0.4: - resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} - hast-util-to-html@9.0.3: resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + hast-util-to-jsx-runtime@2.3.2: resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} - hast-util-to-parse5@7.1.0: - resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} - hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} @@ -6050,33 +5934,18 @@ packages: hast-util-to-text@4.0.2: resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - hastscript@9.0.0: resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} - hermes-estree@0.23.1: - resolution: {integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==} - hermes-estree@0.24.0: resolution: {integrity: sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==} hermes-estree@0.25.1: resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - hermes-parser@0.23.1: - resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} - hermes-parser@0.24.0: resolution: {integrity: sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg==} @@ -6090,12 +5959,12 @@ packages: html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} - html-void-elements@2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + html-whitespace-sensitive-tag-names@3.0.1: + resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -6103,9 +5972,9 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -6114,13 +5983,12 @@ packages: hyphenate-style-name@1.1.0: resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + i18next@23.16.8: + resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - image-size@1.1.1: resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} engines: {node: '>=16.x'} @@ -6137,10 +6005,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -6160,31 +6024,26 @@ packages: inline-style-prefixer@6.0.4: resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} - internal-ip@4.3.0: - resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} - engines: {node: '>=6'} + internal-ip@6.1.0: + resolution: {integrity: sha512-Cs1iaqrl3z3KJ2ejWyfKkMcuv9NTEJWXtUBSGVc+Eg9BjBLS0k11CsOkf/p5quOkVhhRuq9zwZ/PuJpPUuDP9Q==} + engines: {node: '>=10'} invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -6195,17 +6054,6 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - is-core-module@2.15.1: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} @@ -6227,10 +6075,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -6239,10 +6083,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -6255,22 +6095,10 @@ packages: engines: {node: '>=14.16'} hasBin: true - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -6283,26 +6111,10 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -6375,9 +6187,6 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true - join-component@1.1.0: - resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} - joycon@3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} @@ -6393,17 +6202,18 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - jsc-safe-url@0.2.4: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - jscodeshift@0.14.0: - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + jscodeshift@17.1.2: + resolution: {integrity: sha512-uime4vFOiZ1o3ICT4Sm/AbItHEVw2oCxQ3a0egYVy3JMMOctxe07H3SKL1v175YqjMt27jn1N+3+Bj9SKDNgdQ==} + engines: {node: '>=16'} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} @@ -6413,6 +6223,9 @@ packages: json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -6427,12 +6240,6 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -6445,6 +6252,10 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -6595,10 +6406,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -6627,10 +6434,6 @@ packages: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} engines: {node: '>=4'} - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -6644,8 +6447,8 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react-native@0.451.0: - resolution: {integrity: sha512-xcGTzNUkgsyx1zu/fwNxSTMF9YINZIgvba0b0Y00eBRvbESPXymgG+yW/FvAYBkoj24MY6FK9J7D2W5mEuYhAQ==} + lucide-react-native@0.482.0: + resolution: {integrity: sha512-5lqBtV9iInE5x0wk1Pdh3mhqTzmkL1PckuXyd5CJT0/aEoEyG1/tpGSlpV/a0qb565ZtwbU+8/GNu2euk6RHww==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 react-native: '*' @@ -6656,8 +6459,8 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 - magic-string@0.30.13: - resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -6666,10 +6469,6 @@ packages: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -6683,14 +6482,6 @@ packages: marky@1.2.5: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - md5-file@3.2.3: - resolution: {integrity: sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==} - engines: {node: '>=0.10'} - hasBin: true - - md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} @@ -6960,10 +6751,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -6978,33 +6765,13 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -7018,12 +6785,13 @@ packages: engines: {node: '>=10'} hasBin: true - mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} + hasBin: true - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} ms@2.0.0: @@ -7043,7 +6811,12 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-build-utils@1.0.2: + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} nativewind@4.1.23: @@ -7070,30 +6843,27 @@ packages: nested-error-stacks@2.0.1: resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} - next@14.2.14: - resolution: {integrity: sha512-Q1coZG17MW0Ly5x76shJ4dkC23woLAhhnDnw+DfTc7EpZSGuWrlsZ3bZaO8t6u1Yu8FVfhkqJE+U8GC7E0GLPQ==} - engines: {node: '>=18.17.0'} + next@15.2.2: + resolution: {integrity: sha512-dgp8Kcx5XZRjMw2KNwBtUzhngRaURPioxoNIVl5BOyJbhi9CUgEtKDO7fx5wh8Z8vOVX1nYZ9meawJoRrlASYA==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true '@playwright/test': optional: true + babel-plugin-react-compiler: + optional: true sass: optional: true - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - nlcst-to-string@3.1.1: - resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} - nlcst-to-string@4.0.0: resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} @@ -7107,9 +6877,8 @@ packages: node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -7131,15 +6900,18 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + node-mock-http@1.0.0: + resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} hasBin: true normalize-path@3.0.0: @@ -7154,18 +6926,10 @@ packages: resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} engines: {node: ^16.14.0 || >=18.0.0} - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -7184,6 +6948,9 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -7207,12 +6974,8 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - oniguruma-to-es@0.4.1: - resolution: {integrity: sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ==} + oniguruma-to-es@2.3.0: + resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} @@ -7226,18 +6989,10 @@ packages: resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} engines: {node: '>=6'} - ora@8.1.1: - resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} - engines: {node: '>=18'} - os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -7246,8 +7001,8 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@6.1.0: - resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} + p-limit@6.2.0: + resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} p-locate@3.0.0: @@ -7262,12 +7017,8 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-queue@8.0.1: - resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} + p-queue@8.1.0: + resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} engines: {node: '>=18'} p-timeout@6.1.3: @@ -7281,8 +7032,11 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pagefind@1.2.0: - resolution: {integrity: sha512-sFVv5/x73qCp9KlLHv8/uWDv7rG1tsWcG9MuXc5YTrXIrb8c1Gshm9oc5rMLXNZILXUWai8WczqaK4jjroEzng==} + package-manager-detector@1.0.0: + resolution: {integrity: sha512-7elnH+9zMsRo7aS72w6MeRugTpdRvInmEB4Kmm9BVvPw/SLG8gXUGQ+4wF0Mys0RSWPz0B9nuBbDe8vFeA2sfg==} + + pagefind@1.3.0: + resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==} hasBin: true parse-entities@4.0.1: @@ -7292,9 +7046,6 @@ packages: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} - parse-latin@5.0.1: - resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} - parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} @@ -7302,9 +7053,6 @@ packages: resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} engines: {node: '>=10'} - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - parse5@7.2.1: resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} @@ -7330,10 +7078,6 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -7345,9 +7089,11 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-to-regexp@6.1.0: + resolution: {integrity: sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -7380,10 +7126,6 @@ packages: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - plist@3.1.0: resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} @@ -7392,10 +7134,6 @@ packages: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - postcss-import@15.1.0: resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} @@ -7459,15 +7197,15 @@ packages: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + prebuild-install@7.1.2: resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} engines: {node: '>=10'} hasBin: true - preferred-pm@4.0.0: - resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} - engines: {node: '>=18.12'} - prettier@2.8.7: resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} engines: {node: '>=10.13.0'} @@ -7512,6 +7250,9 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + pump@3.0.2: resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} @@ -7536,6 +7277,9 @@ packages: queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -7544,13 +7288,13 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-devtools-core@5.3.2: - resolution: {integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==} + react-devtools-core@6.1.1: + resolution: {integrity: sha512-TFo1MEnkqE6hzAbaztnyR5uLTMoz6wnEWwWBsCUzNt+sVXJycuRJdDqvL078M4/h65BI/YO5XWTaxZDWVsW0fw==} - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: - react: ^18.3.1 + react: ^19.0.0 react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} @@ -7607,20 +7351,27 @@ packages: react: '*' react-native: '*' - react-native-safe-area-context@4.12.0: - resolution: {integrity: sha512-ukk5PxcF4p3yu6qMZcmeiZgowhb5AsKRnil54YFUUAXVIS7PJcMHGGC+q44fCiBg44/1AJk5njGMez1m9H0BVQ==} + react-native-reanimated@3.17.1: + resolution: {integrity: sha512-ECzLhLxMKLifv34a8799/MHqIazQZV9fLMNSMdixXQlzX71RyL3/ah3cz/h3ERoyhJAYRC2ySLLZho6pXSqMFQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + react: '*' + react-native: '*' + + react-native-safe-area-context@5.2.0: + resolution: {integrity: sha512-QpcGA6MRKe8Zbpf1hirCBudNQYGsMv0n/CTTROMOFcXbqRUoEXLCsYxUmYKi7JJb3ziL2DbyzWXyH2/gw4Tkfw==} peerDependencies: react: '*' react-native: '*' - react-native-screens@4.1.0: - resolution: {integrity: sha512-tCBwe7fRMpoi/nIgZxE86N8b2SH8d5PlfGaQO8lgqlXqIyvwqm3u1HJCaA0tsacPyzhW7vVtRfQyq9e1j0S2gA==} + react-native-screens@4.9.2: + resolution: {integrity: sha512-87gR7XRIirACYxtYltEl1BbUo5r0W4AFPckUDDzATAN6LIUZ2PC3bX6UAFeoEBEqBbfaemRZTWSYHl6MCZFSgw==} peerDependencies: react: '*' react-native: '*' - react-native-svg@15.8.0: - resolution: {integrity: sha512-KHJzKpgOjwj1qeZzsBjxNdoIgv2zNCO9fVcoq2TEhTRsVV5DGTZ9JzUZwybd7q4giT/H3RdtqC3u44dWdO0Ffw==} + react-native-svg@15.11.2: + resolution: {integrity: sha512-+YfF72IbWQUKzCIydlijV1fLuBsQNGMT6Da2kFlo1sh+LE3BIm/2Q7AR1zAAR6L0BFLi1WaQPLfFUC9bNZpOmw==} peerDependencies: react: '*' react-native: '*' @@ -7631,13 +7382,13 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 - react-native@0.76.3: - resolution: {integrity: sha512-0TUhgmlouRNf6yuDIIAdbQl0g1VsONgCMsLs7Et64hjj5VLMCA7np+4dMrZvGZ3wRNqzgeyT9oWJsUm49AcwSQ==} + react-native@0.78.0: + resolution: {integrity: sha512-3PO4tNvCN6BdAKcoY70v1sLfxYCmDR4KS1VTY+kIBKy5Qznp27QNxL7zBQjvS6Jp91gc8N82QbysQrfBlwg9gQ==} engines: {node: '>=18'} hasBin: true peerDependencies: - '@types/react': ^18.2.6 - react: ^18.2.0 + '@types/react': ^19.0.0 + react: ^19.0.0 peerDependenciesMeta: '@types/react': optional: true @@ -7706,8 +7457,8 @@ packages: '@types/react': optional: true - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -7731,8 +7482,8 @@ packages: readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} recma-build-jsx@1.0.0: @@ -7763,14 +7514,14 @@ packages: regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - regex-recursion@4.2.1: - resolution: {integrity: sha512-QHNZyZAeKdndD1G3bKAbBEKOSSK4KOHQrAJ01N1LJeb0SoH4DJIeFhp0uUpETgONifS4+P3sOgoA1dhzgrQvhA==} + regex-recursion@5.1.1: + resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@5.0.2: - resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==} + regex@5.1.1: + resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} regexpu-core@6.2.0: resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} @@ -7783,6 +7534,12 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true + rehype-expressive-code@0.40.2: + resolution: {integrity: sha512-+kn+AMGCrGzvtH8Q5lC6Y5lnmTV/r33fdmi5QU/IH1KPHKobKr5UnLwJuqHv5jBTSN/0v2wLDS7RTM73FVzqmQ==} + + rehype-format@5.0.1: + resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} + rehype-parse@9.0.1: resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} @@ -7801,11 +7558,8 @@ packages: remark-directive@3.0.0: resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} - remark-expressive-code@0.33.5: - resolution: {integrity: sha512-E4CZq3AuUXLu6or0AaDKkgsHYqmnm4ZL8/+1/8YgwtKcogHwTMRJfQtxkZpth90QQoNUpsapvm5x5n3Np2OC9w==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} remark-mdx@3.1.0: resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} @@ -7816,10 +7570,6 @@ packages: remark-rehype@11.1.1: resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} - remark-smartypants@2.1.0: - resolution: {integrity: sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - remark-smartypants@3.0.2: resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} engines: {node: '>=16.0.0'} @@ -7827,9 +7577,6 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - remove-trailing-slash@0.1.1: - resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} - repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} @@ -7863,8 +7610,8 @@ packages: resolve-workspace-root@2.0.0: resolution: {integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==} - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} resolve@1.22.8: @@ -7878,31 +7625,15 @@ packages: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - - retext-latin@3.1.0: - resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} - retext-latin@4.0.0: resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - retext-smartypants@5.2.0: - resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} - retext-smartypants@6.2.0: resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} - retext-stringify@3.1.0: - resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} - retext-stringify@4.0.0: resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} - retext@8.1.0: - resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} - retext@9.0.0: resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} @@ -7910,21 +7641,25 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + rollup@4.27.4: resolution: {integrity: sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.35.0: + resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -7937,20 +7672,13 @@ packages: sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} schema-utils@4.2.0: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} engines: {node: '>= 12.13.0'} - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - selfsigned@2.4.1: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} @@ -7968,6 +7696,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -7987,16 +7720,6 @@ packages: server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -8018,18 +7741,10 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -8037,8 +7752,8 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - shiki@1.23.1: - resolution: {integrity: sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig==} + shiki@1.29.2: + resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -8075,6 +7790,10 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} + smol-toml@1.3.1: + resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==} + engines: {node: '>= 18'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -8105,16 +7824,9 @@ packages: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} - split@1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - ssri@10.0.6: - resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -8134,10 +7846,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - stream-buffers@2.2.0: resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} engines: {node: '>= 0.10.0'} @@ -8145,9 +7853,6 @@ packages: stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} - stream-slice@0.1.2: - resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} - streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -8192,18 +7897,6 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -8221,13 +7914,13 @@ packages: style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' peerDependenciesMeta: '@babel/core': optional: true @@ -8246,10 +7939,6 @@ packages: resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - sudo-prompt@9.1.1: - resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -8270,8 +7959,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - tailwind-merge@2.5.4: - resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + tailwind-merge@3.0.2: + resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} @@ -8296,22 +7985,14 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - - tempy@0.7.1: - resolution: {integrity: sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==} - engines: {node: '>=10'} - terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} @@ -8341,20 +8022,31 @@ packages: through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} tinyexec@0.3.1: resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.10: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -8385,8 +8077,8 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsconfck@3.1.4: - resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} + tsconfck@3.1.5: + resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -8440,9 +8132,6 @@ packages: cpu: [arm64] os: [linux] - turbo-stream@2.4.0: - resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} - turbo-windows-64@2.3.1: resolution: {integrity: sha512-HDSneq0dNZYZch74c2eygq+OiJE/JYDs7OsGM0yRYVj336383xkUnxz6W2I7qiyMCQXzp4UVUDZXvZhUYcX3BA==} cpu: [x64] @@ -8461,10 +8150,6 @@ packages: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -8492,9 +8177,15 @@ packages: resolution: {integrity: sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==} hasBin: true + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ultrahtml@1.5.3: resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -8502,9 +8193,6 @@ packages: resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} engines: {node: '>=18.17'} - unherit@3.0.1: - resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} - unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -8521,20 +8209,9 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unique-filename@3.0.0: - resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - unique-slug@4.0.0: - resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -8542,76 +8219,105 @@ packages: unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - unist-util-modify-children@3.1.1: - resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} - unist-util-modify-children@4.0.0: resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} unist-util-remove-position@5.0.0: resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unist-util-visit-children@2.0.2: - resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} - unist-util-visit-children@3.0.0: resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} - unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@1.0.0: - resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} - engines: {node: '>= 10.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unstorage@1.15.0: + resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-callback-ref@1.3.2: resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} @@ -8665,9 +8371,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} @@ -8676,10 +8379,6 @@ packages: resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} hasBin: true - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - validate-npm-package-name@5.0.1: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -8688,40 +8387,36 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@5.4.11: - resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@6.2.2: + resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -8736,11 +8431,15 @@ packages: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true - vitefu@1.0.3: - resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} + vitefu@1.0.6: + resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 peerDependenciesMeta: vite: optional: true @@ -8863,9 +8562,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -8873,9 +8569,6 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - web-vitals@3.5.2: - resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} - webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -8903,26 +8596,11 @@ packages: resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} engines: {node: '>=4'} - which-pm@3.0.0: - resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} - engines: {node: '>=18.12'} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - widest-line@5.0.0: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} @@ -8952,6 +8630,10 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@6.2.3: resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: @@ -8999,10 +8681,6 @@ packages: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} - xmlbuilder@14.0.0: - resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} - engines: {node: '>=8.0'} - xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} @@ -9021,8 +8699,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} yaml-language-server@1.15.0: resolution: {integrity: sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==} @@ -9053,10 +8732,18 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} - zod-to-json-schema@3.23.5: - resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} + yocto-spinner@0.2.1: + resolution: {integrity: sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==} + engines: {node: '>=18.19'} + + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + + zod-to-json-schema@3.24.4: + resolution: {integrity: sha512-0uNlcvgabyrni9Ag8Vghj21drk7+7tp7VTwwR7KxxXXc/3pbXz2PHlDgj3cICahgF1kHm4dExBFj7BXrZJXzig==} peerDependencies: - zod: ^3.23.3 + zod: ^3.24.1 zod-to-ts@1.2.0: resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} @@ -9067,13 +8754,17 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zustand@4.5.5: - resolution: {integrity: sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==} - engines: {node: '>=12.7.0'} + zod@3.24.2: + resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + + zustand@5.0.3: + resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} + engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': '>=16.8' + '@types/react': '>=18.0.0' immer: '>=9.0.6' - react: '>=16.8' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' peerDependenciesMeta: '@types/react': optional: true @@ -9081,6 +8772,8 @@ packages: optional: true react: optional: true + use-sync-external-store: + optional: true zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -9096,11 +8789,10 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@astrojs/check@0.5.10(typescript@5.7.2)': + '@astrojs/check@0.9.4(typescript@5.7.2)': dependencies: '@astrojs/language-server': 2.15.4(typescript@5.7.2) - chokidar: 3.6.0 - fast-glob: 3.3.2 + chokidar: 4.0.1 kleur: 4.1.5 typescript: 5.7.2 yargs: 17.7.2 @@ -9110,7 +8802,9 @@ snapshots: '@astrojs/compiler@2.10.3': {} - '@astrojs/internal-helpers@0.4.1': {} + '@astrojs/compiler@2.11.0': {} + + '@astrojs/internal-helpers@0.6.1': {} '@astrojs/language-server@2.15.4(typescript@5.7.2)': dependencies: @@ -9135,44 +8829,24 @@ snapshots: transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@5.1.0': - dependencies: - '@astrojs/prism': 3.1.0 - github-slugger: 2.0.0 - hast-util-from-html: 2.0.3 - hast-util-to-text: 4.0.2 - import-meta-resolve: 4.1.0 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.1 - remark-gfm: 4.0.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.1 - remark-smartypants: 2.1.0 - shiki: 1.23.1 - unified: 11.0.5 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@astrojs/markdown-remark@5.3.0': + '@astrojs/markdown-remark@6.3.0': dependencies: - '@astrojs/prism': 3.1.0 + '@astrojs/internal-helpers': 0.6.1 + '@astrojs/prism': 3.2.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 import-meta-resolve: 4.1.0 + js-yaml: 4.1.0 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 rehype-stringify: 10.0.1 - remark-gfm: 4.0.0 + remark-gfm: 4.0.1 remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.23.1 + shiki: 1.29.2 + smol-toml: 1.3.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -9181,42 +8855,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@2.3.1(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))': + '@astrojs/mdx@4.2.0(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))': dependencies: - '@astrojs/markdown-remark': 5.1.0 - '@mdx-js/mdx': 3.1.0(acorn@8.14.0) - acorn: 8.14.0 - astro: 4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2) - es-module-lexer: 1.5.4 + '@astrojs/markdown-remark': 6.3.0 + '@mdx-js/mdx': 3.1.0(acorn@8.14.1) + acorn: 8.14.1 + astro: 5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1) + es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.5 kleur: 4.1.5 rehype-raw: 7.0.0 - remark-gfm: 4.0.0 - remark-smartypants: 2.1.0 + remark-gfm: 4.0.1 + remark-smartypants: 3.0.2 source-map: 0.7.4 unist-util-visit: 5.0.0 vfile: 6.0.3 transitivePeerDependencies: - supports-color - '@astrojs/prism@3.1.0': + '@astrojs/prism@3.2.0': dependencies: prismjs: 1.29.0 - '@astrojs/react@3.6.3(@types/node@20.17.7)(@types/react-dom@18.3.1)(@types/react@18.3.12)(lightningcss@1.28.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(terser@5.36.0)': + '@astrojs/react@4.2.1(@types/node@20.17.7)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.6)(lightningcss@1.28.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.36.0)(yaml@2.6.1)': dependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 - '@vitejs/plugin-react': 4.3.3(vite@5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@vitejs/plugin-react': 4.3.4(vite@6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1)) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) ultrahtml: 1.5.3 - vite: 5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0) + vite: 6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -9225,6 +8898,8 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml '@astrojs/sitemap@3.2.1': dependencies: @@ -9232,30 +8907,36 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight-tailwind@2.0.3(@astrojs/starlight@0.21.5(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2)))(@astrojs/tailwind@5.1.2(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))(tailwindcss@3.4.15))(tailwindcss@3.4.15)': + '@astrojs/starlight-tailwind@3.0.0(@astrojs/starlight@0.32.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1)))(@astrojs/tailwind@6.0.0(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.15))(tailwindcss@3.4.15)': dependencies: - '@astrojs/starlight': 0.21.5(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2)) - '@astrojs/tailwind': 5.1.2(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))(tailwindcss@3.4.15) + '@astrojs/starlight': 0.32.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1)) + '@astrojs/tailwind': 6.0.0(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.15) tailwindcss: 3.4.15 - '@astrojs/starlight@0.21.5(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))': + '@astrojs/starlight@0.32.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))': dependencies: - '@astrojs/mdx': 2.3.1(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2)) + '@astrojs/mdx': 4.2.0(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1)) '@astrojs/sitemap': 3.2.1 - '@pagefind/default-ui': 1.2.0 + '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 + '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2) - astro-expressive-code: 0.33.5(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2)) + astro: 5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1) + astro-expressive-code: 0.40.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 hast-util-to-string: 3.0.1 - hastscript: 8.0.0 + hastscript: 9.0.0 + i18next: 23.16.8 + js-yaml: 4.1.0 + klona: 2.0.6 mdast-util-directive: 3.0.0 mdast-util-to-markdown: 2.1.2 - pagefind: 1.2.0 + mdast-util-to-string: 4.0.0 + pagefind: 1.3.0 rehype: 13.0.2 + rehype-format: 5.0.1 remark-directive: 3.0.0 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -9263,20 +8944,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/tailwind@5.1.2(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))(tailwindcss@3.4.15)': + '@astrojs/tailwind@6.0.0(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))(tailwindcss@3.4.15)': dependencies: - astro: 4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2) - autoprefixer: 10.4.20(postcss@8.4.49) - postcss: 8.4.49 - postcss-load-config: 4.0.2(postcss@8.4.49) + astro: 5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1) + autoprefixer: 10.4.21(postcss@8.5.3) + postcss: 8.5.3 + postcss-load-config: 4.0.2(postcss@8.5.3) tailwindcss: 3.4.15 transitivePeerDependencies: - ts-node - '@astrojs/telemetry@3.1.0': + '@astrojs/telemetry@3.2.0': dependencies: - ci-info: 4.1.0 - debug: 4.3.7 + ci-info: 4.2.0 + debug: 4.4.0 dlv: 1.1.3 dset: 3.1.4 is-docker: 3.0.0 @@ -9285,22 +8966,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vercel@7.8.2(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2))(next@14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@astrojs/vercel@8.1.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1))(next@15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.35.0)': dependencies: - '@astrojs/internal-helpers': 0.4.1 - '@vercel/analytics': 1.4.1(next@14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@vercel/edge': 1.1.2 - '@vercel/nft': 0.27.6 - astro: 4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2) - esbuild: 0.21.5 - fast-glob: 3.3.2 - web-vitals: 3.5.2 + '@astrojs/internal-helpers': 0.6.1 + '@vercel/analytics': 1.5.0(next@15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + '@vercel/edge': 1.2.1 + '@vercel/nft': 0.29.2(rollup@4.35.0) + '@vercel/routing-utils': 5.0.4 + astro: 5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1) + esbuild: 0.25.1 + tinyglobby: 0.2.12 transitivePeerDependencies: - '@remix-run/react' - '@sveltejs/kit' - encoding - next - react + - rollup - supports-color - svelte - vue @@ -9526,14 +9208,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9548,21 +9222,6 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -10222,7 +9881,7 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@ctrl/tinycolor@3.6.1': {} + '@ctrl/tinycolor@4.1.0': {} '@emmetio/abbreviation@2.3.3': dependencies: @@ -10252,196 +9911,191 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.21.5': - optional: true - '@esbuild/aix-ppc64@0.24.0': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/aix-ppc64@0.25.1': optional: true '@esbuild/android-arm64@0.24.0': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/android-arm64@0.25.1': optional: true '@esbuild/android-arm@0.24.0': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/android-arm@0.25.1': optional: true '@esbuild/android-x64@0.24.0': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/android-x64@0.25.1': optional: true '@esbuild/darwin-arm64@0.24.0': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/darwin-arm64@0.25.1': optional: true '@esbuild/darwin-x64@0.24.0': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/darwin-x64@0.25.1': optional: true '@esbuild/freebsd-arm64@0.24.0': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/freebsd-arm64@0.25.1': optional: true '@esbuild/freebsd-x64@0.24.0': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/freebsd-x64@0.25.1': optional: true '@esbuild/linux-arm64@0.24.0': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-arm64@0.25.1': optional: true '@esbuild/linux-arm@0.24.0': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-arm@0.25.1': optional: true '@esbuild/linux-ia32@0.24.0': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-ia32@0.25.1': optional: true '@esbuild/linux-loong64@0.24.0': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-loong64@0.25.1': optional: true '@esbuild/linux-mips64el@0.24.0': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-mips64el@0.25.1': optional: true '@esbuild/linux-ppc64@0.24.0': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-ppc64@0.25.1': optional: true '@esbuild/linux-riscv64@0.24.0': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-riscv64@0.25.1': optional: true '@esbuild/linux-s390x@0.24.0': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-s390x@0.25.1': optional: true '@esbuild/linux-x64@0.24.0': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/linux-x64@0.25.1': + optional: true + + '@esbuild/netbsd-arm64@0.25.1': optional: true '@esbuild/netbsd-x64@0.24.0': optional: true + '@esbuild/netbsd-x64@0.25.1': + optional: true + '@esbuild/openbsd-arm64@0.24.0': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-arm64@0.25.1': optional: true '@esbuild/openbsd-x64@0.24.0': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/openbsd-x64@0.25.1': optional: true '@esbuild/sunos-x64@0.24.0': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/sunos-x64@0.25.1': optional: true '@esbuild/win32-arm64@0.24.0': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-arm64@0.25.1': optional: true '@esbuild/win32-ia32@0.24.0': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-ia32@0.25.1': optional: true '@esbuild/win32-x64@0.24.0': optional: true - '@expo/bunyan@4.0.1': - dependencies: - uuid: 8.3.2 + '@esbuild/win32-x64@0.25.1': + optional: true - '@expo/cli@0.21.8': + '@expo/cli@1.0.0-canary-20250306-d9d3e02': dependencies: '@0no-co/graphql.web': 1.0.11 '@babel/runtime': 7.26.0 '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 10.0.5 - '@expo/config-plugins': 9.0.10 + '@expo/config': 11.0.0-canary-20250306-d9d3e02 + '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 '@expo/devcert': 1.1.4 - '@expo/env': 0.4.0 - '@expo/image-utils': 0.6.3 - '@expo/json-file': 9.0.0 - '@expo/metro-config': 0.19.4 - '@expo/osascript': 2.1.4 - '@expo/package-manager': 1.6.1 - '@expo/plist': 0.2.0 - '@expo/prebuild-config': 8.0.20 - '@expo/rudder-sdk-node': 1.1.1 + '@expo/env': 1.0.1-canary-20250306-d9d3e02 + '@expo/image-utils': 0.6.6-canary-20250306-d9d3e02 + '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 + '@expo/metro-config': 0.20.0-canary-20250306-d9d3e02 + '@expo/osascript': 2.1.7-canary-20250306-d9d3e02 + '@expo/package-manager': 1.6.2-canary-20250306-d9d3e02 + '@expo/plist': 0.2.3-canary-20250306-d9d3e02 + '@expo/prebuild-config': 9.0.0-canary-20250306-d9d3e02 '@expo/spawn-async': 1.7.2 + '@expo/ws-tunnel': 1.0.6 '@expo/xcpretty': 4.3.1 - '@react-native/dev-middleware': 0.76.3 + '@react-native/dev-middleware': 0.78.0 '@urql/core': 5.0.8 '@urql/exchange-retry': 1.3.0(@urql/core@5.0.8) accepts: 1.3.8 arg: 5.0.2 better-opn: 3.0.2 - bplist-creator: 0.0.7 + bplist-creator: 0.1.0 bplist-parser: 0.3.2 - cacache: 18.0.4 chalk: 4.1.2 ci-info: 3.9.0 compression: 1.7.5 connect: 3.7.0 debug: 4.3.7 env-editor: 0.4.2 - fast-glob: 3.3.2 - form-data: 3.0.2 freeport-async: 2.0.0 - fs-extra: 8.1.0 getenv: 1.0.0 glob: 10.4.5 - internal-ip: 4.3.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - lodash.debounce: 4.0.8 - minimatch: 3.1.2 + internal-ip: 6.1.0 + minimatch: 9.0.5 node-forge: 1.3.1 npm-package-arg: 11.0.3 ora: 3.4.0 @@ -10455,24 +10109,20 @@ snapshots: requireg: 0.2.2 resolve: 1.22.8 resolve-from: 5.0.0 - resolve.exports: 2.0.2 + resolve.exports: 2.0.3 semver: 7.6.3 send: 0.19.1 slugify: 1.6.6 source-map-support: 0.5.21 stacktrace-parser: 0.1.10 structured-headers: 0.4.1 - tar: 6.2.1 - temp-dir: 2.0.0 - tempy: 0.7.1 + tar: 7.4.3 terminal-link: 2.1.1 undici: 6.21.0 - unique-string: 2.0.0 wrap-ansi: 7.0.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil - - encoding - graphql - supports-color - utf-8-validate @@ -10482,11 +10132,11 @@ snapshots: node-forge: 1.3.1 nullthrows: 1.1.1 - '@expo/config-plugins@9.0.10': + '@expo/config-plugins@9.1.0-canary-20250306-d9d3e02': dependencies: - '@expo/config-types': 52.0.1 - '@expo/json-file': 9.0.0 - '@expo/plist': 0.2.0 + '@expo/config-types': 53.0.0-canary-20250306-d9d3e02 + '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 + '@expo/plist': 0.2.3-canary-20250306-d9d3e02 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.3.7 @@ -10501,14 +10151,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/config-types@52.0.1': {} + '@expo/config-types@53.0.0-canary-20250306-d9d3e02': {} - '@expo/config@10.0.5': + '@expo/config@11.0.0-canary-20250306-d9d3e02': dependencies: '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 9.0.10 - '@expo/config-types': 52.0.1 - '@expo/json-file': 9.0.0 + '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 + '@expo/config-types': 53.0.0-canary-20250306-d9d3e02 + '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 deepmerge: 4.3.1 getenv: 1.0.0 glob: 10.4.5 @@ -10538,7 +10188,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/env@0.4.0': + '@expo/env@1.0.1-canary-20250306-d9d3e02': dependencies: chalk: 4.1.2 debug: 4.3.7 @@ -10548,7 +10198,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/fingerprint@0.11.2': + '@expo/fingerprint@0.11.12-canary-20250306-d9d3e02': dependencies: '@expo/spawn-async': 1.7.2 arg: 5.0.2 @@ -10556,18 +10206,17 @@ snapshots: debug: 4.3.7 find-up: 5.0.0 getenv: 1.0.0 - minimatch: 3.1.2 + minimatch: 9.0.5 p-limit: 3.1.0 resolve-from: 5.0.0 semver: 7.6.3 transitivePeerDependencies: - supports-color - '@expo/image-utils@0.6.3': + '@expo/image-utils@0.6.6-canary-20250306-d9d3e02': dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 - fs-extra: 9.0.0 getenv: 1.0.0 jimp-compact: 0.16.1 parse-png: 2.1.0 @@ -10576,104 +10225,83 @@ snapshots: temp-dir: 2.0.0 unique-string: 2.0.0 - '@expo/json-file@9.0.0': + '@expo/json-file@9.0.3-canary-20250306-d9d3e02': dependencies: '@babel/code-frame': 7.10.4 json5: 2.2.3 write-file-atomic: 2.4.3 - '@expo/metro-config@0.19.4': + '@expo/metro-config@0.20.0-canary-20250306-d9d3e02': dependencies: '@babel/core': 7.26.0 '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 '@babel/types': 7.26.0 - '@expo/config': 10.0.5 - '@expo/env': 0.4.0 - '@expo/json-file': 9.0.0 + '@expo/config': 11.0.0-canary-20250306-d9d3e02 + '@expo/env': 1.0.1-canary-20250306-d9d3e02 + '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 debug: 4.3.7 - fs-extra: 9.1.0 getenv: 1.0.0 glob: 10.4.5 jsc-safe-url: 0.2.4 lightningcss: 1.27.0 - minimatch: 3.1.2 + minimatch: 9.0.5 postcss: 8.4.49 resolve-from: 5.0.0 transitivePeerDependencies: - supports-color - '@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))': + '@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))': dependencies: - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) - '@expo/osascript@2.1.4': + '@expo/osascript@2.1.7-canary-20250306-d9d3e02': dependencies: '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 - '@expo/package-manager@1.6.1': + '@expo/package-manager@1.6.2-canary-20250306-d9d3e02': dependencies: - '@expo/json-file': 9.0.0 + '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 '@expo/spawn-async': 1.7.2 - ansi-regex: 5.0.1 chalk: 4.1.2 - find-up: 5.0.0 - js-yaml: 3.14.1 - micromatch: 4.0.8 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.0 - split: 1.0.1 - sudo-prompt: 9.1.1 - '@expo/plist@0.2.0': + '@expo/plist@0.2.3-canary-20250306-d9d3e02': dependencies: - '@xmldom/xmldom': 0.7.13 + '@xmldom/xmldom': 0.8.10 base64-js: 1.5.1 - xmlbuilder: 14.0.0 + xmlbuilder: 15.1.1 - '@expo/prebuild-config@8.0.20': + '@expo/prebuild-config@9.0.0-canary-20250306-d9d3e02': dependencies: - '@expo/config': 10.0.5 - '@expo/config-plugins': 9.0.10 - '@expo/config-types': 52.0.1 - '@expo/image-utils': 0.6.3 - '@expo/json-file': 9.0.0 - '@react-native/normalize-colors': 0.76.3 + '@expo/config': 11.0.0-canary-20250306-d9d3e02 + '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 + '@expo/config-types': 53.0.0-canary-20250306-d9d3e02 + '@expo/image-utils': 0.6.6-canary-20250306-d9d3e02 + '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 + '@react-native/normalize-colors': 0.78.0 debug: 4.3.7 - fs-extra: 9.1.0 resolve-from: 5.0.0 semver: 7.6.3 xml2js: 0.6.0 transitivePeerDependencies: - supports-color - '@expo/rudder-sdk-node@1.1.1': - dependencies: - '@expo/bunyan': 4.0.1 - '@segment/loosely-validate-event': 2.0.0 - fetch-retry: 4.1.1 - md5: 2.3.0 - node-fetch: 2.7.0 - remove-trailing-slash: 0.1.1 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - '@expo/sdk-runtime-versions@1.0.0': {} - '@expo/server@0.5.0(typescript@5.7.2)': + '@expo/server@0.5.2-canary-20250306-d9d3e02': dependencies: - '@remix-run/node': 2.15.0(typescript@5.7.2) abort-controller: 3.0.0 debug: 4.3.7 source-map-support: 0.5.21 + undici: 6.21.0 transitivePeerDependencies: - supports-color - - typescript '@expo/spawn-async@1.7.2': dependencies: @@ -10683,6 +10311,8 @@ snapshots: dependencies: prop-types: 15.8.1 + '@expo/ws-tunnel@1.0.6': {} + '@expo/xcpretty@4.3.1': dependencies: '@babel/code-frame': 7.10.4 @@ -10690,29 +10320,30 @@ snapshots: find-up: 5.0.0 js-yaml: 4.1.0 - '@expressive-code/core@0.33.5': + '@expressive-code/core@0.40.2': dependencies: - '@ctrl/tinycolor': 3.6.1 - hast-util-to-html: 8.0.4 - hastscript: 7.2.0 + '@ctrl/tinycolor': 4.1.0 + hast-util-select: 6.0.3 + hast-util-to-html: 9.0.3 + hast-util-to-text: 4.0.2 + hastscript: 9.0.0 postcss: 8.4.49 postcss-nested: 6.2.0(postcss@8.4.49) + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 - '@expressive-code/plugin-frames@0.33.5': + '@expressive-code/plugin-frames@0.40.2': dependencies: - '@expressive-code/core': 0.33.5 - hastscript: 7.2.0 + '@expressive-code/core': 0.40.2 - '@expressive-code/plugin-shiki@0.33.5': + '@expressive-code/plugin-shiki@0.40.2': dependencies: - '@expressive-code/core': 0.33.5 - shiki: 1.23.1 + '@expressive-code/core': 0.40.2 + shiki: 1.29.2 - '@expressive-code/plugin-text-markers@0.33.5': + '@expressive-code/plugin-text-markers@0.40.2': dependencies: - '@expressive-code/core': 0.33.5 - hastscript: 7.2.0 - unist-util-visit-parents: 5.1.3 + '@expressive-code/core': 0.40.2 '@floating-ui/core@1.6.8': dependencies: @@ -10723,11 +10354,11 @@ snapshots: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 - '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/dom': 1.6.12 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@floating-ui/utils@0.2.8': {} @@ -10815,6 +10446,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@isaacs/ttlcache@1.4.1': {} '@istanbuljs/load-nyc-config@1.1.0': @@ -10902,22 +10537,20 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@mapbox/node-pre-gyp@1.0.11': + '@mapbox/node-pre-gyp@2.0.0': dependencies: + consola: 3.2.3 detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 + https-proxy-agent: 7.0.6 node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 + nopt: 8.1.0 semver: 7.6.3 - tar: 6.2.1 + tar: 7.4.3 transitivePeerDependencies: - encoding - supports-color - '@mdx-js/mdx@3.1.0(acorn@8.14.0)': + '@mdx-js/mdx@3.1.0(acorn@8.14.1)': dependencies: '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.5 @@ -10931,7 +10564,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.2 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.0) + recma-jsx: 1.0.0(acorn@8.14.1) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.0 @@ -10947,33 +10580,30 @@ snapshots: - acorn - supports-color - '@next/env@14.2.14': {} + '@next/env@15.2.2': {} - '@next/swc-darwin-arm64@14.2.14': + '@next/swc-darwin-arm64@15.2.2': optional: true - '@next/swc-darwin-x64@14.2.14': + '@next/swc-darwin-x64@15.2.2': optional: true - '@next/swc-linux-arm64-gnu@14.2.14': + '@next/swc-linux-arm64-gnu@15.2.2': optional: true - '@next/swc-linux-arm64-musl@14.2.14': + '@next/swc-linux-arm64-musl@15.2.2': optional: true - '@next/swc-linux-x64-gnu@14.2.14': + '@next/swc-linux-x64-gnu@15.2.2': optional: true - '@next/swc-linux-x64-musl@14.2.14': + '@next/swc-linux-x64-musl@15.2.2': optional: true - '@next/swc-win32-arm64-msvc@14.2.14': + '@next/swc-win32-arm64-msvc@15.2.2': optional: true - '@next/swc-win32-ia32-msvc@14.2.14': - optional: true - - '@next/swc-win32-x64-msvc@14.2.14': + '@next/swc-win32-x64-msvc@15.2.2': optional: true '@nodelib/fs.scandir@2.1.5': @@ -10988,27 +10618,23 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@npmcli/fs@3.1.1': - dependencies: - semver: 7.6.3 - '@oslojs/encoding@1.1.0': {} - '@pagefind/darwin-arm64@1.2.0': + '@pagefind/darwin-arm64@1.3.0': optional: true - '@pagefind/darwin-x64@1.2.0': + '@pagefind/darwin-x64@1.3.0': optional: true - '@pagefind/default-ui@1.2.0': {} + '@pagefind/default-ui@1.3.0': {} - '@pagefind/linux-arm64@1.2.0': + '@pagefind/linux-arm64@1.3.0': optional: true - '@pagefind/linux-x64@1.2.0': + '@pagefind/linux-x64@1.3.0': optional: true - '@pagefind/windows-x64@1.2.0': + '@pagefind/windows-x64@1.3.0': optional: true '@pkgjs/parseargs@0.11.0': @@ -11020,764 +10646,765 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-accordion@1.2.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-accordion@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collapsible': 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collapsible': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-alert-dialog@1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-alert-dialog@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dialog': 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dialog': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-checkbox@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-checkbox@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-collapsible@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-collapsible@1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-collection@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-compose-refs@1.0.0(react@18.3.1)': + '@radix-ui/react-compose-refs@1.0.0(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 + react: 19.0.0 - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-context-menu@2.2.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-context-menu@2.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-context@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-context@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-context@1.1.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-context@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-dialog@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.0(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-dialog@1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.6.3(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.3(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-direction@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-direction@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dropdown-menu@2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-hover-card@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-hover-card@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-id@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-id@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-label@2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-label@2.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-menu@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-menu@2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.0(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-menubar@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-menubar@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-menu': 2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menu': 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-navigation-menu@1.2.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-popover@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popover@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.0(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 - - '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + + '@radix-ui/react-popper@1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) '@radix-ui/rect': 1.1.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-portal@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-portal@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-presence@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-slot': 1.1.2(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-progress@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-radio-group@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-radio-group@1.2.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-select@2.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-select@2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.0(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-separator@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-separator@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-slider@1.2.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-slider@1.2.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-collection': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-slot@1.0.1(react@18.3.1)': + '@radix-ui/react-slot@1.0.1(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-compose-refs': 1.0.0(react@19.0.0) + react: 19.0.0 - '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-slot@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-slot@1.1.2(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-slot@1.1.2(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-switch@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-switch@1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-tabs@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tabs@1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-toggle': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toggle@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-toolbar@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toolbar@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-separator': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-tooltip@1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tooltip@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-context': 1.1.1(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.12)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-use-previous@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-previous@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: '@radix-ui/rect': 1.1.0 - react: 18.3.1 + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-use-size@1.1.0(@types/react@18.3.12)(react@18.3.1)': + '@radix-ui/react-use-size@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.12)(react@18.3.1) - react: 18.3.1 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 - '@types/react-dom': 18.3.1 + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) '@radix-ui/rect@1.1.0': {} - '@react-native-async-storage/async-storage@1.23.1(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))': + '@react-native-async-storage/async-storage@1.23.1(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))': dependencies: merge-options: 3.0.4 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) - '@react-native/assets-registry@0.76.3(patch_hash=6fst5vxplq4cjuecsevwdyugdm)': {} + '@react-native/assets-registry@0.78.0': {} - '@react-native/babel-plugin-codegen@0.76.3(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/babel-plugin-codegen@0.78.0(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@react-native/codegen': 0.76.3(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@babel/traverse': 7.25.9 + '@react-native/codegen': 0.78.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/babel-preset@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0) @@ -11820,7 +11447,7 @@ snapshots: '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) '@babel/template': 7.25.9 - '@react-native/babel-plugin-codegen': 0.76.3(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/babel-plugin-codegen': 0.78.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 @@ -11828,51 +11455,49 @@ snapshots: - '@babel/preset-env' - supports-color - '@react-native/codegen@0.76.3(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/codegen@0.78.0(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: '@babel/parser': 7.26.2 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 - hermes-parser: 0.23.1 + hermes-parser: 0.25.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - mkdirp: 0.5.6 + jscodeshift: 17.1.2(@babel/preset-env@7.26.0(@babel/core@7.26.0)) nullthrows: 1.1.1 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/community-cli-plugin@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@react-native/dev-middleware': 0.76.3 - '@react-native/metro-babel-transformer': 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/dev-middleware': 0.78.0 + '@react-native/metro-babel-transformer': 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) chalk: 4.1.2 - execa: 5.1.1 + debug: 2.6.9 invariant: 2.2.4 metro: 0.81.0 metro-config: 0.81.0 metro-core: 0.81.0 - node-fetch: 2.7.0 readline: 1.3.0 semver: 7.6.3 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' - bufferutil - - encoding - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.76.3': {} + '@react-native/debugger-frontend@0.78.0': {} - '@react-native/dev-middleware@0.76.3': + '@react-native/dev-middleware@0.78.0': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.76.3 + '@react-native/debugger-frontend': 0.78.0 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 debug: 2.6.9 + invariant: 2.2.4 nullthrows: 1.1.1 open: 7.4.2 selfsigned: 2.4.1 @@ -11883,15 +11508,15 @@ snapshots: - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.76.3': {} + '@react-native/gradle-plugin@0.78.0': {} - '@react-native/js-polyfills@0.76.3': {} + '@react-native/js-polyfills@0.78.0': {} - '@react-native/metro-babel-transformer@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + '@react-native/metro-babel-transformer@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: '@babel/core': 7.26.0 - '@react-native/babel-preset': 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - hermes-parser: 0.23.1 + '@react-native/babel-preset': 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + hermes-parser: 0.25.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' @@ -11899,228 +11524,262 @@ snapshots: '@react-native/normalize-colors@0.74.88': {} - '@react-native/normalize-colors@0.76.3': {} - '@react-native/normalize-colors@0.77.1': {} - '@react-native/virtualized-lists@0.76.3(@types/react@18.3.12)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + '@react-native/normalize-colors@0.78.0': {} + + '@react-native/virtualized-lists@0.78.0(@types/react@19.0.10)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@react-navigation/bottom-tabs@7.0.7(@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + '@react-navigation/bottom-tabs@7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/elements': 2.1.1(@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-navigation/elements': 2.2.6(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - react-native-safe-area-context: 4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/core@7.0.4(react@18.3.1)': + '@react-navigation/core@7.0.4(react@19.0.0)': dependencies: '@react-navigation/routers': 7.0.0 escape-string-regexp: 4.0.0 nanoid: 3.3.7 query-string: 7.1.3 - react: 18.3.1 + react: 19.0.0 + react-is: 18.3.1 + use-latest-callback: 0.2.3(react@19.0.0) + use-sync-external-store: 1.2.2(react@19.0.0) + + '@react-navigation/core@7.4.0(react@19.0.0)': + dependencies: + '@react-navigation/routers': 7.2.0 + escape-string-regexp: 4.0.0 + nanoid: 3.3.8 + query-string: 7.1.3 + react: 19.0.0 react-is: 18.3.1 - use-latest-callback: 0.2.3(react@18.3.1) - use-sync-external-store: 1.2.2(react@18.3.1) + use-latest-callback: 0.2.3(react@19.0.0) + use-sync-external-store: 1.2.2(react@19.0.0) - '@react-navigation/elements@2.1.1(@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + '@react-navigation/elements@2.2.6(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/native': 7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - react-native-safe-area-context: 4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - - '@react-navigation/native-stack@7.1.1(@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': - dependencies: - '@react-navigation/elements': 2.1.1(@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - react-native-safe-area-context: 4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + + '@react-navigation/native-stack@7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/elements': 2.2.6(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + '@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/core': 7.0.4(react@18.3.1) + '@react-navigation/core': 7.4.0(react@19.0.0) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 - nanoid: 3.3.7 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - use-latest-callback: 0.2.3(react@18.3.1) + nanoid: 3.3.8 + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + use-latest-callback: 0.2.3(react@19.0.0) - '@react-navigation/routers@7.0.0': + '@react-navigation/native@7.0.4(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: + '@react-navigation/core': 7.0.4(react@19.0.0) + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 nanoid: 3.3.7 + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + use-latest-callback: 0.2.3(react@19.0.0) - '@remix-run/node@2.15.0(typescript@5.7.2)': - dependencies: - '@remix-run/server-runtime': 2.15.0(typescript@5.7.2) - '@remix-run/web-fetch': 4.4.2 - '@web3-storage/multipart-parser': 1.0.0 - cookie-signature: 1.2.2 - source-map-support: 0.5.21 - stream-slice: 0.1.2 - undici: 6.21.0 - optionalDependencies: - typescript: 5.7.2 - - '@remix-run/router@1.21.0': {} - - '@remix-run/server-runtime@2.15.0(typescript@5.7.2)': - dependencies: - '@remix-run/router': 1.21.0 - '@types/cookie': 0.6.0 - '@web3-storage/multipart-parser': 1.0.0 - cookie: 0.6.0 - set-cookie-parser: 2.7.1 - source-map: 0.7.4 - turbo-stream: 2.4.0 - optionalDependencies: - typescript: 5.7.2 - - '@remix-run/web-blob@3.1.0': - dependencies: - '@remix-run/web-stream': 1.1.0 - web-encoding: 1.1.5 - - '@remix-run/web-fetch@4.4.2': - dependencies: - '@remix-run/web-blob': 3.1.0 - '@remix-run/web-file': 3.1.0 - '@remix-run/web-form-data': 3.1.0 - '@remix-run/web-stream': 1.1.0 - '@web3-storage/multipart-parser': 1.0.0 - abort-controller: 3.0.0 - data-uri-to-buffer: 3.0.1 - mrmime: 1.0.1 - - '@remix-run/web-file@3.1.0': - dependencies: - '@remix-run/web-blob': 3.1.0 - - '@remix-run/web-form-data@3.1.0': + '@react-navigation/routers@7.0.0': dependencies: - web-encoding: 1.1.5 + nanoid: 3.3.7 - '@remix-run/web-stream@1.1.0': + '@react-navigation/routers@7.2.0': dependencies: - web-streams-polyfill: 3.3.3 + nanoid: 3.3.8 - '@rollup/pluginutils@4.2.1': + '@rollup/pluginutils@5.1.3(rollup@4.35.0)': dependencies: + '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.35.0 - '@rollup/pluginutils@5.1.3(rollup@4.27.4)': + '@rollup/pluginutils@5.1.4(rollup@4.35.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.27.4 + rollup: 4.35.0 '@rollup/rollup-android-arm-eabi@4.27.4': optional: true + '@rollup/rollup-android-arm-eabi@4.35.0': + optional: true + '@rollup/rollup-android-arm64@4.27.4': optional: true + '@rollup/rollup-android-arm64@4.35.0': + optional: true + '@rollup/rollup-darwin-arm64@4.27.4': optional: true + '@rollup/rollup-darwin-arm64@4.35.0': + optional: true + '@rollup/rollup-darwin-x64@4.27.4': optional: true + '@rollup/rollup-darwin-x64@4.35.0': + optional: true + '@rollup/rollup-freebsd-arm64@4.27.4': optional: true + '@rollup/rollup-freebsd-arm64@4.35.0': + optional: true + '@rollup/rollup-freebsd-x64@4.27.4': optional: true + '@rollup/rollup-freebsd-x64@4.35.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.27.4': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.27.4': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.35.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.27.4': optional: true + '@rollup/rollup-linux-arm64-gnu@4.35.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.27.4': optional: true + '@rollup/rollup-linux-arm64-musl@4.35.0': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.27.4': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.27.4': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.35.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.27.4': optional: true + '@rollup/rollup-linux-s390x-gnu@4.35.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.27.4': optional: true + '@rollup/rollup-linux-x64-gnu@4.35.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.27.4': optional: true + '@rollup/rollup-linux-x64-musl@4.35.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.27.4': optional: true + '@rollup/rollup-win32-arm64-msvc@4.35.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.27.4': optional: true + '@rollup/rollup-win32-ia32-msvc@4.35.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.27.4': optional: true - '@segment/loosely-validate-event@2.0.0': - dependencies: - component-type: 1.2.2 - join-component: 1.1.0 + '@rollup/rollup-win32-x64-msvc@4.35.0': + optional: true - '@shikijs/core@1.23.1': + '@shikijs/core@1.29.2': dependencies: - '@shikijs/engine-javascript': 1.23.1 - '@shikijs/engine-oniguruma': 1.23.1 - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 + hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@1.23.1': + '@shikijs/engine-javascript@1.29.2': dependencies: - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-es: 0.4.1 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 2.3.0 - '@shikijs/engine-oniguruma@1.23.1': + '@shikijs/engine-oniguruma@1.29.2': dependencies: - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/types@1.23.1': + '@shikijs/langs@1.29.2': dependencies: - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/types': 1.29.2 + + '@shikijs/themes@1.29.2': + dependencies: + '@shikijs/types': 1.29.2 + + '@shikijs/types@1.29.2': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/vscode-textmate@9.3.0': {} + '@shikijs/vscode-textmate@10.0.2': {} '@sinclair/typebox@0.27.8': {} @@ -12134,9 +11793,8 @@ snapshots: '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.5': + '@swc/helpers@0.5.15': dependencies: - '@swc/counter': 0.1.3 tslib: 2.8.1 '@tsconfig/react-native@1.0.5': {} @@ -12182,10 +11840,6 @@ snapshots: dependencies: '@types/node': 20.17.7 - '@types/hast@2.3.10': - dependencies: - '@types/unist': 2.0.11 - '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -12200,6 +11854,8 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/js-yaml@4.0.9': {} + '@types/json-schema@7.0.15': {} '@types/mdast@4.0.4': @@ -12210,10 +11866,6 @@ snapshots: '@types/ms@0.7.34': {} - '@types/nlcst@1.0.4': - dependencies: - '@types/unist': 2.0.11 - '@types/nlcst@2.0.3': dependencies: '@types/unist': 3.0.3 @@ -12228,17 +11880,12 @@ snapshots: dependencies: undici-types: 6.19.8 - '@types/parse5@6.0.3': {} - - '@types/prop-types@15.7.13': {} - - '@types/react-dom@18.3.1': + '@types/react-dom@19.0.4(@types/react@19.0.10)': dependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - '@types/react@18.3.12': + '@types/react@19.0.10': dependencies: - '@types/prop-types': 15.7.13 csstype: 3.1.3 '@types/sax@1.2.7': @@ -12271,39 +11918,52 @@ snapshots: '@urql/core': 5.0.8 wonka: 6.3.4 - '@vercel/analytics@1.4.1(next@14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@vercel/analytics@1.4.1(next@15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': optionalDependencies: - next: 14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 + next: 15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 - '@vercel/edge@1.1.2': {} + '@vercel/analytics@1.5.0(next@15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': + optionalDependencies: + next: 15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + + '@vercel/edge@1.2.1': {} - '@vercel/nft@0.27.6': + '@vercel/nft@0.29.2(rollup@4.35.0)': dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 4.2.1 + '@mapbox/node-pre-gyp': 2.0.0 + '@rollup/pluginutils': 5.1.3(rollup@4.35.0) acorn: 8.14.0 acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 - glob: 7.2.3 + glob: 10.4.5 graceful-fs: 4.2.11 - micromatch: 4.0.8 node-gyp-build: 4.8.4 + picomatch: 4.0.2 resolve-from: 5.0.0 transitivePeerDependencies: - encoding + - rollup - supports-color - '@vitejs/plugin-react@4.3.3(vite@5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0))': + '@vercel/routing-utils@5.0.4': + dependencies: + path-to-regexp: 6.1.0 + path-to-regexp-updated: path-to-regexp@6.3.0 + optionalDependencies: + ajv: 6.12.6 + + '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0) + vite: 6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -12357,16 +12017,9 @@ snapshots: '@vscode/l10n@0.0.18': {} - '@web3-storage/multipart-parser@1.0.0': {} - - '@xmldom/xmldom@0.7.13': {} - '@xmldom/xmldom@0.8.10': {} - '@zxing/text-encoding@0.9.0': - optional: true - - abbrev@1.1.1: {} + abbrev@3.0.0: {} abort-controller@3.0.0: dependencies: @@ -12381,22 +12034,15 @@ snapshots: dependencies: acorn: 8.14.0 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: - acorn: 8.14.0 + acorn: 8.14.1 acorn@8.14.0: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color + acorn@8.14.1: {} - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 + agent-base@7.1.3: {} ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: @@ -12407,6 +12053,14 @@ snapshots: ajv: 8.17.1 fast-deep-equal: 3.1.3 + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + optional: true + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -12451,13 +12105,6 @@ snapshots: application-config-path@0.1.1: {} - aproba@2.0.0: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - arg@5.0.2: {} argparse@1.0.10: @@ -12476,90 +12123,101 @@ snapshots: array-timsort@1.0.3: {} - array-union@2.1.0: {} - asap@2.0.6: {} - ast-types@0.15.2: + ast-types@0.16.1: dependencies: tslib: 2.8.1 astring@1.9.0: {} - astro-expressive-code@0.33.5(astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2)): + astro-expressive-code@0.40.2(astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1)): dependencies: - astro: 4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2) - hast-util-to-html: 8.0.4 - remark-expressive-code: 0.33.5 + astro: 5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1) + rehype-expressive-code: 0.40.2 - astro@4.16.14(@types/node@20.17.7)(lightningcss@1.28.1)(rollup@4.27.4)(terser@5.36.0)(typescript@5.7.2): + astro@5.5.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(rollup@4.35.0)(terser@5.36.0)(typescript@5.7.2)(yaml@2.6.1): dependencies: - '@astrojs/compiler': 2.10.3 - '@astrojs/internal-helpers': 0.4.1 - '@astrojs/markdown-remark': 5.3.0 - '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.0 + '@astrojs/compiler': 2.11.0 + '@astrojs/internal-helpers': 0.6.1 + '@astrojs/markdown-remark': 6.3.0 + '@astrojs/telemetry': 3.2.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.3(rollup@4.27.4) - '@types/babel__core': 7.20.5 + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) '@types/cookie': 0.6.0 - acorn: 8.14.0 + acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 - ci-info: 4.1.0 + ci-info: 4.2.0 clsx: 2.1.1 common-ancestor-path: 1.0.1 cookie: 0.7.2 cssesc: 3.0.0 - debug: 4.3.7 + debug: 4.4.0 deterministic-object-hash: 2.0.2 devalue: 5.1.1 diff: 5.2.0 dlv: 1.1.3 dset: 3.1.4 - es-module-lexer: 1.5.4 - esbuild: 0.21.5 + es-module-lexer: 1.6.0 + esbuild: 0.25.1 estree-walker: 3.0.3 - fast-glob: 3.3.2 flattie: 1.1.1 github-slugger: 2.0.0 - gray-matter: 4.0.3 html-escaper: 3.0.3 http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.13 + magic-string: 0.30.17 magicast: 0.3.5 - micromatch: 4.0.8 - mrmime: 2.0.0 + mrmime: 2.0.1 neotraverse: 0.6.18 - ora: 8.1.1 - p-limit: 6.1.0 - p-queue: 8.0.1 - preferred-pm: 4.0.0 + p-limit: 6.2.0 + p-queue: 8.1.0 + package-manager-detector: 1.0.0 + picomatch: 4.0.2 prompts: 2.4.2 rehype: 13.0.2 - semver: 7.6.3 - shiki: 1.23.1 - tinyexec: 0.3.1 - tsconfck: 3.1.4(typescript@5.7.2) + semver: 7.7.1 + shiki: 1.29.2 + tinyexec: 0.3.2 + tinyglobby: 0.2.12 + tsconfck: 3.1.5(typescript@5.7.2) + ultrahtml: 1.5.3 unist-util-visit: 5.0.0 + unstorage: 1.15.0 vfile: 6.0.3 - vite: 5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0) - vitefu: 1.0.3(vite@5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0)) - which-pm: 3.0.0 + vite: 6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1) + vitefu: 1.0.6(vite@6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.5(zod@3.23.8) - zod-to-ts: 1.2.0(typescript@5.7.2)(zod@3.23.8) + yocto-spinner: 0.2.1 + zod: 3.24.2 + zod-to-json-schema: 3.24.4(zod@3.24.2) + zod-to-ts: 1.2.0(typescript@5.7.2)(zod@3.24.2) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti - less - lightningcss - rollup @@ -12569,48 +12227,39 @@ snapshots: - sugarss - supports-color - terser + - tsx - typescript + - uploadthing + - yaml async-limiter@1.0.1: {} async-sema@3.1.1: {} - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - autoprefixer@10.4.20(postcss@8.4.49): + autoprefixer@10.4.21(postcss@8.4.49): dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001684 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001703 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.4.49 postcss-value-parser: 4.2.0 - autoprefixer@10.4.21(postcss@8.4.49): + autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-lite: 1.0.30001703 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.0.0 - axobject-query@4.1.0: {} b4a@1.6.7: {} - babel-core@7.0.0-bridge.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - babel-jest@29.7.0(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -12667,10 +12316,6 @@ snapshots: babel-plugin-react-native-web@0.19.13: {} - babel-plugin-syntax-hermes-parser@0.23.1: - dependencies: - hermes-parser: 0.23.1 - babel-plugin-syntax-hermes-parser@0.25.1: dependencies: hermes-parser: 0.25.1 @@ -12700,17 +12345,29 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - babel-preset-expo@12.0.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)): + babel-preset-expo@13.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: + '@babel/helper-module-imports': 7.25.9 '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) '@babel/preset-react': 7.25.9(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@react-native/babel-preset': 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/babel-preset': 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) babel-plugin-react-native-web: 0.19.13 + babel-plugin-syntax-hermes-parser: 0.25.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) + debug: 4.3.7 react-refresh: 0.14.2 + resolve-from: 5.0.0 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -12792,10 +12449,6 @@ snapshots: widest-line: 5.0.0 wrap-ansi: 9.0.0 - bplist-creator@0.0.7: - dependencies: - stream-buffers: 2.2.0 - bplist-creator@0.1.0: dependencies: stream-buffers: 2.2.0 @@ -12839,15 +12492,6 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer-alloc-unsafe@1.1.0: {} - - buffer-alloc@1.2.0: - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - - buffer-fill@1.0.0: {} - buffer-from@1.1.2: {} buffer@5.7.1: @@ -12868,29 +12512,6 @@ snapshots: cac@6.7.14: {} - cacache@18.0.4: - dependencies: - '@npmcli/fs': 3.1.1 - fs-minipass: 3.0.3 - glob: 10.4.5 - lru-cache: 10.4.3 - minipass: 7.1.2 - minipass-collect: 2.0.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - p-map: 4.0.0 - ssri: 10.0.6 - tar: 6.2.1 - unique-filename: 3.0.0 - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - caller-callsite@2.0.0: dependencies: callsites: 2.0.0 @@ -12936,8 +12557,6 @@ snapshots: character-reference-invalid@2.0.1: {} - charenc@0.0.2: {} - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -12954,9 +12573,13 @@ snapshots: dependencies: readdirp: 4.0.2 + chokidar@4.0.3: + dependencies: + readdirp: 4.0.2 + chownr@1.1.4: {} - chownr@2.0.0: {} + chownr@3.0.0: {} chrome-launcher@0.15.2: dependencies: @@ -12982,13 +12605,11 @@ snapshots: ci-info@3.9.0: {} - ci-info@4.1.0: {} + ci-info@4.2.0: {} - class-variance-authority@0.7.0: + class-variance-authority@0.7.1: dependencies: - clsx: 2.0.0 - - clean-stack@2.2.0: {} + clsx: 2.1.1 cli-boxes@3.0.0: {} @@ -12996,10 +12617,6 @@ snapshots: dependencies: restore-cursor: 2.0.0 - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - cli-spinners@2.9.2: {} client-only@0.0.1: {} @@ -13018,8 +12635,6 @@ snapshots: clone@1.0.4: {} - clsx@2.0.0: {} - clsx@2.1.1: {} collapse-white-space@2.1.0: {} @@ -13041,17 +12656,11 @@ snapshots: color-name: 1.1.4 simple-swizzle: 0.2.2 - color-support@1.1.3: {} - color@4.2.3: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} command-exists@1.2.9: {} @@ -13076,8 +12685,6 @@ snapshots: commondir@1.0.1: {} - component-type@1.2.2: {} - compressible@2.0.18: dependencies: mime-db: 1.53.0 @@ -13107,19 +12714,15 @@ snapshots: consola@3.2.3: {} - console-control-strings@1.1.0: {} - convert-source-map@2.0.0: {} - cookie-signature@1.2.2: {} - - cookie@0.6.0: {} + cookie-es@1.2.2: {} cookie@0.7.2: {} core-js-compat@3.39.0: dependencies: - browserslist: 4.24.2 + browserslist: 4.24.4 core-util-is@1.0.3: {} @@ -13136,21 +12739,15 @@ snapshots: transitivePeerDependencies: - encoding - cross-spawn@6.0.6: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypt@0.0.2: {} + crossws@0.3.4: + dependencies: + uncrypto: 0.1.3 crypto-random-string@2.0.0: {} @@ -13179,8 +12776,6 @@ snapshots: csstype@3.1.3: {} - data-uri-to-buffer@3.0.1: {} - debug@2.6.9: dependencies: ms: 2.0.0 @@ -13193,6 +12788,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.0: + dependencies: + ms: 2.1.3 + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -13207,37 +12806,17 @@ snapshots: deepmerge@4.3.1: {} - default-gateway@4.2.0: + default-gateway@6.0.3: dependencies: - execa: 1.0.0 - ip-regex: 2.1.0 + execa: 5.1.1 defaults@1.0.4: dependencies: clone: 1.0.4 - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - define-lazy-prop@2.0.0: {} - del@6.1.1: - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - - delayed-stream@1.0.0: {} - - delegates@1.0.0: {} + defu@6.1.4: {} denodeify@1.2.1: {} @@ -13245,6 +12824,8 @@ snapshots: dequal@2.0.3: {} + destr@2.0.3: {} + destroy@1.2.0: {} detect-libc@1.0.3: {} @@ -13267,10 +12848,6 @@ snapshots: diff@5.2.0: {} - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - direction@2.0.1: {} dlv@1.1.3: {} @@ -13344,13 +12921,7 @@ snapshots: dependencies: stackframe: 1.3.4 - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - es-module-lexer@1.5.4: {} + es-module-lexer@1.6.0: {} esast-util-from-estree@2.0.0: dependencies: @@ -13362,36 +12933,10 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.14.0 + acorn: 8.14.1 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - esbuild@0.24.0: optionalDependencies: '@esbuild/aix-ppc64': 0.24.0 @@ -13419,6 +12964,34 @@ snapshots: '@esbuild/win32-ia32': 0.24.0 '@esbuild/win32-x64': 0.24.0 + esbuild@0.25.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.1 + '@esbuild/android-arm': 0.25.1 + '@esbuild/android-arm64': 0.25.1 + '@esbuild/android-x64': 0.25.1 + '@esbuild/darwin-arm64': 0.25.1 + '@esbuild/darwin-x64': 0.25.1 + '@esbuild/freebsd-arm64': 0.25.1 + '@esbuild/freebsd-x64': 0.25.1 + '@esbuild/linux-arm': 0.25.1 + '@esbuild/linux-arm64': 0.25.1 + '@esbuild/linux-ia32': 0.25.1 + '@esbuild/linux-loong64': 0.25.1 + '@esbuild/linux-mips64el': 0.25.1 + '@esbuild/linux-ppc64': 0.25.1 + '@esbuild/linux-riscv64': 0.25.1 + '@esbuild/linux-s390x': 0.25.1 + '@esbuild/linux-x64': 0.25.1 + '@esbuild/netbsd-arm64': 0.25.1 + '@esbuild/netbsd-x64': 0.25.1 + '@esbuild/openbsd-arm64': 0.25.1 + '@esbuild/openbsd-x64': 0.25.1 + '@esbuild/sunos-x64': 0.25.1 + '@esbuild/win32-arm64': 0.25.1 + '@esbuild/win32-ia32': 0.25.1 + '@esbuild/win32-x64': 0.25.1 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -13478,16 +13051,6 @@ snapshots: exec-async@2.2.0: {} - execa@1.0.0: - dependencies: - cross-spawn: 6.0.6 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -13502,156 +13065,154 @@ snapshots: expand-template@2.0.3: {} - expo-asset@11.0.1(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + expo-asset@12.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - '@expo/image-utils': 0.6.3 - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - expo-constants: 17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) - invariant: 2.2.4 - md5-file: 3.2.3 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + '@expo/image-utils': 0.6.6-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-constants@17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)): + expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)): dependencies: - '@expo/config': 10.0.5 - '@expo/env': 0.4.0 - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + '@expo/config': 11.0.0-canary-20250306-d9d3e02 + '@expo/env': 1.0.1-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-file-system@18.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)): + expo-file-system@19.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)): dependencies: - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) web-streams-polyfill: 3.3.3 - expo-font@13.0.1(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1): + expo-font@14.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) fontfaceobserver: 2.3.0 - react: 18.3.1 + react: 19.0.0 - expo-keep-awake@14.0.1(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1): + expo-keep-awake@15.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react: 18.3.1 + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react: 19.0.0 - expo-linking@7.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - expo-constants: 17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) invariant: 2.2.4 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - expo - supports-color - expo-modules-autolinking@2.0.2: + expo-modules-autolinking@3.0.0-canary-20250306-d9d3e02: dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 commander: 7.2.0 - fast-glob: 3.3.2 find-up: 5.0.0 - fs-extra: 9.1.0 + glob: 10.4.5 require-from-string: 2.0.2 resolve-from: 5.0.0 - expo-modules-core@2.0.6: + expo-modules-core@3.0.0-canary-20250306-d9d3e02: dependencies: invariant: 2.2.4 - expo-navigation-bar@4.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + expo-navigation-bar@5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - '@react-native/normalize-colors': 0.76.3 + '@react-native/normalize-colors': 0.78.0 debug: 4.3.7 - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - ? expo-router@4.0.9(expo-constants@17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(expo-linking@7.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(typescript@5.7.2) + ? expo-router@4.0.18-canary-20250306-d9d3e02(expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) : dependencies: - '@expo/metro-runtime': 4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) - '@expo/server': 0.5.0(typescript@5.7.2) - '@radix-ui/react-slot': 1.0.1(react@18.3.1) - '@react-navigation/bottom-tabs': 7.0.7(@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - '@react-navigation/native-stack': 7.1.1(@react-navigation/native@7.0.4(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@expo/metro-runtime': 4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) + '@expo/server': 0.5.2-canary-20250306-d9d3e02 + '@radix-ui/react-slot': 1.0.1(react@19.0.0) + '@react-navigation/bottom-tabs': 7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native-stack': 7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) client-only: 0.0.1 - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - expo-constants: 17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) - expo-linking: 7.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-native-helmet-async: 2.0.4(react@18.3.1) - react-native-is-edge-to-edge: 1.1.6(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native-safe-area-context: 4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native-screens: 4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) + expo-linking: 7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-helmet-async: 1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-native-helmet-async: 2.0.4(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) schema-utils: 4.2.0 semver: 7.6.3 server-only: 0.0.1 optionalDependencies: - react-native-reanimated: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-reanimated: 3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - '@react-native-masked-view/masked-view' - react - react-dom - react-native - supports-color - - typescript - expo-splash-screen@0.29.13(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)): + expo-splash-screen@0.29.23-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): dependencies: - '@expo/prebuild-config': 8.0.20 - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@expo/prebuild-config': 9.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - expo-status-bar@2.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + expo-status-bar@2.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-system-ui@4.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)): + expo-system-ui@5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)): dependencies: - '@react-native/normalize-colors': 0.76.3 + '@react-native/normalize-colors': 0.78.0 debug: 4.3.7 - expo: 52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - react-native-web: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-native-web: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@expo/cli': 0.21.8 - '@expo/config': 10.0.5 - '@expo/config-plugins': 9.0.10 - '@expo/fingerprint': 0.11.2 - '@expo/metro-config': 0.19.4 + '@expo/cli': 1.0.0-canary-20250306-d9d3e02 + '@expo/config': 11.0.0-canary-20250306-d9d3e02 + '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 + '@expo/fingerprint': 0.11.12-canary-20250306-d9d3e02 + '@expo/metro-config': 0.20.0-canary-20250306-d9d3e02 '@expo/vector-icons': 14.0.4 - babel-preset-expo: 12.0.2(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - expo-asset: 11.0.1(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - expo-constants: 17.0.3(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) - expo-file-system: 18.0.4(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) - expo-font: 13.0.1(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) - expo-keep-awake: 14.0.1(expo@52.0.11(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) - expo-modules-autolinking: 2.0.2 - expo-modules-core: 2.0.6 + babel-preset-expo: 13.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + expo-asset: 12.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) + expo-file-system: 19.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) + expo-font: 14.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-keep-awake: 15.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-modules-autolinking: 3.0.0-canary-20250306-d9d3e02 + expo-modules-core: 3.0.0-canary-20250306-d9d3e02 fbemitter: 3.0.0 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) web-streams-polyfill: 3.3.3 whatwg-url-without-unicode: 8.0.0-3 optionalDependencies: - '@expo/metro-runtime': 4.0.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1)) + '@expo/metro-runtime': 4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0)) transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -13665,16 +13226,12 @@ snapshots: exponential-backoff@3.1.1: {} - expressive-code@0.33.5: + expressive-code@0.40.2: dependencies: - '@expressive-code/core': 0.33.5 - '@expressive-code/plugin-frames': 0.33.5 - '@expressive-code/plugin-shiki': 0.33.5 - '@expressive-code/plugin-text-markers': 0.33.5 - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 + '@expressive-code/core': 0.40.2 + '@expressive-code/plugin-frames': 0.40.2 + '@expressive-code/plugin-shiki': 0.40.2 + '@expressive-code/plugin-text-markers': 0.40.2 extend@3.0.2: {} @@ -13728,7 +13285,9 @@ snapshots: optionalDependencies: picomatch: 4.0.2 - fetch-retry@4.1.1: {} + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 file-uri-to-path@1.0.0: {} @@ -13756,8 +13315,6 @@ snapshots: make-dir: 2.1.0 pkg-dir: 3.0.0 - find-up-simple@1.0.0: {} - find-up@3.0.0: dependencies: locate-path: 3.0.0 @@ -13772,11 +13329,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.8 - pkg-dir: 4.2.0 - flattie@1.1.1: {} flow-enums-runtime@0.0.6: {} @@ -13785,21 +13337,11 @@ snapshots: fontfaceobserver@2.3.0: {} - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - foreground-child@3.3.0: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@3.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - fraction.js@4.3.7: {} freeport-async@2.0.0: {} @@ -13808,34 +13350,6 @@ snapshots: fs-constants@1.0.0: {} - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@9.0.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 1.0.0 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-minipass@3.0.3: - dependencies: - minipass: 7.1.2 - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -13843,42 +13357,18 @@ snapshots: function-bind@1.1.2: {} - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} get-east-asian-width@1.3.0: {} - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - get-nonce@1.0.1: {} get-package-type@0.1.0: {} get-port@3.2.0: {} - get-stream@4.1.0: - dependencies: - pump: 3.0.2 - get-stream@6.0.1: {} getenv@1.0.0: {} @@ -13915,27 +13405,19 @@ snapshots: globals@11.12.0: {} - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - graceful-fs@4.2.11: {} - gray-matter@4.0.3: + h3@1.15.1: dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 + cookie-es: 1.2.2 + crossws: 0.3.4 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.0 + radix3: 1.1.2 + ufo: 1.5.4 + uncrypto: 0.1.3 has-flag@3.0.0: {} @@ -13943,23 +13425,24 @@ snapshots: has-own-prop@2.0.0: {} - has-property-descriptors@1.0.2: + hasown@2.0.2: dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} + function-bind: 1.1.2 - has-tostringtag@1.0.2: + hast-util-embedded@3.0.0: dependencies: - has-symbols: 1.0.3 - - has-unicode@2.0.1: {} + '@types/hast': 3.0.4 + hast-util-is-element: 3.0.0 - hasown@2.0.2: + hast-util-format@1.1.0: dependencies: - function-bind: 1.1.2 + '@types/hast': 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-minify-whitespace: 1.0.1 + hast-util-phrasing: 3.0.1 + hast-util-whitespace: 3.0.0 + html-whitespace-sensitive-tag-names: 3.0.1 + unist-util-visit-parents: 6.0.1 hast-util-from-html@2.0.3: dependencies: @@ -13970,16 +13453,6 @@ snapshots: vfile: 6.0.3 vfile-message: 4.0.2 - hast-util-from-parse5@7.1.2: - dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.11 - hastscript: 7.2.0 - property-information: 6.5.0 - vfile: 5.3.7 - vfile-location: 4.1.0 - web-namespaces: 2.0.1 - hast-util-from-parse5@8.0.2: dependencies: '@types/hast': 3.0.4 @@ -13995,31 +13468,33 @@ snapshots: dependencies: '@types/hast': 3.0.4 + hast-util-is-body-ok-link@3.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-is-element@3.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-parse-selector@3.1.1: + hast-util-minify-whitespace@1.0.1: dependencies: - '@types/hast': 2.3.10 + '@types/hast': 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-is-element: 3.0.0 + hast-util-whitespace: 3.0.0 + unist-util-is: 6.0.0 hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 - hast-util-raw@7.2.3: - dependencies: - '@types/hast': 2.3.10 - '@types/parse5': 6.0.3 - hast-util-from-parse5: 7.1.2 - hast-util-to-parse5: 7.1.0 - html-void-elements: 2.0.1 - parse5: 6.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - web-namespaces: 2.0.1 - zwitch: 2.0.4 + hast-util-phrasing@3.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-embedded: 3.0.0 + hast-util-has-property: 3.0.0 + hast-util-is-body-ok-link: 3.0.1 + hast-util-is-element: 3.0.0 hast-util-raw@9.1.0: dependencies: @@ -14076,21 +13551,21 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-html@8.0.4: + hast-util-to-html@9.0.3: dependencies: - '@types/hast': 2.3.10 - '@types/unist': 2.0.11 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 - hast-util-raw: 7.2.3 - hast-util-whitespace: 2.0.1 - html-void-elements: 2.0.1 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 property-information: 6.5.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-html@9.0.3: + hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.3 @@ -14099,7 +13574,7 @@ snapshots: hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 + property-information: 7.0.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 @@ -14124,15 +13599,6 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-parse5@7.1.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - hast-util-to-parse5@8.0.0: dependencies: '@types/hast': 3.0.4 @@ -14154,28 +13620,10 @@ snapshots: hast-util-is-element: 3.0.0 unist-util-find-after: 5.0.0 - hast-util-whitespace@2.0.1: {} - hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 - hastscript@7.2.0: - dependencies: - '@types/hast': 2.3.10 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - hastscript@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - hastscript@9.0.0: dependencies: '@types/hast': 3.0.4 @@ -14184,16 +13632,10 @@ snapshots: property-information: 6.5.0 space-separated-tokens: 2.0.2 - hermes-estree@0.23.1: {} - hermes-estree@0.24.0: {} hermes-estree@0.25.1: {} - hermes-parser@0.23.1: - dependencies: - hermes-estree: 0.23.1 - hermes-parser@0.24.0: dependencies: hermes-estree: 0.24.0 @@ -14208,10 +13650,10 @@ snapshots: html-escaper@3.0.3: {} - html-void-elements@2.0.1: {} - html-void-elements@3.0.0: {} + html-whitespace-sensitive-tag-names@3.0.1: {} + http-cache-semantics@4.1.1: {} http-errors@2.0.0: @@ -14222,9 +13664,9 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - https-proxy-agent@5.0.1: + https-proxy-agent@7.0.6: dependencies: - agent-base: 6.0.2 + agent-base: 7.1.3 debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -14233,9 +13675,11 @@ snapshots: hyphenate-style-name@1.1.0: {} - ieee754@1.2.1: {} + i18next@23.16.8: + dependencies: + '@babel/runtime': 7.26.0 - ignore@5.3.2: {} + ieee754@1.2.1: {} image-size@1.1.1: dependencies: @@ -14250,8 +13694,6 @@ snapshots: imurmurhash@0.1.4: {} - indent-string@4.0.0: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -14270,19 +13712,19 @@ snapshots: css-in-js-utils: 3.1.0 fast-loops: 1.1.4 - internal-ip@4.3.0: + internal-ip@6.1.0: dependencies: - default-gateway: 4.2.0 + default-gateway: 6.0.3 ipaddr.js: 1.9.1 invariant@2.2.4: dependencies: loose-envify: 1.4.0 - ip-regex@2.1.0: {} - ipaddr.js@1.9.1: {} + iron-webcrypto@1.2.1: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -14290,11 +13732,6 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-arrayish@0.2.1: {} is-arrayish@0.3.2: {} @@ -14303,12 +13740,6 @@ snapshots: dependencies: binary-extensions: 2.3.0 - is-buffer@1.1.6: {} - - is-buffer@2.0.5: {} - - is-callable@1.2.7: {} - is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -14321,16 +13752,10 @@ snapshots: is-docker@3.0.0: {} - is-extendable@0.1.1: {} - is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -14341,14 +13766,8 @@ snapshots: dependencies: is-docker: 3.0.0 - is-interactive@2.0.0: {} - is-number@7.0.0: {} - is-path-cwd@2.2.0: {} - - is-path-inside@3.0.3: {} - is-plain-obj@2.1.0: {} is-plain-obj@4.1.0: {} @@ -14357,18 +13776,8 @@ snapshots: dependencies: isobject: 3.0.1 - is-stream@1.1.0: {} - is-stream@2.0.1: {} - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.1.0: {} - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -14477,8 +13886,6 @@ snapshots: jiti@1.21.6: {} - join-component@1.1.0: {} - joycon@3.1.1: {} js-tokens@4.0.0: {} @@ -14492,32 +13899,30 @@ snapshots: dependencies: argparse: 2.0.1 - jsc-android@250231.0.0: {} - jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)): + jscodeshift@17.1.2(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: '@babel/core': 7.26.0 '@babel/parser': 7.26.2 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) - '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) '@babel/preset-flow': 7.25.9(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@babel/register': 7.25.9(@babel/core@7.26.0) - babel-core: 7.0.0-bridge.0(@babel/core@7.26.0) - chalk: 4.1.2 flow-parser: 0.254.2 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 + picocolors: 1.1.1 + recast: 0.23.11 + tmp: 0.2.3 + write-file-atomic: 5.0.1 + optionalDependencies: + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -14525,6 +13930,9 @@ snapshots: json-parse-better-errors@1.0.2: {} + json-schema-traverse@0.4.1: + optional: true + json-schema-traverse@1.0.0: {} json5@2.2.3: {} @@ -14533,22 +13941,14 @@ snapshots: jsonc-parser@3.3.1: {} - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - kind-of@6.0.3: {} kleur@3.0.3: {} kleur@4.1.5: {} + klona@2.0.6: {} + leven@3.1.0: {} lighthouse-logger@1.4.2: @@ -14656,13 +14056,6 @@ snapshots: load-tsconfig@0.2.5: {} - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - locate-path@3.0.0: dependencies: p-locate: 3.0.0 @@ -14688,11 +14081,6 @@ snapshots: dependencies: chalk: 2.4.2 - log-symbols@6.0.0: - dependencies: - chalk: 5.3.0 - is-unicode-supported: 1.3.0 - longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -14705,17 +14093,17 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react-native@0.451.0(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + lucide-react-native@0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - react-native-svg: 15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - lucide-react@0.334.0(react@18.3.1): + lucide-react@0.334.0(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 - magic-string@0.30.13: + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -14730,10 +14118,6 @@ snapshots: pify: 4.0.1 semver: 5.7.2 - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -14744,16 +14128,6 @@ snapshots: marky@1.2.5: {} - md5-file@3.2.3: - dependencies: - buffer-alloc: 1.2.0 - - md5@2.3.0: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - mdast-util-definitions@6.0.0: dependencies: '@types/mdast': 4.0.4 @@ -15259,8 +14633,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -15424,8 +14798,6 @@ snapshots: mimic-fn@2.1.0: {} - mimic-function@5.0.1: {} - mimic-response@3.1.0: {} minimatch@3.1.2: @@ -15438,30 +14810,12 @@ snapshots: minimist@1.2.8: {} - minipass-collect@2.0.1: - dependencies: - minipass: 7.1.2 - - minipass-flush@1.0.5: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: + minizlib@3.0.1: dependencies: - minipass: 3.3.6 - yallist: 4.0.0 + minipass: 7.1.2 + rimraf: 5.0.10 mkdirp-classic@0.5.3: {} @@ -15471,9 +14825,9 @@ snapshots: mkdirp@1.0.4: {} - mrmime@1.0.1: {} + mkdirp@3.0.1: {} - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.0.0: {} @@ -15489,13 +14843,15 @@ snapshots: nanoid@3.3.7: {} + nanoid@3.3.8: {} + napi-build-utils@1.0.2: {} - nativewind@4.1.23(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.15): + nativewind@4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.15): dependencies: comment-json: 4.2.5 debug: 4.3.7 - react-native-css-interop: 0.1.22(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.15) + react-native-css-interop: 0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.15) tailwindcss: 3.4.15 transitivePeerDependencies: - react @@ -15515,37 +14871,31 @@ snapshots: nested-error-stacks@2.0.1: {} - next@14.2.14(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next@15.2.2(@babel/core@7.26.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@next/env': 14.2.14 - '@swc/helpers': 0.5.5 + '@next/env': 15.2.2 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001684 - graceful-fs: 4.2.11 + caniuse-lite: 1.0.30001703 postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.26.0)(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.2.14 - '@next/swc-darwin-x64': 14.2.14 - '@next/swc-linux-arm64-gnu': 14.2.14 - '@next/swc-linux-arm64-musl': 14.2.14 - '@next/swc-linux-x64-gnu': 14.2.14 - '@next/swc-linux-x64-musl': 14.2.14 - '@next/swc-win32-arm64-msvc': 14.2.14 - '@next/swc-win32-ia32-msvc': 14.2.14 - '@next/swc-win32-x64-msvc': 14.2.14 + '@next/swc-darwin-arm64': 15.2.2 + '@next/swc-darwin-x64': 15.2.2 + '@next/swc-linux-arm64-gnu': 15.2.2 + '@next/swc-linux-arm64-musl': 15.2.2 + '@next/swc-linux-x64-gnu': 15.2.2 + '@next/swc-linux-x64-musl': 15.2.2 + '@next/swc-win32-arm64-msvc': 15.2.2 + '@next/swc-win32-x64-msvc': 15.2.2 + sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - nice-try@1.0.5: {} - - nlcst-to-string@3.1.1: - dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string@4.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -15558,9 +14908,7 @@ snapshots: node-addon-api@6.1.0: {} - node-dir@0.1.17: - dependencies: - minimatch: 3.1.2 + node-fetch-native@1.6.6: {} node-fetch@2.7.0: dependencies: @@ -15572,13 +14920,15 @@ snapshots: node-int64@0.4.0: {} + node-mock-http@1.0.0: {} + node-releases@2.0.18: {} node-releases@2.0.19: {} - nopt@5.0.0: + nopt@8.1.0: dependencies: - abbrev: 1.1.1 + abbrev: 3.0.0 normalize-path@3.0.0: {} @@ -15591,21 +14941,10 @@ snapshots: semver: 7.6.3 validate-npm-package-name: 5.0.1 - npm-run-path@2.0.2: - dependencies: - path-key: 2.0.1 - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -15620,6 +14959,12 @@ snapshots: object-hash@3.0.0: {} + ofetch@1.4.1: + dependencies: + destr: 2.0.3 + node-fetch-native: 1.6.6 + ufo: 1.5.4 + on-finished@2.3.0: dependencies: ee-first: 1.1.1 @@ -15642,15 +14987,11 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - oniguruma-to-es@0.4.1: + oniguruma-to-es@2.3.0: dependencies: emoji-regex-xs: 1.0.0 - regex: 5.0.2 - regex-recursion: 4.2.1 + regex: 5.1.1 + regex-recursion: 5.1.1 open@7.4.2: dependencies: @@ -15672,22 +15013,8 @@ snapshots: strip-ansi: 5.2.0 wcwidth: 1.0.1 - ora@8.1.1: - dependencies: - chalk: 5.3.0 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - os-tmpdir@1.0.2: {} - p-finally@1.0.0: {} - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -15696,7 +15023,7 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@6.1.0: + p-limit@6.2.0: dependencies: yocto-queue: 1.1.1 @@ -15712,11 +15039,7 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - - p-queue@8.0.1: + p-queue@8.1.0: dependencies: eventemitter3: 5.0.1 p-timeout: 6.1.3 @@ -15727,13 +15050,15 @@ snapshots: package-json-from-dist@1.0.1: {} - pagefind@1.2.0: + package-manager-detector@1.0.0: {} + + pagefind@1.3.0: optionalDependencies: - '@pagefind/darwin-arm64': 1.2.0 - '@pagefind/darwin-x64': 1.2.0 - '@pagefind/linux-arm64': 1.2.0 - '@pagefind/linux-x64': 1.2.0 - '@pagefind/windows-x64': 1.2.0 + '@pagefind/darwin-arm64': 1.3.0 + '@pagefind/darwin-x64': 1.3.0 + '@pagefind/linux-arm64': 1.3.0 + '@pagefind/linux-x64': 1.3.0 + '@pagefind/windows-x64': 1.3.0 parse-entities@4.0.1: dependencies: @@ -15751,12 +15076,6 @@ snapshots: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - parse-latin@5.0.1: - dependencies: - nlcst-to-string: 3.1.1 - unist-util-modify-children: 3.1.1 - unist-util-visit-children: 2.0.2 - parse-latin@7.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -15770,8 +15089,6 @@ snapshots: dependencies: pngjs: 3.4.0 - parse5@6.0.1: {} - parse5@7.2.1: dependencies: entities: 4.5.0 @@ -15791,8 +15108,6 @@ snapshots: path-is-absolute@1.0.1: {} - path-key@2.0.1: {} - path-key@3.1.1: {} path-parse@1.0.7: {} @@ -15802,7 +15117,9 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-type@4.0.0: {} + path-to-regexp@6.1.0: {} + + path-to-regexp@6.3.0: {} picocolors@1.1.1: {} @@ -15822,10 +15139,6 @@ snapshots: dependencies: find-up: 3.0.0 - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - plist@3.1.0: dependencies: '@xmldom/xmldom': 0.8.10 @@ -15834,8 +15147,6 @@ snapshots: pngjs@3.4.0: {} - possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.49): dependencies: postcss: 8.4.49 @@ -15855,12 +15166,19 @@ snapshots: optionalDependencies: postcss: 8.4.49 - postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.49)(yaml@2.6.1): + postcss-load-config@4.0.2(postcss@8.5.3): + dependencies: + lilconfig: 3.1.2 + yaml: 2.6.1 + optionalDependencies: + postcss: 8.5.3 + + postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.5.3)(yaml@2.6.1): dependencies: lilconfig: 3.1.2 optionalDependencies: jiti: 1.21.6 - postcss: 8.4.49 + postcss: 8.5.3 yaml: 2.6.1 postcss-nested@6.2.0(postcss@8.4.49): @@ -15877,7 +15195,7 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.7 + nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -15887,6 +15205,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.3: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prebuild-install@7.1.2: dependencies: detect-libc: 2.0.3 @@ -15902,12 +15226,6 @@ snapshots: tar-fs: 2.1.1 tunnel-agent: 0.6.0 - preferred-pm@4.0.0: - dependencies: - find-up-simple: 1.0.0 - find-yarn-workspace-root2: 1.2.16 - which-pm: 3.0.0 - prettier@2.8.7: optional: true @@ -15948,6 +15266,8 @@ snapshots: property-information@6.5.0: {} + property-information@7.0.0: {} + pump@3.0.2: dependencies: end-of-stream: 1.4.4 @@ -15972,6 +15292,8 @@ snapshots: dependencies: inherits: 2.0.4 + radix3@1.1.2: {} + range-parser@1.2.1: {} rc@1.2.8: @@ -15981,7 +15303,7 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-devtools-core@5.3.2: + react-devtools-core@6.1.1: dependencies: shell-quote: 1.8.1 ws: 7.5.10 @@ -15989,25 +15311,24 @@ snapshots: - bufferutil - utf-8-validate - react-dom@18.3.1(react@18.3.1): + react-dom@19.0.0(react@19.0.0): dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 + react: 19.0.0 + scheduler: 0.25.0 react-fast-compare@3.2.2: {} - react-freeze@1.0.4(react@18.3.1): + react-freeze@1.0.4(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 - react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-helmet-async@1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 invariant: 2.2.4 prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) react-fast-compare: 3.2.2 shallowequal: 1.1.0 @@ -16015,37 +15336,56 @@ snapshots: react-is@18.3.1: {} - react-native-css-interop@0.1.22(react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.15): + react-native-css-interop@0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.15): dependencies: '@babel/helper-module-imports': 7.25.9 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 debug: 4.3.7 lightningcss: 1.28.1 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) - react-native-reanimated: 3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-reanimated: 3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) semver: 7.6.3 tailwindcss: 3.4.15 optionalDependencies: - react-native-safe-area-context: 4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - react-native-svg: 15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-helmet-async@2.0.4(react@18.3.1): + react-native-helmet-async@2.0.4(react@19.0.0): dependencies: invariant: 2.2.4 - react: 18.3.1 + react: 19.0.0 react-fast-compare: 3.2.2 shallowequal: 1.1.0 - react-native-is-edge-to-edge@1.1.6(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + react-native-is-edge-to-edge@1.1.6(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + + react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + '@babel/core': 7.26.0 + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + convert-source-map: 2.0.0 + invariant: 2.2.4 + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + transitivePeerDependencies: + - supports-color - react-native-reanimated@3.16.2(@babel/core@7.26.0)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + react-native-reanimated@3.17.1(@babel/core@7.26.0)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) @@ -16059,32 +15399,33 @@ snapshots: '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) convert-source-map: 2.0.0 invariant: 2.2.4 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-safe-area-context@4.12.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) - react-native-screens@4.1.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - react: 18.3.1 - react-freeze: 1.0.4(react@18.3.1) - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-freeze: 1.0.4(react@19.0.0) + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 - react-native-svg@15.8.0(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: css-select: 5.1.0 css-tree: 1.1.3 - react: 18.3.1 - react-native: 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-native: 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 - react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 '@react-native/normalize-colors': 0.74.88 @@ -16093,27 +15434,27 @@ snapshots: memoize-one: 6.0.0 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) styleq: 0.1.3 transitivePeerDependencies: - encoding - react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1): + react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.76.3(patch_hash=6fst5vxplq4cjuecsevwdyugdm) - '@react-native/codegen': 0.76.3(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - '@react-native/community-cli-plugin': 0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - '@react-native/gradle-plugin': 0.76.3 - '@react-native/js-polyfills': 0.76.3 - '@react-native/normalize-colors': 0.76.3 - '@react-native/virtualized-lists': 0.76.3(@types/react@18.3.12)(react-native@0.76.3(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-native/assets-registry': 0.78.0 + '@react-native/codegen': 0.78.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/community-cli-plugin': 0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + '@react-native/gradle-plugin': 0.78.0 + '@react-native/js-polyfills': 0.78.0 + '@react-native/normalize-colors': 0.78.0 + '@react-native/virtualized-lists': 0.78.0(@types/react@19.0.10)(react-native@0.78.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 babel-jest: 29.7.0(@babel/core@7.26.0) - babel-plugin-syntax-hermes-parser: 0.23.1 + babel-plugin-syntax-hermes-parser: 0.25.1 base64-js: 1.5.1 chalk: 4.1.2 commander: 12.1.0 @@ -16122,95 +15463,90 @@ snapshots: glob: 7.2.3 invariant: 2.2.4 jest-environment-node: 29.7.0 - jsc-android: 250231.0.0 memoize-one: 5.2.1 metro-runtime: 0.81.0 metro-source-map: 0.81.0 - mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 - react: 18.3.1 - react-devtools-core: 5.3.2 + react: 19.0.0 + react-devtools-core: 6.1.1 react-refresh: 0.14.2 regenerator-runtime: 0.13.11 - scheduler: 0.24.0-canary-efb381bbf-20230505 + scheduler: 0.25.0 semver: 7.6.3 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' - '@react-native-community/cli-server-api' - bufferutil - - encoding - supports-color - utf-8-validate react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): + react-remove-scroll-bar@2.3.6(@types/react@19.0.10)(react@19.0.0): dependencies: - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-style-singleton: 2.2.1(@types/react@19.0.10)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - react-remove-scroll-bar@2.3.8(@types/react@18.3.12)(react@18.3.1): + react-remove-scroll-bar@2.3.8(@types/react@19.0.10)(react@19.0.0): dependencies: - react: 18.3.1 - react-style-singleton: 2.2.3(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): + react-remove-scroll@2.6.0(@types/react@19.0.10)(react@19.0.0): dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-remove-scroll-bar: 2.3.6(@types/react@19.0.10)(react@19.0.0) + react-style-singleton: 2.2.1(@types/react@19.0.10)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) + use-callback-ref: 1.3.2(@types/react@19.0.10)(react@19.0.0) + use-sidecar: 1.1.2(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - react-remove-scroll@2.6.3(@types/react@18.3.12)(react@18.3.1): + react-remove-scroll@2.6.3(@types/react@19.0.10)(react@19.0.0): dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.12)(react@18.3.1) - react-style-singleton: 2.2.3(@types/react@18.3.12)(react@18.3.1) + react: 19.0.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.0.10)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.12)(react@18.3.1) - use-sidecar: 1.1.3(@types/react@18.3.12)(react@18.3.1) + use-callback-ref: 1.3.3(@types/react@19.0.10)(react@19.0.0) + use-sidecar: 1.1.3(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): + react-style-singleton@2.2.1(@types/react@19.0.10)(react@19.0.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 - react: 18.3.1 + react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - react-style-singleton@2.2.3(@types/react@18.3.12)(react@18.3.1): + react-style-singleton@2.2.3(@types/react@19.0.10)(react@19.0.0): dependencies: get-nonce: 1.0.1 - react: 18.3.1 + react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react@19.0.0: {} read-cache@1.0.0: dependencies: @@ -16240,11 +15576,12 @@ snapshots: readline@1.3.0: {} - recast@0.21.5: + recast@0.23.11: dependencies: - ast-types: 0.15.2 + ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 + tiny-invariant: 1.3.3 tslib: 2.8.1 recma-build-jsx@1.0.0: @@ -16253,9 +15590,9 @@ snapshots: estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.14.0): + recma-jsx@1.0.0(acorn@8.14.1): dependencies: - acorn-jsx: 5.3.2(acorn@8.14.0) + acorn-jsx: 5.3.2(acorn@8.14.1) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -16291,13 +15628,14 @@ snapshots: dependencies: '@babel/runtime': 7.26.0 - regex-recursion@4.2.1: + regex-recursion@5.1.1: dependencies: + regex: 5.1.1 regex-utilities: 2.3.0 regex-utilities@2.3.0: {} - regex@5.0.2: + regex@5.1.1: dependencies: regex-utilities: 2.3.0 @@ -16316,6 +15654,15 @@ snapshots: dependencies: jsesc: 3.0.2 + rehype-expressive-code@0.40.2: + dependencies: + expressive-code: 0.40.2 + + rehype-format@5.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-format: 1.1.0 + rehype-parse@9.0.1: dependencies: '@types/hast': 3.0.4 @@ -16358,13 +15705,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-expressive-code@0.33.5: - dependencies: - expressive-code: 0.33.5 - hast-util-to-html: 8.0.4 - unist-util-visit: 4.1.2 - - remark-gfm@4.0.0: + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 mdast-util-gfm: 3.0.0 @@ -16399,12 +15740,6 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - remark-smartypants@2.1.0: - dependencies: - retext: 8.1.0 - retext-smartypants: 5.2.0 - unist-util-visit: 5.0.0 - remark-smartypants@3.0.2: dependencies: retext: 9.0.0 @@ -16418,8 +15753,6 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - remove-trailing-slash@0.1.1: {} - repeat-string@1.6.1: {} request-light@0.5.8: {} @@ -16442,7 +15775,7 @@ snapshots: resolve-workspace-root@2.0.0: {} - resolve.exports@2.0.2: {} + resolve.exports@2.0.3: {} resolve@1.22.8: dependencies: @@ -16459,56 +15792,24 @@ snapshots: onetime: 2.0.1 signal-exit: 3.0.7 - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - - retext-latin@3.1.0: - dependencies: - '@types/nlcst': 1.0.4 - parse-latin: 5.0.1 - unherit: 3.0.1 - unified: 10.1.2 - retext-latin@4.0.0: dependencies: '@types/nlcst': 2.0.3 parse-latin: 7.0.0 unified: 11.0.5 - retext-smartypants@5.2.0: - dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - unist-util-visit: 4.1.2 - retext-smartypants@6.2.0: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unist-util-visit: 5.0.0 - retext-stringify@3.1.0: - dependencies: - '@types/nlcst': 1.0.4 - nlcst-to-string: 3.1.1 - unified: 10.1.2 - retext-stringify@4.0.0: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unified: 11.0.5 - retext@8.1.0: - dependencies: - '@types/nlcst': 1.0.4 - retext-latin: 3.1.0 - retext-stringify: 3.1.0 - unified: 10.1.2 - retext@9.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -16518,13 +15819,13 @@ snapshots: reusify@1.0.4: {} - rimraf@2.6.3: + rimraf@3.0.2: dependencies: glob: 7.2.3 - rimraf@3.0.2: + rimraf@5.0.10: dependencies: - glob: 7.2.3 + glob: 10.4.5 rollup@4.27.4: dependencies: @@ -16550,6 +15851,31 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.27.4 fsevents: 2.3.3 + rollup@4.35.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.35.0 + '@rollup/rollup-android-arm64': 4.35.0 + '@rollup/rollup-darwin-arm64': 4.35.0 + '@rollup/rollup-darwin-x64': 4.35.0 + '@rollup/rollup-freebsd-arm64': 4.35.0 + '@rollup/rollup-freebsd-x64': 4.35.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 + '@rollup/rollup-linux-arm-musleabihf': 4.35.0 + '@rollup/rollup-linux-arm64-gnu': 4.35.0 + '@rollup/rollup-linux-arm64-musl': 4.35.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 + '@rollup/rollup-linux-riscv64-gnu': 4.35.0 + '@rollup/rollup-linux-s390x-gnu': 4.35.0 + '@rollup/rollup-linux-x64-gnu': 4.35.0 + '@rollup/rollup-linux-x64-musl': 4.35.0 + '@rollup/rollup-win32-arm64-msvc': 4.35.0 + '@rollup/rollup-win32-ia32-msvc': 4.35.0 + '@rollup/rollup-win32-x64-msvc': 4.35.0 + fsevents: 2.3.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -16560,13 +15886,7 @@ snapshots: sax@1.4.1: {} - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - scheduler@0.24.0-canary-efb381bbf-20230505: - dependencies: - loose-envify: 1.4.0 + scheduler@0.25.0: {} schema-utils@4.2.0: dependencies: @@ -16575,11 +15895,6 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.11 @@ -16591,6 +15906,8 @@ snapshots: semver@7.6.3: {} + semver@7.7.1: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -16640,19 +15957,6 @@ snapshots: server-only@0.0.1: {} - set-blocking@2.0.0: {} - - set-cookie-parser@2.7.1: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -16678,7 +15982,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.3 - semver: 7.6.3 + semver: 7.7.1 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -16701,27 +16005,23 @@ snapshots: '@img/sharp-win32-x64': 0.33.5 optional: true - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} shell-quote@1.8.1: {} - shiki@1.23.1: + shiki@1.29.2: dependencies: - '@shikijs/core': 1.23.1 - '@shikijs/engine-javascript': 1.23.1 - '@shikijs/engine-oniguruma': 1.23.1 - '@shikijs/types': 1.23.1 - '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/core': 1.29.2 + '@shikijs/engine-javascript': 1.29.2 + '@shikijs/engine-oniguruma': 1.29.2 + '@shikijs/langs': 1.29.2 + '@shikijs/themes': 1.29.2 + '@shikijs/types': 1.29.2 + '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 signal-exit@3.0.7: {} @@ -16759,6 +16059,8 @@ snapshots: slugify@1.6.6: {} + smol-toml@1.3.1: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -16780,16 +16082,8 @@ snapshots: split-on-first@1.1.0: {} - split@1.0.1: - dependencies: - through: 2.3.8 - sprintf-js@1.0.3: {} - ssri@10.0.6: - dependencies: - minipass: 7.1.2 - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -16804,14 +16098,10 @@ snapshots: statuses@2.0.1: {} - stdin-discarder@0.2.2: {} - stream-buffers@2.2.0: {} stream-replace-string@2.0.0: {} - stream-slice@0.1.2: {} - streamsearch@1.1.0: {} streamx@2.20.2: @@ -16867,12 +16157,6 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strip-bom-string@1.0.0: {} - - strip-bom@3.0.0: {} - - strip-eof@1.0.0: {} - strip-final-newline@2.0.0: {} strip-json-comments@2.0.1: {} @@ -16887,10 +16171,10 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.1(@babel/core@7.26.0)(react@18.3.1): + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.0.0): dependencies: client-only: 0.0.1 - react: 18.3.1 + react: 19.0.0 optionalDependencies: '@babel/core': 7.26.0 @@ -16908,8 +16192,6 @@ snapshots: sudo-prompt@8.2.5: {} - sudo-prompt@9.1.1: {} - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -16929,7 +16211,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - tailwind-merge@2.5.4: {} + tailwind-merge@3.0.2: {} tailwindcss-animate@1.0.7(tailwindcss@3.4.15): dependencies: @@ -16991,29 +16273,17 @@ snapshots: fast-fifo: 1.3.2 streamx: 2.20.2 - tar@6.2.1: + tar@7.4.3: dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 temp-dir@2.0.0: {} - temp@0.8.4: - dependencies: - rimraf: 2.6.3 - - tempy@0.7.1: - dependencies: - del: 6.1.1 - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 - terminal-link@2.1.1: dependencies: ansi-escapes: 4.3.2 @@ -17049,19 +16319,28 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 - through@2.3.8: {} + tiny-invariant@1.3.3: {} tinyexec@0.3.1: {} + tinyexec@0.3.2: {} + tinyglobby@0.2.10: dependencies: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 + tmp@0.2.3: {} + tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -17084,13 +16363,13 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.1.4(typescript@5.7.2): + tsconfck@3.1.5(typescript@5.7.2): optionalDependencies: typescript: 5.7.2 tslib@2.8.1: {} - tsup@8.3.5(jiti@1.21.6)(postcss@8.4.49)(typescript@5.7.2)(yaml@2.6.1): + tsup@8.3.5(jiti@1.21.6)(postcss@8.5.3)(typescript@5.7.2)(yaml@2.6.1): dependencies: bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 @@ -17100,7 +16379,7 @@ snapshots: esbuild: 0.24.0 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.4.49)(yaml@2.6.1) + postcss-load-config: 6.0.1(jiti@1.21.6)(postcss@8.5.3)(yaml@2.6.1) resolve-from: 5.0.0 rollup: 4.27.4 source-map: 0.8.0-beta.0 @@ -17109,7 +16388,7 @@ snapshots: tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.4.49 + postcss: 8.5.3 typescript: 5.7.2 transitivePeerDependencies: - jiti @@ -17133,8 +16412,6 @@ snapshots: turbo-linux-arm64@2.3.1: optional: true - turbo-stream@2.4.0: {} - turbo-windows-64@2.3.1: optional: true @@ -17152,8 +16429,6 @@ snapshots: type-detect@4.0.8: {} - type-fest@0.16.0: {} - type-fest@0.21.3: {} type-fest@0.7.1: {} @@ -17170,14 +16445,16 @@ snapshots: ua-parser-js@1.0.39: {} + ufo@1.5.4: {} + ultrahtml@1.5.3: {} + uncrypto@0.1.3: {} + undici-types@6.19.8: {} undici@6.21.0: {} - unherit@3.0.1: {} - unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: @@ -17189,16 +16466,6 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} - unified@10.1.2: - dependencies: - '@types/unist': 2.0.11 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 5.3.7 - unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -17209,14 +16476,6 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unique-filename@3.0.0: - dependencies: - unique-slug: 4.0.0 - - unique-slug@4.0.0: - dependencies: - imurmurhash: 0.1.4 - unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -17226,19 +16485,10 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.0 - unist-util-is@5.2.1: - dependencies: - '@types/unist': 2.0.11 - unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-modify-children@3.1.1: - dependencies: - '@types/unist': 2.0.11 - array-iterate: 2.0.1 - unist-util-modify-children@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -17248,10 +16498,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-position@4.0.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.3 @@ -17261,52 +16507,38 @@ snapshots: '@types/unist': 3.0.3 unist-util-visit: 5.0.0 - unist-util-stringify-position@3.0.3: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-visit-children@2.0.2: - dependencies: - '@types/unist': 2.0.11 - unist-util-visit-children@3.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-visit-parents@5.1.3: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 5.2.1 - unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 - unist-util-visit@4.1.2: - dependencies: - '@types/unist': 2.0.11 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@0.1.2: {} - - universalify@1.0.0: {} - - universalify@2.0.1: {} - unpipe@1.0.0: {} + unstorage@1.15.0: + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.3 + h3: 1.15.1 + lru-cache: 10.4.3 + node-fetch-native: 1.6.6 + ofetch: 1.4.1 + ufo: 1.5.4 + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 @@ -17319,110 +16551,90 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + optional: true + + use-callback-ref@1.3.2(@types/react@19.0.10)(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - use-callback-ref@1.3.3(@types/react@18.3.12)(react@18.3.1): + use-callback-ref@1.3.3(@types/react@19.0.10)(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - use-latest-callback@0.2.3(react@18.3.1): + use-latest-callback@0.2.3(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 - use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): + use-sidecar@1.1.2(@types/react@19.0.10)(react@19.0.0): dependencies: detect-node-es: 1.1.0 - react: 18.3.1 + react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - use-sidecar@1.1.3(@types/react@18.3.12)(react@18.3.1): + use-sidecar@1.1.3(@types/react@19.0.10)(react@19.0.0): dependencies: detect-node-es: 1.1.0 - react: 18.3.1 + react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 18.3.12 + '@types/react': 19.0.10 - use-sync-external-store@1.2.2(react@18.3.1): + use-sync-external-store@1.2.2(react@19.0.0): dependencies: - react: 18.3.1 + react: 19.0.0 util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - utils-merge@1.0.1: {} uuid@7.0.3: {} - uuid@8.3.2: {} - validate-npm-package-name@5.0.1: {} vary@1.1.2: {} - vfile-location@4.1.0: - dependencies: - '@types/unist': 2.0.11 - vfile: 5.3.7 - vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 vfile: 6.0.3 - vfile-message@3.1.4: - dependencies: - '@types/unist': 2.0.11 - unist-util-stringify-position: 3.0.3 - vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 - vfile@5.3.7: - dependencies: - '@types/unist': 2.0.11 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - vfile@6.0.3: dependencies: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0): + vite@6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1): dependencies: - esbuild: 0.21.5 - postcss: 8.4.49 - rollup: 4.27.4 + esbuild: 0.25.1 + postcss: 8.5.3 + rollup: 4.35.0 optionalDependencies: '@types/node': 20.17.7 fsevents: 2.3.3 + jiti: 1.21.6 lightningcss: 1.28.1 terser: 5.36.0 + yaml: 2.6.1 - vitefu@1.0.3(vite@5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0)): + vitefu@1.0.6(vite@6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1)): optionalDependencies: - vite: 5.4.11(@types/node@20.17.7)(lightningcss@1.28.1)(terser@5.36.0) + vite: 6.2.2(@types/node@20.17.7)(jiti@1.21.6)(lightningcss@1.28.1)(terser@5.36.0)(yaml@2.6.1) vlq@1.0.1: {} @@ -17545,18 +16757,10 @@ snapshots: dependencies: defaults: 1.0.4 - web-encoding@1.1.5: - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - web-namespaces@2.0.1: {} web-streams-polyfill@3.3.3: {} - web-vitals@3.5.2: {} - webidl-conversions@3.0.1: {} webidl-conversions@4.0.2: {} @@ -17584,30 +16788,10 @@ snapshots: which-pm-runs@1.1.0: {} - which-pm@3.0.0: - dependencies: - load-yaml-file: 0.2.0 - - which-typed-array@1.1.15: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - widest-line@5.0.0: dependencies: string-width: 7.2.0 @@ -17645,6 +16829,11 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + ws@6.2.3: dependencies: async-limiter: 1.0.1 @@ -17665,8 +16854,6 @@ snapshots: xmlbuilder@11.0.1: {} - xmlbuilder@14.0.0: {} - xmlbuilder@15.1.1: {} xtend@4.0.2: {} @@ -17677,7 +16864,7 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} + yallist@5.0.0: {} yaml-language-server@1.15.0: dependencies: @@ -17714,22 +16901,29 @@ snapshots: yocto-queue@1.1.1: {} - zod-to-json-schema@3.23.5(zod@3.23.8): + yocto-spinner@0.2.1: dependencies: - zod: 3.23.8 + yoctocolors: 2.1.1 + + yoctocolors@2.1.1: {} + + zod-to-json-schema@3.24.4(zod@3.24.2): + dependencies: + zod: 3.24.2 - zod-to-ts@1.2.0(typescript@5.7.2)(zod@3.23.8): + zod-to-ts@1.2.0(typescript@5.7.2)(zod@3.24.2): dependencies: typescript: 5.7.2 - zod: 3.23.8 + zod: 3.24.2 zod@3.23.8: {} - zustand@4.5.5(@types/react@18.3.12)(react@18.3.1): - dependencies: - use-sync-external-store: 1.2.2(react@18.3.1) + zod@3.24.2: {} + + zustand@5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.2.2(react@19.0.0)): optionalDependencies: - '@types/react': 18.3.12 - react: 18.3.1 + '@types/react': 19.0.10 + react: 19.0.0 + use-sync-external-store: 1.2.2(react@19.0.0) zwitch@2.0.4: {} From 87d55222ddee4e05df430363bd7a6460d4808603 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Mar 2025 15:33:11 -0400 Subject: [PATCH 048/106] wip codemod forward ref in apps --- apps/docs/src/components/ui/button.tsx | 21 +- apps/docs/src/components/ui/dropdown-menu.tsx | 124 +++--- .../app/(components)/navigation-menu.tsx | 15 +- .../components/ui/accordion.tsx | 14 +- .../components/ui/alert-dialog.tsx | 26 +- apps/expo-nativewind/components/ui/avatar.tsx | 39 +- apps/expo-nativewind/components/ui/button.tsx | 45 ++- apps/expo-nativewind/components/ui/card.tsx | 108 +++-- .../components/ui/checkbox.tsx | 13 +- .../components/ui/context-menu.tsx | 124 +++--- apps/expo-nativewind/components/ui/dialog.tsx | 60 +-- .../components/ui/dropdown-menu.tsx | 134 +++--- .../components/ui/hover-card.tsx | 15 +- apps/expo-nativewind/components/ui/input.tsx | 14 +- apps/expo-nativewind/components/ui/label.tsx | 17 +- .../expo-nativewind/components/ui/menubar.tsx | 152 ++++--- .../components/ui/navigation-menu.tsx | 86 ++-- .../expo-nativewind/components/ui/popover.tsx | 18 +- .../components/ui/progress.tsx | 19 +- .../components/ui/radio-group.tsx | 26 +- apps/expo-nativewind/components/ui/select.tsx | 72 ++-- .../components/ui/separator.tsx | 15 +- apps/expo-nativewind/components/ui/switch.tsx | 26 +- apps/expo-nativewind/components/ui/table.tsx | 92 +++-- apps/expo-nativewind/components/ui/tabs.tsx | 39 +- apps/expo-nativewind/components/ui/text.tsx | 31 +- .../components/ui/toggle-group.tsx | 36 +- apps/expo-nativewind/components/ui/toggle.tsx | 16 +- .../expo-nativewind/components/ui/tooltip.tsx | 17 +- .../components/ui/typography.tsx | 382 ++++++++++-------- apps/expo-stylesheet/components/ui/select.tsx | 72 ++-- .../src/components/NavigationMenuExample.tsx | 15 +- .../src/components/ui/accordion.tsx | 14 +- .../src/components/ui/alert-dialog.tsx | 102 ++--- .../src/components/ui/avatar.tsx | 39 +- .../src/components/ui/button.tsx | 45 ++- .../src/components/ui/card.tsx | 108 +++-- .../src/components/ui/checkbox.tsx | 13 +- .../src/components/ui/context-menu.tsx | 131 +++--- .../src/components/ui/dialog.tsx | 60 +-- .../src/components/ui/dropdown-menu.tsx | 132 +++--- .../src/components/ui/hover-card.tsx | 15 +- .../src/components/ui/input.tsx | 14 +- .../src/components/ui/label.tsx | 18 +- .../src/components/ui/menubar.tsx | 147 ++++--- .../src/components/ui/navigation-menu.tsx | 85 ++-- .../src/components/ui/popover.tsx | 17 +- .../src/components/ui/progress.tsx | 18 +- .../src/components/ui/radio-group.tsx | 26 +- .../src/components/ui/select.tsx | 71 ++-- .../src/components/ui/separator.tsx | 15 +- .../src/components/ui/switch.tsx | 26 +- .../src/components/ui/table.tsx | 92 +++-- .../src/components/ui/tabs.tsx | 39 +- .../src/components/ui/text.tsx | 31 +- .../src/components/ui/toggle-group.tsx | 36 +- .../src/components/ui/toggle.tsx | 16 +- .../src/components/ui/tooltip.tsx | 16 +- .../src/components/ui/typography.tsx | 382 ++++++++++-------- 59 files changed, 2183 insertions(+), 1408 deletions(-) diff --git a/apps/docs/src/components/ui/button.tsx b/apps/docs/src/components/ui/button.tsx index e6f5744d..58b4d5bc 100644 --- a/apps/docs/src/components/ui/button.tsx +++ b/apps/docs/src/components/ui/button.tsx @@ -37,14 +37,19 @@ export interface ButtonProps asChild?: boolean; } -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : 'button'; - return ( - - ); - } -); +const Button = ({ + ref, + className, + variant, + size, + asChild = false, + ...props +}: ButtonProps & { + ref?: React.RefObject; +}) => { + const Comp = asChild ? Slot : 'button'; + return ; +}; Button.displayName = 'Button'; export { Button, buttonVariants }; diff --git a/apps/docs/src/components/ui/dropdown-menu.tsx b/apps/docs/src/components/ui/dropdown-menu.tsx index 1c78269b..16672d3b 100644 --- a/apps/docs/src/components/ui/dropdown-menu.tsx +++ b/apps/docs/src/components/ui/dropdown-menu.tsx @@ -16,12 +16,17 @@ const DropdownMenuSub = DropdownMenuPrimitive.Sub; const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => ( +const DropdownMenuSubTrigger = ({ + ref, + className, + inset, + children, + ...props +}: React.ComponentPropsWithoutRef & { + inset?: boolean; +} & { + ref?: React.RefObject>; +}) => ( -)); +); DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName; -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DropdownMenuSubContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName; -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( +const DropdownMenuContent = ({ + ref, + className, + sideOffset = 4, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const DropdownMenuItem = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + inset?: boolean; +} & { + ref?: React.RefObject>; +}) => ( -)); +); DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( +const DropdownMenuCheckboxItem = ({ + ref, + className, + children, + checked, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( {children} -)); +); DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName; -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const DropdownMenuRadioItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( {children} -)); +); DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const DropdownMenuLabel = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + inset?: boolean; +} & { + ref?: React.RefObject>; +}) => ( -)); +); DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DropdownMenuSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes) => { diff --git a/apps/expo-nativewind/app/(components)/navigation-menu.tsx b/apps/expo-nativewind/app/(components)/navigation-menu.tsx index aa451ac0..b36bc578 100644 --- a/apps/expo-nativewind/app/(components)/navigation-menu.tsx +++ b/apps/expo-nativewind/app/(components)/navigation-menu.tsx @@ -153,10 +153,15 @@ const components: { title: string; href: string; description: string }[] = [ }, ]; -const ListItem = React.forwardRef< - TextRef, - React.ComponentPropsWithoutRef & { title: string; href: string } ->(({ className, title, children, ...props }, ref) => { +const ListItem = ({ + ref, + className, + title, + children, + ...props +}: React.ComponentPropsWithoutRef & { title: string; href: string } & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; ListItem.displayName = 'ListItem'; diff --git a/apps/expo-nativewind/components/ui/accordion.tsx b/apps/expo-nativewind/components/ui/accordion.tsx index 3c2c9a29..90069a2c 100644 --- a/apps/expo-nativewind/components/ui/accordion.tsx +++ b/apps/expo-nativewind/components/ui/accordion.tsx @@ -49,10 +49,14 @@ function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemPr ); } -const AccordionTrigger = React.forwardRef< - AccordionPrimitive.TriggerRef, - AccordionPrimitive.TriggerProps ->(({ className, children, ...props }, ref) => { +const AccordionTrigger = ({ + ref, + className, + children, + ...props +}: AccordionPrimitive.TriggerProps & { + ref?: React.RefObject; +}) => { const { isExpanded } = AccordionPrimitive.useItemContext(); return ( @@ -96,7 +100,7 @@ const AccordionTrigger = React.forwardRef< ); -}); +}; function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( diff --git a/apps/expo-nativewind/components/ui/alert-dialog.tsx b/apps/expo-nativewind/components/ui/alert-dialog.tsx index 06200d97..d4cb5daa 100644 --- a/apps/expo-nativewind/components/ui/alert-dialog.tsx +++ b/apps/expo-nativewind/components/ui/alert-dialog.tsx @@ -123,20 +123,26 @@ function AlertDialogDescription({ className, ...props }: AlertDialogPrimitive.De ); } -const AlertDialogAction = React.forwardRef< - AlertDialogPrimitive.ActionRef, - AlertDialogPrimitive.ActionProps ->(({ className, ...props }, ref) => ( +const AlertDialogAction = ({ + ref, + className, + ...props +}: AlertDialogPrimitive.ActionProps & { + ref?: React.RefObject; +}) => ( -)); +); AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; -const AlertDialogCancel = React.forwardRef< - AlertDialogPrimitive.CancelRef, - AlertDialogPrimitive.CancelProps ->(({ className, ...props }, ref) => ( +const AlertDialogCancel = ({ + ref, + className, + ...props +}: AlertDialogPrimitive.CancelProps & { + ref?: React.RefObject; +}) => ( -)); +); AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; export { diff --git a/apps/expo-nativewind/components/ui/avatar.tsx b/apps/expo-nativewind/components/ui/avatar.tsx index 81f7cee9..7810918b 100644 --- a/apps/expo-nativewind/components/ui/avatar.tsx +++ b/apps/expo-nativewind/components/ui/avatar.tsx @@ -6,34 +6,43 @@ const AvatarPrimitiveRoot = AvatarPrimitive.Root; const AvatarPrimitiveImage = AvatarPrimitive.Image; const AvatarPrimitiveFallback = AvatarPrimitive.Fallback; -const Avatar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const Avatar = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Avatar.displayName = AvatarPrimitiveRoot.displayName; -const AvatarImage = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const AvatarImage = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); AvatarImage.displayName = AvatarPrimitiveImage.displayName; -const AvatarFallback = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const AvatarFallback = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); AvatarFallback.displayName = AvatarPrimitiveFallback.displayName; export { Avatar, AvatarFallback, AvatarImage }; diff --git a/apps/expo-nativewind/components/ui/button.tsx b/apps/expo-nativewind/components/ui/button.tsx index 36985c46..a26332e9 100644 --- a/apps/expo-nativewind/components/ui/button.tsx +++ b/apps/expo-nativewind/components/ui/button.tsx @@ -60,28 +60,31 @@ const buttonTextVariants = cva( type ButtonProps = React.ComponentPropsWithoutRef & VariantProps; -const Button = React.forwardRef, ButtonProps>( - ({ className, variant, size, ...props }, ref) => { - return ( - >; +}) => { + return ( + + - - - ); - } -); + ref={ref} + role='button' + {...props} + /> + + ); +}; Button.displayName = 'Button'; export { Button, buttonTextVariants, buttonVariants }; diff --git a/apps/expo-nativewind/components/ui/card.tsx b/apps/expo-nativewind/components/ui/card.tsx index 57ee74fc..ddd2e818 100644 --- a/apps/expo-nativewind/components/ui/card.tsx +++ b/apps/expo-nativewind/components/ui/card.tsx @@ -4,63 +4,83 @@ import { TextClassContext } from '~/components/ui/text'; import type { TextRef, ViewRef } from '@rn-primitives/types'; import { cn } from '~/lib/utils'; -const Card = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) +const Card = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: ViewRef; +}) => ( + ); Card.displayName = 'Card'; -const CardHeader = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) -); +const CardHeader = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref: ViewRef; +}) => ; CardHeader.displayName = 'CardHeader'; -const CardTitle = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) +const CardTitle = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref: TextRef; +}) => ( + ); CardTitle.displayName = 'CardTitle'; -const CardDescription = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) -); +const CardDescription = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref: TextRef; +}) => ; CardDescription.displayName = 'CardDescription'; -const CardContent = React.forwardRef>( - ({ className, ...props }, ref) => ( - - - - ) +const CardContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref: ViewRef; +}) => ( + + + ); CardContent.displayName = 'CardContent'; -const CardFooter = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) +const CardFooter = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref: ViewRef; +}) => ( + ); CardFooter.displayName = 'CardFooter'; diff --git a/apps/expo-nativewind/components/ui/checkbox.tsx b/apps/expo-nativewind/components/ui/checkbox.tsx index 920feea3..85b64c81 100644 --- a/apps/expo-nativewind/components/ui/checkbox.tsx +++ b/apps/expo-nativewind/components/ui/checkbox.tsx @@ -4,10 +4,13 @@ import { Platform } from 'react-native'; import { Check } from '~/lib/icons/Check'; import { cn } from '~/lib/utils'; -const Checkbox = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const Checkbox = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; Checkbox.displayName = CheckboxPrimitive.Root.displayName; export { Checkbox }; diff --git a/apps/expo-nativewind/components/ui/context-menu.tsx b/apps/expo-nativewind/components/ui/context-menu.tsx index fc951503..e12554bb 100644 --- a/apps/expo-nativewind/components/ui/context-menu.tsx +++ b/apps/expo-nativewind/components/ui/context-menu.tsx @@ -14,12 +14,17 @@ const ContextMenuGroup = ContextMenuPrimitive.Group; const ContextMenuSub = ContextMenuPrimitive.Sub; const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup; -const ContextMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => { +const ContextMenuSubTrigger = ({ + ref, + className, + inset, + children, + ...props +}: React.ComponentPropsWithoutRef & { + inset?: boolean; +} & { + ref?: React.RefObject>; +}) => { const { open } = ContextMenuPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( @@ -44,13 +49,16 @@ const ContextMenuSubTrigger = React.forwardRef< ); -}); +}; ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName; -const ContextMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const ContextMenuSubContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = ContextMenuPrimitive.useSubContext(); return ( ); -}); +}; ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName; -const ContextMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - overlayStyle?: StyleProp; - overlayClassName?: string; - portalHost?: string; - } ->(({ className, overlayClassName, overlayStyle, portalHost, ...props }, ref) => { +const ContextMenuContent = ({ + ref, + className, + overlayClassName, + overlayStyle, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + overlayStyle?: StyleProp; + overlayClassName?: string; + portalHost?: string; +} & { + ref?: React.RefObject>; +}) => { const { open } = ContextMenuPrimitive.useRootContext(); return ( @@ -106,15 +120,19 @@ const ContextMenuContent = React.forwardRef< ); -}); +}; ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName; -const ContextMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const ContextMenuItem = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + inset?: boolean; +} & { + ref?: React.RefObject>; +}) => ( -)); +); ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName; -const ContextMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const ContextMenuCheckboxItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName; -const ContextMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const ContextMenuRadioItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName; -const ContextMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const ContextMenuLabel = ({ ref, className, inset, ...props }) => ( -)); +); ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName; -const ContextMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const ContextMenuSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName; const ContextMenuShortcut = ({ diff --git a/apps/expo-nativewind/components/ui/dialog.tsx b/apps/expo-nativewind/components/ui/dialog.tsx index 7347328c..75648fb8 100644 --- a/apps/expo-nativewind/components/ui/dialog.tsx +++ b/apps/expo-nativewind/components/ui/dialog.tsx @@ -13,10 +13,13 @@ const DialogPortal = DialogPrimitive.Portal; const DialogClose = DialogPrimitive.Close; -const DialogOverlayWeb = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const DialogOverlayWeb = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = DialogPrimitive.useRootContext(); return ( ); -}); +}; DialogOverlayWeb.displayName = 'DialogOverlayWeb'; -const DialogOverlayNative = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { +const DialogOverlayNative = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; DialogOverlayNative.displayName = 'DialogOverlayNative'; @@ -58,10 +65,7 @@ const DialogOverlay = Platform.select({ default: DialogOverlayNative, }); -const DialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, children, portalHost, ...props }, ref) => { +const DialogContent = ({ ref, className, children, portalHost, ...props }) => { const { open } = DialogPrimitive.useRootContext(); return ( @@ -92,7 +96,7 @@ const DialogContent = React.forwardRef< ); -}); +}; DialogContent.displayName = DialogPrimitive.Content.displayName; const DialogHeader = ({ className, ...props }: React.ComponentPropsWithoutRef) => ( @@ -108,10 +112,13 @@ const DialogFooter = ({ className, ...props }: React.ComponentPropsWithoutRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DialogTitle = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DialogTitle.displayName = DialogPrimitive.Title.displayName; -const DialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DialogDescription = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DialogDescription.displayName = DialogPrimitive.Description.displayName; export { diff --git a/apps/expo-nativewind/components/ui/dropdown-menu.tsx b/apps/expo-nativewind/components/ui/dropdown-menu.tsx index 3b09aab2..c5814dd0 100644 --- a/apps/expo-nativewind/components/ui/dropdown-menu.tsx +++ b/apps/expo-nativewind/components/ui/dropdown-menu.tsx @@ -20,12 +20,17 @@ const DropdownMenuSub = DropdownMenuPrimitive.Sub; const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => { +const DropdownMenuSubTrigger = ({ + ref, + className, + inset, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => { const { open } = DropdownMenuPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( @@ -50,13 +55,16 @@ const DropdownMenuSubTrigger = React.forwardRef< ); -}); +}; DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName; -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const DropdownMenuSubContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref: React.RefObject>; +}) => { const { open } = DropdownMenuPrimitive.useSubContext(); return ( ); -}); +}; DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName; -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - overlayStyle?: StyleProp; - overlayClassName?: string; - portalHost?: string; - } ->(({ className, overlayClassName, overlayStyle, portalHost, ...props }, ref) => { +const DropdownMenuContent = ({ + ref, + className, + overlayClassName, + overlayStyle, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + overlayStyle?: StyleProp; + overlayClassName?: string; + portalHost?: string; +} & { + ref?: React.RefObject>; +}) => { const { open } = DropdownMenuPrimitive.useRootContext(); return ( @@ -112,15 +126,19 @@ const DropdownMenuContent = React.forwardRef< ); -}); +}; DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const DropdownMenuItem = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => ( -)); +); DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( +const DropdownMenuCheckboxItem = ({ + ref, + className, + children, + checked, + ...props +}: React.ComponentPropsWithoutRef & { + ref: React.RefObject>; +}) => ( <>{children} -)); +); DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName; -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const DropdownMenuRadioItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref: React.RefObject>; +}) => ( <>{children} -)); +); DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const DropdownMenuLabel = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => ( -)); +); DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DropdownMenuSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref: React.RefObject>; +}) => ( -)); +); DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; const DropdownMenuShortcut = ({ diff --git a/apps/expo-nativewind/components/ui/hover-card.tsx b/apps/expo-nativewind/components/ui/hover-card.tsx index 895eee6c..09cd57d3 100644 --- a/apps/expo-nativewind/components/ui/hover-card.tsx +++ b/apps/expo-nativewind/components/ui/hover-card.tsx @@ -9,10 +9,15 @@ const HoverCard = HoverCardPrimitive.Root; const HoverCardTrigger = HoverCardPrimitive.Trigger; -const HoverCardContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, align = 'center', sideOffset = 4, ...props }, ref) => { +const HoverCardContent = ({ + ref, + className, + align = 'center', + sideOffset = 4, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = HoverCardPrimitive.useRootContext(); return ( @@ -39,7 +44,7 @@ const HoverCardContent = React.forwardRef< ); -}); +}; HoverCardContent.displayName = HoverCardPrimitive.Content.displayName; export { HoverCard, HoverCardContent, HoverCardTrigger }; diff --git a/apps/expo-nativewind/components/ui/input.tsx b/apps/expo-nativewind/components/ui/input.tsx index afc652da..7d92e0b0 100644 --- a/apps/expo-nativewind/components/ui/input.tsx +++ b/apps/expo-nativewind/components/ui/input.tsx @@ -2,10 +2,14 @@ import * as React from 'react'; import { TextInput } from 'react-native'; import { cn } from '~/lib/utils'; -const Input = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, placeholderClassName, ...props }, ref) => { +const Input = ({ + ref, + className, + placeholderClassName, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; Input.displayName = 'Input'; diff --git a/apps/expo-nativewind/components/ui/label.tsx b/apps/expo-nativewind/components/ui/label.tsx index 9a094190..f7b873ed 100644 --- a/apps/expo-nativewind/components/ui/label.tsx +++ b/apps/expo-nativewind/components/ui/label.tsx @@ -2,10 +2,17 @@ import * as LabelPrimitive from '@rn-primitives/label'; import * as React from 'react'; import { cn } from '~/lib/utils'; -const Label = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, onPress, onLongPress, onPressIn, onPressOut, ...props }, ref) => ( +const Label = ({ + ref, + className, + onPress, + onLongPress, + onPressIn, + onPressOut, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Label.displayName = LabelPrimitive.Root.displayName; export { Label }; diff --git a/apps/expo-nativewind/components/ui/menubar.tsx b/apps/expo-nativewind/components/ui/menubar.tsx index c36e488a..4c07fa2c 100644 --- a/apps/expo-nativewind/components/ui/menubar.tsx +++ b/apps/expo-nativewind/components/ui/menubar.tsx @@ -18,10 +18,13 @@ const MenubarSub = MenubarPrimitive.Sub; const MenubarRadioGroup = MenubarPrimitive.RadioGroup; -const Menubar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const Menubar = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Menubar.displayName = MenubarPrimitive.Root.displayName; -const MenubarTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const MenubarTrigger = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = MenubarPrimitive.useRootContext(); const { value: itemValue } = MenubarPrimitive.useMenuContext(); @@ -51,15 +57,20 @@ const MenubarTrigger = React.forwardRef< {...props} /> ); -}); +}; MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName; -const MenubarSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => { +const MenubarSubTrigger = ({ + ref, + className, + inset, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => { const { open } = MenubarPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( @@ -84,13 +95,16 @@ const MenubarSubTrigger = React.forwardRef< ); -}); +}; MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName; -const MenubarSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const MenubarSubContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = MenubarPrimitive.useSubContext(); return ( ); -}); +}; MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName; -const MenubarContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, portalHost, ...props }, ref) => { +const MenubarContent = ({ + ref, + className, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + portalHost?: string; +}) => { const { value } = MenubarPrimitive.useRootContext(); const { value: itemValue } = MenubarPrimitive.useMenuContext(); return ( @@ -129,15 +149,19 @@ const MenubarContent = React.forwardRef< /> ); -}); +}; MenubarContent.displayName = MenubarPrimitive.Content.displayName; -const MenubarItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const MenubarItem = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => ( -)); +); MenubarItem.displayName = MenubarPrimitive.Item.displayName; -const MenubarCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( +const MenubarCheckboxItem = ({ + ref, + className, + children, + checked, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName; -const MenubarRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const MenubarRadioItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName; -const MenubarLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const MenubarLabel = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => ( -)); +); MenubarLabel.displayName = MenubarPrimitive.Label.displayName; -const MenubarSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const MenubarSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName; const MenubarShortcut = ({ className, ...props }: React.ComponentPropsWithoutRef) => { diff --git a/apps/expo-nativewind/components/ui/navigation-menu.tsx b/apps/expo-nativewind/components/ui/navigation-menu.tsx index 7f9b986e..2bbcfea6 100644 --- a/apps/expo-nativewind/components/ui/navigation-menu.tsx +++ b/apps/expo-nativewind/components/ui/navigation-menu.tsx @@ -14,10 +14,14 @@ import Animated, { import { ChevronDown } from '~/lib/icons/ChevronDown'; import { cn } from '~/lib/utils'; -const NavigationMenu = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const NavigationMenu = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( } -)); +); NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName; -const NavigationMenuList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const NavigationMenuList = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName; const NavigationMenuItem = NavigationMenuPrimitive.Item; @@ -50,10 +57,14 @@ const navigationMenuTriggerStyle = cva( 'web:group web:inline-flex flex-row h-10 native:h-12 native:px-3 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium web:transition-colors web:hover:bg-accent active:bg-accent web:hover:text-accent-foreground web:focus:bg-accent web:focus:text-accent-foreground web:focus:outline-none web:disabled:pointer-events-none disabled:opacity-50 web:data-[active]:bg-accent/50 web:data-[state=open]:bg-accent/50' ); -const NavigationMenuTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { +const NavigationMenuTrigger = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = NavigationMenuPrimitive.useRootContext(); const { value: itemValue } = NavigationMenuPrimitive.useItemContext(); @@ -86,15 +97,20 @@ const NavigationMenuTrigger = React.forwardRef< ); -}); +}; NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName; -const NavigationMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - portalHost?: string; - } ->(({ className, children, portalHost, ...props }, ref) => { +const NavigationMenuContent = ({ + ref, + className, + children, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + portalHost?: string; +} & { + ref?: React.RefObject>; +}) => { const { value } = NavigationMenuPrimitive.useRootContext(); const { value: itemValue } = NavigationMenuPrimitive.useItemContext(); return ( @@ -119,15 +135,18 @@ const NavigationMenuContent = React.forwardRef< ); -}); +}; NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName; const NavigationMenuLink = NavigationMenuPrimitive.Link; -const NavigationMenuViewport = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const NavigationMenuViewport = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName; -const NavigationMenuIndicator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const NavigationMenuIndicator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = NavigationMenuPrimitive.useRootContext(); const { value: itemValue } = NavigationMenuPrimitive.useItemContext(); @@ -165,7 +187,7 @@ const NavigationMenuIndicator = React.forwardRef< ); -}); +}; NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName; export { diff --git a/apps/expo-nativewind/components/ui/popover.tsx b/apps/expo-nativewind/components/ui/popover.tsx index 0b9efbbe..ed4cfa40 100644 --- a/apps/expo-nativewind/components/ui/popover.tsx +++ b/apps/expo-nativewind/components/ui/popover.tsx @@ -9,10 +9,18 @@ const Popover = PopoverPrimitive.Root; const PopoverTrigger = PopoverPrimitive.Trigger; -const PopoverContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, align = 'center', sideOffset = 4, portalHost, ...props }, ref) => { +const PopoverContent = ({ + ref, + className, + align = 'center', + sideOffset = 4, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + portalHost?: string; +}) => { return ( @@ -33,7 +41,7 @@ const PopoverContent = React.forwardRef< ); -}); +}; PopoverContent.displayName = PopoverPrimitive.Content.displayName; export { Popover, PopoverContent, PopoverTrigger }; diff --git a/apps/expo-nativewind/components/ui/progress.tsx b/apps/expo-nativewind/components/ui/progress.tsx index d0dd32be..82196bb4 100644 --- a/apps/expo-nativewind/components/ui/progress.tsx +++ b/apps/expo-nativewind/components/ui/progress.tsx @@ -10,12 +10,17 @@ import Animated, { } from 'react-native-reanimated'; import { cn } from '~/lib/utils'; -const Progress = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - indicatorClassName?: string; - } ->(({ className, value, indicatorClassName, ...props }, ref) => { +const Progress = ({ + ref, + className, + value, + indicatorClassName, + ...props +}: React.ComponentPropsWithoutRef & { + indicatorClassName?: string; +} & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; Progress.displayName = ProgressPrimitive.Root.displayName; export { Progress }; diff --git a/apps/expo-nativewind/components/ui/radio-group.tsx b/apps/expo-nativewind/components/ui/radio-group.tsx index 89a57394..6c8a4ec1 100644 --- a/apps/expo-nativewind/components/ui/radio-group.tsx +++ b/apps/expo-nativewind/components/ui/radio-group.tsx @@ -3,20 +3,26 @@ import { View } from 'react-native'; import * as RadioGroupPrimitive from '@rn-primitives/radio-group'; import { cn } from '~/lib/utils'; -const RadioGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const RadioGroup = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; RadioGroup.displayName = RadioGroupPrimitive.Root.displayName; -const RadioGroupItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const RadioGroupItem = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName; export { RadioGroup, RadioGroupItem }; diff --git a/apps/expo-nativewind/components/ui/select.tsx b/apps/expo-nativewind/components/ui/select.tsx index a5c735fa..f6f87e32 100644 --- a/apps/expo-nativewind/components/ui/select.tsx +++ b/apps/expo-nativewind/components/ui/select.tsx @@ -15,10 +15,14 @@ const SelectGroup = SelectPrimitive.Group; const SelectValue = SelectPrimitive.Value; -const SelectTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const SelectTrigger = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( {children} -)); +); SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; /** @@ -74,10 +78,18 @@ const SelectScrollDownButton = ({ ); }; -const SelectContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, children, position = 'popper', portalHost, ...props }, ref) => { +const SelectContent = ({ + ref, + className, + children, + position = 'popper', + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + portalHost?: string; +}) => { const { open } = SelectPrimitive.useRootContext(); return ( @@ -114,13 +126,16 @@ const SelectContent = React.forwardRef< ); -}); +}; SelectContent.displayName = SelectPrimitive.Content.displayName; -const SelectLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const SelectLabel = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectLabel.displayName = SelectPrimitive.Label.displayName; -const SelectItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const SelectItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectItem.displayName = SelectPrimitive.Item.displayName; -const SelectSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const SelectSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectSeparator.displayName = SelectPrimitive.Separator.displayName; export { diff --git a/apps/expo-nativewind/components/ui/separator.tsx b/apps/expo-nativewind/components/ui/separator.tsx index 42063ad7..a25391d4 100644 --- a/apps/expo-nativewind/components/ui/separator.tsx +++ b/apps/expo-nativewind/components/ui/separator.tsx @@ -2,10 +2,15 @@ import * as React from 'react'; import * as SeparatorPrimitive from '@rn-primitives/separator'; import { cn } from '~/lib/utils'; -const Separator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => ( +const Separator = ({ + ref, + className, + orientation = 'horizontal', + decorative = true, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Separator.displayName = SeparatorPrimitive.Root.displayName; export { Separator }; diff --git a/apps/expo-nativewind/components/ui/switch.tsx b/apps/expo-nativewind/components/ui/switch.tsx index 7273b91f..2740c6f0 100644 --- a/apps/expo-nativewind/components/ui/switch.tsx +++ b/apps/expo-nativewind/components/ui/switch.tsx @@ -10,10 +10,13 @@ import Animated, { import { useColorScheme } from '~/lib/useColorScheme'; import { cn } from '~/lib/utils'; -const SwitchWeb = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const SwitchWeb = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SwitchWeb.displayName = 'SwitchWeb'; @@ -46,10 +49,13 @@ const RGB_COLORS = { }, } as const; -const SwitchNative = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const SwitchNative = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { colorScheme } = useColorScheme(); const translateX = useDerivedValue(() => (props.checked ? 18 : 0)); const animatedRootStyle = useAnimatedStyle(() => { @@ -86,7 +92,7 @@ const SwitchNative = React.forwardRef< ); -}); +}; SwitchNative.displayName = 'SwitchNative'; const Switch = Platform.select({ diff --git a/apps/expo-nativewind/components/ui/table.tsx b/apps/expo-nativewind/components/ui/table.tsx index 353bf8e2..3f570e5e 100644 --- a/apps/expo-nativewind/components/ui/table.tsx +++ b/apps/expo-nativewind/components/ui/table.tsx @@ -3,59 +3,75 @@ import * as TablePrimitive from '@rn-primitives/table'; import { cn } from '~/lib/utils'; import { TextClassContext } from '~/components/ui/text'; -const Table = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const Table = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Table.displayName = 'Table'; -const TableHeader = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableHeader = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableHeader.displayName = 'TableHeader'; -const TableBody = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, style, ...props }, ref) => ( +const TableBody = ({ + ref, + className, + style, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableBody.displayName = 'TableBody'; -const TableFooter = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableFooter = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( tr]:last:border-b-0', className)} {...props} /> -)); +); TableFooter.displayName = 'TableFooter'; -const TableRow = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableRow = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableRow.displayName = 'TableRow'; -const TableHead = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableHead = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableHead.displayName = 'TableHead'; -const TableCell = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableCell = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableCell.displayName = 'TableCell'; export { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow }; diff --git a/apps/expo-nativewind/components/ui/tabs.tsx b/apps/expo-nativewind/components/ui/tabs.tsx index 93a96852..d6a7b1fc 100644 --- a/apps/expo-nativewind/components/ui/tabs.tsx +++ b/apps/expo-nativewind/components/ui/tabs.tsx @@ -5,10 +5,13 @@ import { cn } from '~/lib/utils'; const Tabs = TabsPrimitive.Root; -const TabsList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TabsList = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TabsList.displayName = TabsPrimitive.List.displayName; -const TabsTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const TabsTrigger = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = TabsPrimitive.useRootContext(); return ( ); -}); +}; TabsTrigger.displayName = TabsPrimitive.Trigger.displayName; -const TabsContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TabsContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TabsContent.displayName = TabsPrimitive.Content.displayName; export { Tabs, TabsContent, TabsList, TabsTrigger }; diff --git a/apps/expo-nativewind/components/ui/text.tsx b/apps/expo-nativewind/components/ui/text.tsx index 4b3b5c22..5e64ff8b 100644 --- a/apps/expo-nativewind/components/ui/text.tsx +++ b/apps/expo-nativewind/components/ui/text.tsx @@ -6,19 +6,24 @@ import { cn } from '~/lib/utils'; const TextClassContext = React.createContext(undefined); -const Text = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const textClass = React.useContext(TextClassContext); - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Text = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const textClass = React.useContext(TextClassContext); + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Text.displayName = 'Text'; export { Text, TextClassContext }; diff --git a/apps/expo-nativewind/components/ui/toggle-group.tsx b/apps/expo-nativewind/components/ui/toggle-group.tsx index 48c6b6cf..c9fbad0e 100644 --- a/apps/expo-nativewind/components/ui/toggle-group.tsx +++ b/apps/expo-nativewind/components/ui/toggle-group.tsx @@ -8,11 +8,17 @@ import { cn } from '~/lib/utils'; const ToggleGroupContext = React.createContext | null>(null); -const ToggleGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, variant, size, children, ...props }, ref) => ( +const ToggleGroup = ({ + ref, + className, + variant, + size, + children, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps & { + ref?: React.RefObject>; + }) => ( {children} -)); +); ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName; @@ -34,11 +40,17 @@ function useToggleGroupContext() { return context; } -const ToggleGroupItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, children, variant, size, ...props }, ref) => { +const ToggleGroupItem = ({ + ref, + className, + children, + variant, + size, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps & { + ref?: React.RefObject>; + }) => { const context = useToggleGroupContext(); const { value } = ToggleGroupPrimitive.useRootContext(); @@ -68,7 +80,7 @@ const ToggleGroupItem = React.forwardRef< ); -}); +}; ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName; diff --git a/apps/expo-nativewind/components/ui/toggle.tsx b/apps/expo-nativewind/components/ui/toggle.tsx index b2421512..842f16a2 100644 --- a/apps/expo-nativewind/components/ui/toggle.tsx +++ b/apps/expo-nativewind/components/ui/toggle.tsx @@ -45,10 +45,16 @@ const toggleTextVariants = cva('text-sm native:text-base text-foreground font-me }, }); -const Toggle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & VariantProps ->(({ className, variant, size, ...props }, ref) => ( +const Toggle = ({ + ref, + className, + variant, + size, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps & { + ref?: React.RefObject>; + }) => ( -)); +); Toggle.displayName = TogglePrimitive.Root.displayName; diff --git a/apps/expo-nativewind/components/ui/tooltip.tsx b/apps/expo-nativewind/components/ui/tooltip.tsx index f5a0e11f..2116ee9e 100644 --- a/apps/expo-nativewind/components/ui/tooltip.tsx +++ b/apps/expo-nativewind/components/ui/tooltip.tsx @@ -8,10 +8,17 @@ import { cn } from '~/lib/utils'; const Tooltip = TooltipPrimitive.Root; const TooltipTrigger = TooltipPrimitive.Trigger; -const TooltipContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, sideOffset = 4, portalHost, ...props }, ref) => ( +const TooltipContent = ({ + ref, + className, + sideOffset = 4, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + portalHost?: string; +}) => ( -)); +); TooltipContent.displayName = TooltipPrimitive.Content.displayName; export { Tooltip, TooltipContent, TooltipTrigger }; diff --git a/apps/expo-nativewind/components/ui/typography.tsx b/apps/expo-nativewind/components/ui/typography.tsx index 3a1fa332..4c4ff640 100644 --- a/apps/expo-nativewind/components/ui/typography.tsx +++ b/apps/expo-nativewind/components/ui/typography.tsx @@ -4,200 +4,252 @@ import * as React from 'react'; import { Platform, Text as RNText } from 'react-native'; import { cn } from '~/lib/utils'; -const H1 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H1 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H1.displayName = 'H1'; -const H2 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H2 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H2.displayName = 'H2'; -const H3 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H3 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H3.displayName = 'H3'; -const H4 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H4 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H4.displayName = 'H4'; -const P = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const P = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; P.displayName = 'P'; -const BlockQuote = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const BlockQuote = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; BlockQuote.displayName = 'BlockQuote'; -const Code = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Code = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Code.displayName = 'Code'; -const Lead = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Lead = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Lead.displayName = 'Lead'; -const Large = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Large = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Large.displayName = 'Large'; -const Small = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Small = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Small.displayName = 'Small'; -const Muted = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Muted = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Muted.displayName = 'Muted'; diff --git a/apps/expo-stylesheet/components/ui/select.tsx b/apps/expo-stylesheet/components/ui/select.tsx index a3f58565..3801f448 100644 --- a/apps/expo-stylesheet/components/ui/select.tsx +++ b/apps/expo-stylesheet/components/ui/select.tsx @@ -14,10 +14,14 @@ const SelectGroup = SelectPrimitive.Group; const SelectValue = SelectPrimitive.Value; -const SelectTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ style, children, ...props }, ref) => ( +const SelectTrigger = ({ + ref, + style, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( {({ pressed }) => ( )} -)); +); SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; /** @@ -80,10 +84,18 @@ const SelectScrollDownButton = ({ ); }; -const SelectContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ style, children, position = 'popper', portalHost, ...props }, ref) => { +const SelectContent = ({ + ref, + style, + children, + position = 'popper', + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + portalHost?: string; +}) => { return ( ); -}); +}; SelectContent.displayName = SelectPrimitive.Content.displayName; -const SelectLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ style, ...props }, ref) => ( +const SelectLabel = ({ + ref, + style, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectLabel.displayName = SelectPrimitive.Label.displayName; -const SelectItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ style, children, ...props }, ref) => ( +const SelectItem = ({ + ref, + style, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectItem.displayName = SelectPrimitive.Item.displayName; -const SelectSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ style, ...props }, ref) => ( +const SelectSeparator = ({ + ref, + style, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectSeparator.displayName = SelectPrimitive.Separator.displayName; export { diff --git a/apps/nextjs-nativewind/src/components/NavigationMenuExample.tsx b/apps/nextjs-nativewind/src/components/NavigationMenuExample.tsx index a22ce4a1..c49a86d5 100644 --- a/apps/nextjs-nativewind/src/components/NavigationMenuExample.tsx +++ b/apps/nextjs-nativewind/src/components/NavigationMenuExample.tsx @@ -129,10 +129,15 @@ const components: { title: string; href: string; description: string }[] = [ }, ]; -const ListItem = React.forwardRef< - TextRef, - React.ComponentPropsWithoutRef & { title: string; href: string } ->(({ className, title, children, ...props }, ref) => { +const ListItem = ({ + ref, + className, + title, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; ListItem.displayName = 'ListItem'; diff --git a/apps/nextjs-nativewind/src/components/ui/accordion.tsx b/apps/nextjs-nativewind/src/components/ui/accordion.tsx index ef2d5e47..4286f99f 100644 --- a/apps/nextjs-nativewind/src/components/ui/accordion.tsx +++ b/apps/nextjs-nativewind/src/components/ui/accordion.tsx @@ -51,10 +51,14 @@ function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemPr ); } -const AccordionTrigger = React.forwardRef< - AccordionPrimitive.TriggerRef, - AccordionPrimitive.TriggerProps ->(({ className, children, ...props }, ref) => { +const AccordionTrigger = ({ + ref, + className, + children, + ...props +}: AccordionPrimitive.TriggerProps & { + ref?: React.RefObject; +}) => { const { isExpanded } = AccordionPrimitive.useItemContext(); return ( @@ -96,7 +100,7 @@ const AccordionTrigger = React.forwardRef< ); -}); +}; function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( diff --git a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx index 6cf7f0cd..2c045d2c 100644 --- a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx +++ b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx @@ -40,54 +40,52 @@ function AlertDialogOverlay({ ); } -const AlertDialogContent = React.forwardRef( - ( - { - className, - native: { portalHost, ...nativeProp } = {}, - ...props - }: Omit & { - native?: AlertDialogPrimitive.ContentProps['native'] & { portalHost?: string }; - }, - ref - ) => { - return ( - - {/* {Platform.OS === 'web' ? ( */} - {/* <> */} - +const AlertDialogContent = ({ + ref, + className, + native: { portalHost, ...nativeProp } = {}, + ...props +}: Omit & { + native?: AlertDialogPrimitive.ContentProps['native'] & { portalHost?: string }; +} & { + ref?: React.RefObject>; +}) => { + return ( + + {/* {Platform.OS === 'web' ? ( */} + {/* <> */} + + + {/* + ) : ( + - {/* - ) : ( - - - - )} */} - - ); - } -); + + )} */} + + ); +}; const AlertDialogHeader = ({ className, @@ -130,20 +128,26 @@ function AlertDialogDescription({ className, ...props }: AlertDialogPrimitive.De ); } -const AlertDialogAction = React.forwardRef< - AlertDialogPrimitive.ActionRef, - AlertDialogPrimitive.ActionProps ->(({ className, ...props }, ref) => ( +const AlertDialogAction = ({ + ref, + className, + ...props +}: AlertDialogPrimitive.ActionProps & { + ref: React.RefObject; +}) => ( -)); +); AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; -const AlertDialogCancel = React.forwardRef< - AlertDialogPrimitive.CancelRef, - AlertDialogPrimitive.CancelProps ->(({ className, ...props }, ref) => ( +const AlertDialogCancel = ({ + ref, + className, + ...props +}: AlertDialogPrimitive.CancelProps & { + ref: React.RefObject; +}) => ( -)); +); AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; export { diff --git a/apps/nextjs-nativewind/src/components/ui/avatar.tsx b/apps/nextjs-nativewind/src/components/ui/avatar.tsx index f769fce4..245e1a28 100644 --- a/apps/nextjs-nativewind/src/components/ui/avatar.tsx +++ b/apps/nextjs-nativewind/src/components/ui/avatar.tsx @@ -8,34 +8,43 @@ const AvatarPrimitiveRoot = AvatarPrimitive.Root; const AvatarPrimitiveImage = AvatarPrimitive.Image; const AvatarPrimitiveFallback = AvatarPrimitive.Fallback; -const Avatar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const Avatar = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Avatar.displayName = AvatarPrimitiveRoot.displayName; -const AvatarImage = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const AvatarImage = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); AvatarImage.displayName = AvatarPrimitiveImage.displayName; -const AvatarFallback = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const AvatarFallback = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); AvatarFallback.displayName = AvatarPrimitiveFallback.displayName; export { Avatar, AvatarFallback, AvatarImage }; diff --git a/apps/nextjs-nativewind/src/components/ui/button.tsx b/apps/nextjs-nativewind/src/components/ui/button.tsx index 3b1ada47..af45b347 100644 --- a/apps/nextjs-nativewind/src/components/ui/button.tsx +++ b/apps/nextjs-nativewind/src/components/ui/button.tsx @@ -62,28 +62,31 @@ const buttonTextVariants = cva( type ButtonProps = React.ComponentPropsWithoutRef & VariantProps; -const Button = React.forwardRef, ButtonProps>( - ({ className, variant, size, ...props }, ref) => { - return ( - >; +}) => { + return ( + + - - - ); - } -); + ref={ref} + role='button' + {...props} + /> + + ); +}; Button.displayName = 'Button'; export { Button, buttonTextVariants, buttonVariants }; diff --git a/apps/nextjs-nativewind/src/components/ui/card.tsx b/apps/nextjs-nativewind/src/components/ui/card.tsx index 1abb62e8..fcdf1818 100644 --- a/apps/nextjs-nativewind/src/components/ui/card.tsx +++ b/apps/nextjs-nativewind/src/components/ui/card.tsx @@ -6,63 +6,83 @@ import { TextClassContext } from '~/components/ui/text'; import type { TextRef, ViewRef } from '@rn-primitives/types'; import { cn } from '~/lib/utils'; -const Card = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) +const Card = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: ViewRef; +}) => ( + ); Card.displayName = 'Card'; -const CardHeader = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) -); +const CardHeader = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: ViewRef; +}) => ; CardHeader.displayName = 'CardHeader'; -const CardTitle = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) +const CardTitle = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: TextRef; +}) => ( + ); CardTitle.displayName = 'CardTitle'; -const CardDescription = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) -); +const CardDescription = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: TextRef; +}) => ; CardDescription.displayName = 'CardDescription'; -const CardContent = React.forwardRef>( - ({ className, ...props }, ref) => ( - - - - ) +const CardContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: ViewRef; +}) => ( + + + ); CardContent.displayName = 'CardContent'; -const CardFooter = React.forwardRef>( - ({ className, ...props }, ref) => ( - - ) +const CardFooter = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: ViewRef; +}) => ( + ); CardFooter.displayName = 'CardFooter'; diff --git a/apps/nextjs-nativewind/src/components/ui/checkbox.tsx b/apps/nextjs-nativewind/src/components/ui/checkbox.tsx index e0334e04..1414f95c 100644 --- a/apps/nextjs-nativewind/src/components/ui/checkbox.tsx +++ b/apps/nextjs-nativewind/src/components/ui/checkbox.tsx @@ -6,10 +6,13 @@ import { Platform } from 'react-native'; import { Check } from '~/lib/icons/Check'; import { cn } from '~/lib/utils'; -const Checkbox = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const Checkbox = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; Checkbox.displayName = CheckboxPrimitive.Root.displayName; export { Checkbox }; diff --git a/apps/nextjs-nativewind/src/components/ui/context-menu.tsx b/apps/nextjs-nativewind/src/components/ui/context-menu.tsx index 8a2cd635..cd93e19e 100644 --- a/apps/nextjs-nativewind/src/components/ui/context-menu.tsx +++ b/apps/nextjs-nativewind/src/components/ui/context-menu.tsx @@ -16,12 +16,17 @@ const ContextMenuGroup = ContextMenuPrimitive.Group; const ContextMenuSub = ContextMenuPrimitive.Sub; const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup; -const ContextMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => { +const ContextMenuSubTrigger = ({ + ref, + className, + inset, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => { const { open } = ContextMenuPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( @@ -46,13 +51,16 @@ const ContextMenuSubTrigger = React.forwardRef< ); -}); +}; ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName; -const ContextMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const ContextMenuSubContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = ContextMenuPrimitive.useSubContext(); return ( ); -}); +}; ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName; -const ContextMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - overlayStyle?: StyleProp; - overlayClassName?: string; - portalHost?: string; - } ->(({ className, overlayClassName, overlayStyle, portalHost, ...props }, ref) => { +const ContextMenuContent = ({ + ref, + className, + overlayClassName, + overlayStyle, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + overlayStyle?: StyleProp; + overlayClassName?: string; + portalHost?: string; +} & { + ref?: React.RefObject>; +}) => { const { open } = ContextMenuPrimitive.useRootContext(); return ( @@ -108,15 +122,18 @@ const ContextMenuContent = React.forwardRef< ); -}); +}; ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName; -const ContextMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const ContextMenuItem = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; + inset?: boolean; +}) => ( -)); +); ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName; -const ContextMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const ContextMenuCheckboxItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName; -const ContextMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const ContextMenuRadioItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName; -const ContextMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const ContextMenuLabel = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + inset?: boolean; + ref?: React.RefObject>; +}) => ( -)); +); ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName; -const ContextMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const ContextMenuSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName; const ContextMenuShortcut = ({ diff --git a/apps/nextjs-nativewind/src/components/ui/dialog.tsx b/apps/nextjs-nativewind/src/components/ui/dialog.tsx index 58b8b972..59b86507 100644 --- a/apps/nextjs-nativewind/src/components/ui/dialog.tsx +++ b/apps/nextjs-nativewind/src/components/ui/dialog.tsx @@ -15,10 +15,13 @@ const DialogPortal = DialogPrimitive.Portal; const DialogClose = DialogPrimitive.Close; -const DialogOverlayWeb = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const DialogOverlayWeb = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = DialogPrimitive.useRootContext(); return ( ); -}); +}; DialogOverlayWeb.displayName = 'DialogOverlayWeb'; -const DialogOverlayNative = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { +const DialogOverlayNative = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; DialogOverlayNative.displayName = 'DialogOverlayNative'; @@ -60,10 +67,7 @@ const DialogOverlay = Platform.select({ default: DialogOverlayNative, }); -const DialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, children, portalHost, ...props }, ref) => { +const DialogContent = ({ ref, className, children, portalHost, ...props }) => { const { open } = DialogPrimitive.useRootContext(); return ( @@ -94,7 +98,7 @@ const DialogContent = React.forwardRef< ); -}); +}; DialogContent.displayName = DialogPrimitive.Content.displayName; const DialogHeader = ({ className, ...props }: React.ComponentPropsWithoutRef) => ( @@ -110,10 +114,13 @@ const DialogFooter = ({ className, ...props }: React.ComponentPropsWithoutRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DialogTitle = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DialogTitle.displayName = DialogPrimitive.Title.displayName; -const DialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DialogDescription = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DialogDescription.displayName = DialogPrimitive.Description.displayName; export { diff --git a/apps/nextjs-nativewind/src/components/ui/dropdown-menu.tsx b/apps/nextjs-nativewind/src/components/ui/dropdown-menu.tsx index ddb33201..69721203 100644 --- a/apps/nextjs-nativewind/src/components/ui/dropdown-menu.tsx +++ b/apps/nextjs-nativewind/src/components/ui/dropdown-menu.tsx @@ -22,12 +22,17 @@ const DropdownMenuSub = DropdownMenuPrimitive.Sub; const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => { +const DropdownMenuSubTrigger = ({ + ref, + className, + inset, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +} & { + inset?: boolean; +}) => { const { open } = DropdownMenuPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( @@ -52,13 +57,16 @@ const DropdownMenuSubTrigger = React.forwardRef< ); -}); +}; DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName; -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const DropdownMenuSubContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = DropdownMenuPrimitive.useSubContext(); return ( ); -}); +}; DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName; -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - overlayStyle?: StyleProp; - overlayClassName?: string; - portalHost?: string; - } ->(({ className, overlayClassName, overlayStyle, portalHost, ...props }, ref) => { +const DropdownMenuContent = ({ + ref, + className, + overlayClassName, + overlayStyle, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + overlayStyle?: StyleProp; + overlayClassName?: string; + portalHost?: string; +} & { + ref?: React.RefObject>; +}) => { const { open } = DropdownMenuPrimitive.useRootContext(); return ( @@ -114,15 +128,18 @@ const DropdownMenuContent = React.forwardRef< ); -}); +}; DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const DropdownMenuItem = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; + inset?: boolean; +}) => ( -)); +); DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( +const DropdownMenuCheckboxItem = ({ + ref, + className, + children, + checked, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName; -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const DropdownMenuRadioItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const DropdownMenuLabel = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; + inset?: boolean; +}) => ( -)); +); DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const DropdownMenuSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; const DropdownMenuShortcut = ({ diff --git a/apps/nextjs-nativewind/src/components/ui/hover-card.tsx b/apps/nextjs-nativewind/src/components/ui/hover-card.tsx index f23c94f3..e5b8d8cf 100644 --- a/apps/nextjs-nativewind/src/components/ui/hover-card.tsx +++ b/apps/nextjs-nativewind/src/components/ui/hover-card.tsx @@ -11,10 +11,15 @@ const HoverCard = HoverCardPrimitive.Root; const HoverCardTrigger = HoverCardPrimitive.Trigger; -const HoverCardContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, align = 'center', sideOffset = 4, ...props }, ref) => { +const HoverCardContent = ({ + ref, + className, + align = 'center', + sideOffset = 4, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = HoverCardPrimitive.useRootContext(); return ( @@ -41,7 +46,7 @@ const HoverCardContent = React.forwardRef< ); -}); +}; HoverCardContent.displayName = HoverCardPrimitive.Content.displayName; export { HoverCard, HoverCardContent, HoverCardTrigger }; diff --git a/apps/nextjs-nativewind/src/components/ui/input.tsx b/apps/nextjs-nativewind/src/components/ui/input.tsx index 97a36fc3..4a9e5a82 100644 --- a/apps/nextjs-nativewind/src/components/ui/input.tsx +++ b/apps/nextjs-nativewind/src/components/ui/input.tsx @@ -4,10 +4,14 @@ import * as React from 'react'; import { TextInput } from 'react-native'; import { cn } from '~/lib/utils'; -const Input = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, placeholderClassName, ...props }, ref) => { +const Input = ({ + ref, + className, + placeholderClassName, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; Input.displayName = 'Input'; diff --git a/apps/nextjs-nativewind/src/components/ui/label.tsx b/apps/nextjs-nativewind/src/components/ui/label.tsx index ce727ef9..18ccae2d 100644 --- a/apps/nextjs-nativewind/src/components/ui/label.tsx +++ b/apps/nextjs-nativewind/src/components/ui/label.tsx @@ -4,10 +4,18 @@ import * as LabelPrimitive from '@rn-primitives/label'; import * as React from 'react'; import { cn } from '~/lib/utils'; -const Label = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { onFocus?: () => void } ->(({ className, onPress, onLongPress, onPressIn, onPressOut, onFocus, ...props }, ref) => ( +const Label = ({ + ref, + className, + onPress, + onLongPress, + onPressIn, + onPressOut, + onFocus, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Label.displayName = LabelPrimitive.Root.displayName; export { Label }; diff --git a/apps/nextjs-nativewind/src/components/ui/menubar.tsx b/apps/nextjs-nativewind/src/components/ui/menubar.tsx index eeeb57da..dc8023ab 100644 --- a/apps/nextjs-nativewind/src/components/ui/menubar.tsx +++ b/apps/nextjs-nativewind/src/components/ui/menubar.tsx @@ -20,10 +20,13 @@ const MenubarSub = MenubarPrimitive.Sub; const MenubarRadioGroup = MenubarPrimitive.RadioGroup; -const Menubar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const Menubar = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Menubar.displayName = MenubarPrimitive.Root.displayName; -const MenubarTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const MenubarTrigger = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = MenubarPrimitive.useRootContext(); const { value: itemValue } = MenubarPrimitive.useMenuContext(); @@ -53,15 +59,19 @@ const MenubarTrigger = React.forwardRef< {...props} /> ); -}); +}; MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName; -const MenubarSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => { +const MenubarSubTrigger = ({ + ref, + className, + inset, + children, + ...props +}: React.ComponentPropsWithoutRef & { + inset?: boolean; + ref?: React.RefObject>; +}) => { const { open } = MenubarPrimitive.useSubContext(); const Icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown; return ( @@ -86,13 +96,16 @@ const MenubarSubTrigger = React.forwardRef< ); -}); +}; MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName; -const MenubarSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const MenubarSubContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { open } = MenubarPrimitive.useSubContext(); return ( ); -}); +}; MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName; -const MenubarContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, portalHost, ...props }, ref) => { +const MenubarContent = ({ + ref, + className, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { portalHost?: string } & { + ref?: React.RefObject>; +}) => { const { value } = MenubarPrimitive.useRootContext(); const { value: itemValue } = MenubarPrimitive.useMenuContext(); return ( @@ -131,15 +148,18 @@ const MenubarContent = React.forwardRef< /> ); -}); +}; MenubarContent.displayName = MenubarPrimitive.Content.displayName; -const MenubarItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const MenubarItem = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; + inset?: boolean; +}) => ( -)); +); MenubarItem.displayName = MenubarPrimitive.Item.displayName; -const MenubarCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( +const MenubarCheckboxItem = ({ + ref, + className, + children, + checked, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName; -const MenubarRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const MenubarRadioItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( <>{children} -)); +); MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName; -const MenubarLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( +const MenubarLabel = ({ + ref, + className, + inset, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; + inset?: boolean; +}) => ( -)); +); MenubarLabel.displayName = MenubarPrimitive.Label.displayName; -const MenubarSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const MenubarSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName; const MenubarShortcut = ({ className, ...props }: React.ComponentPropsWithoutRef) => { diff --git a/apps/nextjs-nativewind/src/components/ui/navigation-menu.tsx b/apps/nextjs-nativewind/src/components/ui/navigation-menu.tsx index 10d958a9..27facc1f 100644 --- a/apps/nextjs-nativewind/src/components/ui/navigation-menu.tsx +++ b/apps/nextjs-nativewind/src/components/ui/navigation-menu.tsx @@ -7,10 +7,14 @@ import { Platform, View } from 'react-native'; import { ChevronDown } from '~/lib/icons/ChevronDown'; import { cn } from '~/lib/utils'; -const NavigationMenu = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const NavigationMenu = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( } -)); +); NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName; -const NavigationMenuList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const NavigationMenuList = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName; const NavigationMenuItem = NavigationMenuPrimitive.Item; @@ -43,10 +50,14 @@ const navigationMenuTriggerStyle = cva( 'web:group web:inline-flex flex-row h-10 native:h-12 native:px-3 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium web:transition-colors web:hover:bg-accent active:bg-accent web:hover:text-accent-foreground web:focus:bg-accent web:focus:text-accent-foreground web:focus:outline-none web:disabled:pointer-events-none disabled:opacity-50 web:data-[active]:bg-accent/50 web:data-[state=open]:bg-accent/50' ); -const NavigationMenuTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => { +const NavigationMenuTrigger = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = NavigationMenuPrimitive.useRootContext(); const { value: itemValue } = NavigationMenuPrimitive.useItemContext(); @@ -71,15 +82,19 @@ const NavigationMenuTrigger = React.forwardRef< ); -}); +}; NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName; -const NavigationMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - portalHost?: string; - } ->(({ className, children, portalHost, ...props }, ref) => { +const NavigationMenuContent = ({ + ref, + className, + children, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + portalHost?: string; + ref?: React.RefObject>; +}) => { const { value } = NavigationMenuPrimitive.useRootContext(); const { value: itemValue } = NavigationMenuPrimitive.useItemContext(); return ( @@ -99,15 +114,18 @@ const NavigationMenuContent = React.forwardRef< ); -}); +}; NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName; const NavigationMenuLink = NavigationMenuPrimitive.Link; -const NavigationMenuViewport = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const NavigationMenuViewport = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName; -const NavigationMenuIndicator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const NavigationMenuIndicator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = NavigationMenuPrimitive.useRootContext(); const { value: itemValue } = NavigationMenuPrimitive.useItemContext(); @@ -145,7 +166,7 @@ const NavigationMenuIndicator = React.forwardRef< ); -}); +}; NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName; export { diff --git a/apps/nextjs-nativewind/src/components/ui/popover.tsx b/apps/nextjs-nativewind/src/components/ui/popover.tsx index d8b9ef96..f4d0daaf 100644 --- a/apps/nextjs-nativewind/src/components/ui/popover.tsx +++ b/apps/nextjs-nativewind/src/components/ui/popover.tsx @@ -10,10 +10,17 @@ const Popover = PopoverPrimitive.Root; const PopoverTrigger = PopoverPrimitive.Trigger; -const PopoverContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, align = 'center', sideOffset = 4, portalHost, ...props }, ref) => { +const PopoverContent = ({ + ref, + className, + align = 'center', + sideOffset = 4, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + portalHost?: string; + ref?: React.RefObject>; +}) => { return ( @@ -32,7 +39,7 @@ const PopoverContent = React.forwardRef< ); -}); +}; PopoverContent.displayName = PopoverPrimitive.Content.displayName; export { Popover, PopoverContent, PopoverTrigger }; diff --git a/apps/nextjs-nativewind/src/components/ui/progress.tsx b/apps/nextjs-nativewind/src/components/ui/progress.tsx index aef1766a..9dc2febf 100644 --- a/apps/nextjs-nativewind/src/components/ui/progress.tsx +++ b/apps/nextjs-nativewind/src/components/ui/progress.tsx @@ -5,12 +5,16 @@ import * as React from 'react'; import { View } from 'react-native'; import { cn } from '~/lib/utils'; -const Progress = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - indicatorClassName?: string; - } ->(({ className, value, indicatorClassName, ...props }, ref) => { +const Progress = ({ + ref, + className, + value, + indicatorClassName, + ...props +}: React.ComponentPropsWithoutRef & { + indicatorClassName?: string; + ref?: React.RefObject>; +}) => { return ( ); -}); +}; Progress.displayName = ProgressPrimitive.Root.displayName; export { Progress }; diff --git a/apps/nextjs-nativewind/src/components/ui/radio-group.tsx b/apps/nextjs-nativewind/src/components/ui/radio-group.tsx index a9c8907d..554d4e10 100644 --- a/apps/nextjs-nativewind/src/components/ui/radio-group.tsx +++ b/apps/nextjs-nativewind/src/components/ui/radio-group.tsx @@ -5,20 +5,26 @@ import { View } from 'react-native'; import * as RadioGroupPrimitive from '@rn-primitives/radio-group'; import { cn } from '~/lib/utils'; -const RadioGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const RadioGroup = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; RadioGroup.displayName = RadioGroupPrimitive.Root.displayName; -const RadioGroupItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const RadioGroupItem = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { return ( ); -}); +}; RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName; export { RadioGroup, RadioGroupItem }; diff --git a/apps/nextjs-nativewind/src/components/ui/select.tsx b/apps/nextjs-nativewind/src/components/ui/select.tsx index d82bc3d2..5ce56266 100644 --- a/apps/nextjs-nativewind/src/components/ui/select.tsx +++ b/apps/nextjs-nativewind/src/components/ui/select.tsx @@ -17,10 +17,14 @@ const SelectGroup = SelectPrimitive.Group; const SelectValue = SelectPrimitive.Value; -const SelectTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const SelectTrigger = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( {children} -)); +); SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; /** @@ -76,10 +80,17 @@ const SelectScrollDownButton = ({ ); }; -const SelectContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, children, position = 'popper', portalHost, ...props }, ref) => { +const SelectContent = ({ + ref, + className, + children, + position = 'popper', + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + portalHost?: string; + ref?: React.RefObject>; +}) => { const { open } = SelectPrimitive.useRootContext(); return ( @@ -114,13 +125,16 @@ const SelectContent = React.forwardRef< ); -}); +}; SelectContent.displayName = SelectPrimitive.Content.displayName; -const SelectLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const SelectLabel = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectLabel.displayName = SelectPrimitive.Label.displayName; -const SelectItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +const SelectItem = ({ + ref, + className, + children, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectItem.displayName = SelectPrimitive.Item.displayName; -const SelectSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const SelectSeparator = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SelectSeparator.displayName = SelectPrimitive.Separator.displayName; export { diff --git a/apps/nextjs-nativewind/src/components/ui/separator.tsx b/apps/nextjs-nativewind/src/components/ui/separator.tsx index 8486df5c..ee5bb3d1 100644 --- a/apps/nextjs-nativewind/src/components/ui/separator.tsx +++ b/apps/nextjs-nativewind/src/components/ui/separator.tsx @@ -4,10 +4,15 @@ import * as React from 'react'; import * as SeparatorPrimitive from '@rn-primitives/separator'; import { cn } from '~/lib/utils'; -const Separator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => ( +const Separator = ({ + ref, + className, + orientation = 'horizontal', + decorative = true, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Separator.displayName = SeparatorPrimitive.Root.displayName; export { Separator }; diff --git a/apps/nextjs-nativewind/src/components/ui/switch.tsx b/apps/nextjs-nativewind/src/components/ui/switch.tsx index 16a4dfe6..23c400ba 100644 --- a/apps/nextjs-nativewind/src/components/ui/switch.tsx +++ b/apps/nextjs-nativewind/src/components/ui/switch.tsx @@ -12,10 +12,13 @@ import Animated, { import { useColorScheme } from '~/lib/useColorScheme'; import { cn } from '~/lib/utils'; -const SwitchWeb = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const SwitchWeb = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); SwitchWeb.displayName = 'SwitchWeb'; @@ -48,10 +51,13 @@ const RGB_COLORS = { }, } as const; -const SwitchNative = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const SwitchNative = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { colorScheme } = useColorScheme(); const translateX = useDerivedValue(() => (props.checked ? 18 : 0)); const animatedRootStyle = useAnimatedStyle(() => { @@ -88,7 +94,7 @@ const SwitchNative = React.forwardRef< ); -}); +}; SwitchNative.displayName = 'SwitchNative'; const Switch = Platform.select({ diff --git a/apps/nextjs-nativewind/src/components/ui/table.tsx b/apps/nextjs-nativewind/src/components/ui/table.tsx index c031fb75..d36192db 100644 --- a/apps/nextjs-nativewind/src/components/ui/table.tsx +++ b/apps/nextjs-nativewind/src/components/ui/table.tsx @@ -5,59 +5,75 @@ import * as TablePrimitive from '@rn-primitives/table'; import { cn } from '~/lib/utils'; import { TextClassContext } from '~/components/ui/text'; -const Table = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const Table = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); Table.displayName = 'Table'; -const TableHeader = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableHeader = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableHeader.displayName = 'TableHeader'; -const TableBody = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, style, ...props }, ref) => ( +const TableBody = ({ + ref, + className, + style, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableBody.displayName = 'TableBody'; -const TableFooter = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableFooter = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( tr]:last:border-b-0', className)} {...props} /> -)); +); TableFooter.displayName = 'TableFooter'; -const TableRow = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableRow = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableRow.displayName = 'TableRow'; -const TableHead = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableHead = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableHead.displayName = 'TableHead'; -const TableCell = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TableCell = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TableCell.displayName = 'TableCell'; export { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow }; diff --git a/apps/nextjs-nativewind/src/components/ui/tabs.tsx b/apps/nextjs-nativewind/src/components/ui/tabs.tsx index eaf5a4f9..65f898a3 100644 --- a/apps/nextjs-nativewind/src/components/ui/tabs.tsx +++ b/apps/nextjs-nativewind/src/components/ui/tabs.tsx @@ -7,10 +7,13 @@ import { cn } from '~/lib/utils'; const Tabs = TabsPrimitive.Root; -const TabsList = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TabsList = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TabsList.displayName = TabsPrimitive.List.displayName; -const TabsTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => { +const TabsTrigger = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => { const { value } = TabsPrimitive.useRootContext(); return ( ); -}); +}; TabsTrigger.displayName = TabsPrimitive.Trigger.displayName; -const TabsContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( +const TabsContent = ({ + ref, + className, + ...props +}: React.ComponentPropsWithoutRef & { + ref?: React.RefObject>; +}) => ( -)); +); TabsContent.displayName = TabsPrimitive.Content.displayName; export { Tabs, TabsContent, TabsList, TabsTrigger }; diff --git a/apps/nextjs-nativewind/src/components/ui/text.tsx b/apps/nextjs-nativewind/src/components/ui/text.tsx index b438eeb1..c9bffeed 100644 --- a/apps/nextjs-nativewind/src/components/ui/text.tsx +++ b/apps/nextjs-nativewind/src/components/ui/text.tsx @@ -8,19 +8,24 @@ import { cn } from '~/lib/utils'; const TextClassContext = React.createContext(undefined); -const Text = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const textClass = React.useContext(TextClassContext); - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Text = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const textClass = React.useContext(TextClassContext); + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Text.displayName = 'Text'; export { Text, TextClassContext }; diff --git a/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx b/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx index 6c99dd9b..edc934aa 100644 --- a/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx +++ b/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx @@ -10,11 +10,17 @@ import { cn } from '~/lib/utils'; const ToggleGroupContext = React.createContext | null>(null); -const ToggleGroup = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, variant, size, children, ...props }, ref) => ( +const ToggleGroup = ({ + ref, + className, + variant, + size, + children, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps & { + ref?: React.RefObject>; + }) => ( {children} -)); +); ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName; @@ -36,11 +42,17 @@ function useToggleGroupContext() { return context; } -const ToggleGroupItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, children, variant, size, ...props }, ref) => { +const ToggleGroupItem = ({ + ref, + className, + children, + variant, + size, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps & { + ref?: React.RefObject>; + }) => { const context = useToggleGroupContext(); const { value } = ToggleGroupPrimitive.useRootContext(); @@ -70,7 +82,7 @@ const ToggleGroupItem = React.forwardRef< ); -}); +}; ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName; diff --git a/apps/nextjs-nativewind/src/components/ui/toggle.tsx b/apps/nextjs-nativewind/src/components/ui/toggle.tsx index 7a799fa4..4b759a3d 100644 --- a/apps/nextjs-nativewind/src/components/ui/toggle.tsx +++ b/apps/nextjs-nativewind/src/components/ui/toggle.tsx @@ -47,10 +47,16 @@ const toggleTextVariants = cva('text-sm native:text-base text-foreground font-me }, }); -const Toggle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & VariantProps ->(({ className, variant, size, ...props }, ref) => ( +const Toggle = ({ + ref, + className, + variant, + size, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps & { + ref?: React.RefObject>; + }) => ( -)); +); Toggle.displayName = TogglePrimitive.Root.displayName; diff --git a/apps/nextjs-nativewind/src/components/ui/tooltip.tsx b/apps/nextjs-nativewind/src/components/ui/tooltip.tsx index b3bd2a8f..643233f4 100644 --- a/apps/nextjs-nativewind/src/components/ui/tooltip.tsx +++ b/apps/nextjs-nativewind/src/components/ui/tooltip.tsx @@ -10,10 +10,16 @@ import { cn } from '~/lib/utils'; const Tooltip = TooltipPrimitive.Root; const TooltipTrigger = TooltipPrimitive.Trigger; -const TooltipContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { portalHost?: string } ->(({ className, sideOffset = 4, portalHost, ...props }, ref) => ( +const TooltipContent = ({ + ref, + className, + sideOffset = 4, + portalHost, + ...props +}: React.ComponentPropsWithoutRef & { + portalHost?: string; + ref?: React.RefObject>; +}) => ( -)); +); TooltipContent.displayName = TooltipPrimitive.Content.displayName; export { Tooltip, TooltipContent, TooltipTrigger }; diff --git a/apps/nextjs-nativewind/src/components/ui/typography.tsx b/apps/nextjs-nativewind/src/components/ui/typography.tsx index 2a3beee9..7ecb7768 100644 --- a/apps/nextjs-nativewind/src/components/ui/typography.tsx +++ b/apps/nextjs-nativewind/src/components/ui/typography.tsx @@ -6,200 +6,252 @@ import * as React from 'react'; import { Platform, Text as RNText } from 'react-native'; import { cn } from '~/lib/utils'; -const H1 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H1 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H1.displayName = 'H1'; -const H2 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H2 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H2.displayName = 'H2'; -const H3 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H3 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H3.displayName = 'H3'; -const H4 = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const H4 = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; H4.displayName = 'H4'; -const P = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const P = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; P.displayName = 'P'; -const BlockQuote = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const BlockQuote = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; BlockQuote.displayName = 'BlockQuote'; -const Code = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Code = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Code.displayName = 'Code'; -const Lead = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Lead = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Lead.displayName = 'Lead'; -const Large = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Large = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Large.displayName = 'Large'; -const Small = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Small = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Small.displayName = 'Small'; -const Muted = React.forwardRef( - ({ className, asChild = false, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - ); - } -); +const Muted = ({ + ref, + className, + asChild = false, + ...props +}: SlottableTextProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : RNText; + return ( + + ); +}; Muted.displayName = 'Muted'; From 8152f9b36de1d22d9d8ac9273063f6142498c6aa Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Mar 2025 15:33:44 -0400 Subject: [PATCH 049/106] wip codemod forward ref in apps forgotten one --- apps/nextjs-no-rn/src/components/ui/accordion.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/nextjs-no-rn/src/components/ui/accordion.tsx b/apps/nextjs-no-rn/src/components/ui/accordion.tsx index d004494f..7aad55f2 100644 --- a/apps/nextjs-no-rn/src/components/ui/accordion.tsx +++ b/apps/nextjs-no-rn/src/components/ui/accordion.tsx @@ -34,10 +34,14 @@ function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemPr ); } -const AccordionTrigger = React.forwardRef< - AccordionPrimitive.TriggerRef, - AccordionPrimitive.TriggerProps ->(({ className, children, ...props }, ref) => { +const AccordionTrigger = ({ + ref, + className, + children, + ...props +}: AccordionPrimitive.TriggerProps & { + ref?: React.RefObject; +}) => { return ( @@ -75,7 +79,7 @@ const AccordionTrigger = React.forwardRef< ); -}); +}; function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( From 28489be3a266a379f85e20acbca80dd9f27a8318 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Mar 2025 20:12:27 -0400 Subject: [PATCH 050/106] wip codemod forward ref in packages --- packages/accordion/src/index.ts | 1 - .../src/native/accordion-native.native.tsx | 231 ++--- .../accordion/src/native/accordion-native.tsx | 44 +- packages/accordion/src/native/index.ts | 13 +- packages/accordion/src/native/types.ts | 13 +- .../accordion/src/universal/accordion.tsx | 21 +- .../accordion/src/universal/accordion.web.tsx | 25 +- packages/accordion/src/universal/index.ts | 9 +- packages/accordion/src/universal/types.ts | 10 +- packages/accordion/src/web/accordion-web.tsx | 21 +- .../accordion/src/web/accordion-web.web.tsx | 93 +- packages/accordion/src/web/index.ts | 4 - packages/accordion/src/web/types.ts | 21 +- packages/alert-dialog/src/index.ts | 3 - .../src/native/alert-dialog-native.native.tsx | 273 +++--- .../src/native/alert-dialog-native.tsx | 56 +- packages/alert-dialog/src/native/index.ts | 7 - packages/alert-dialog/src/native/types.ts | 34 +- .../src/universal/alert-dialog.tsx | 37 +- .../src/universal/alert-dialog.web.tsx | 72 +- packages/alert-dialog/src/universal/index.ts | 3 - packages/alert-dialog/src/universal/types.ts | 7 - .../alert-dialog/src/web/alert-dialog-web.tsx | 80 +- .../src/web/alert-dialog-web.web.tsx | 81 +- packages/alert-dialog/src/web/index.ts | 7 - packages/alert-dialog/src/web/types.ts | 58 +- packages/aspect-ratio/src/aspect-ratio.tsx | 18 +- packages/avatar/src/avatar.tsx | 105 ++- packages/checkbox/src/checkbox.tsx | 144 +-- packages/checkbox/src/checkbox.web.tsx | 161 ++-- packages/collapsible/src/collapsible.tsx | 160 ++-- packages/collapsible/src/collapsible.web.tsx | 236 +++-- packages/context-menu/src/context-menu.tsx | 887 ++++++++++-------- .../context-menu/src/context-menu.web.tsx | 712 ++++++++------ packages/core/src/native/components.tsx | 27 +- packages/dialog/src/dialog.tsx | 295 +++--- packages/dialog/src/dialog.web.tsx | 301 +++--- packages/dropdown-menu/src/dropdown-menu.tsx | 830 ++++++++-------- .../dropdown-menu/src/dropdown-menu.web.tsx | 715 +++++++------- packages/hover-card/src/hover-card.tsx | 359 +++---- packages/hover-card/src/hover-card.web.tsx | 169 ++-- packages/label/src/label.tsx | 24 +- packages/label/src/label.web.tsx | 39 +- packages/menubar/src/menubar.tsx | 818 +++++++++------- packages/menubar/src/menubar.web.tsx | 701 ++++++++------ .../navigation-menu/src/navigation-menu.tsx | 352 ++++--- .../src/navigation-menu.web.tsx | 279 +++--- packages/popover/src/popover.tsx | 404 ++++---- packages/popover/src/popover.web.tsx | 284 +++--- packages/progress/src/progress.tsx | 72 +- packages/progress/src/progress.web.tsx | 43 +- packages/radio-group/src/radio-group.tsx | 140 +-- packages/radio-group/src/radio-group.web.tsx | 108 ++- packages/select/src/select.tsx | 566 ++++++----- packages/select/src/select.web.tsx | 434 +++++---- packages/separator/src/separator.tsx | 32 +- packages/slider/src/slider.tsx | 82 +- packages/slider/src/slider.web.tsx | 91 +- packages/slot/src/slot.tsx | 148 +-- packages/switch/src/switch.tsx | 86 +- packages/switch/src/switch.web.tsx | 84 +- packages/table/src/table.tsx | 84 +- packages/tabs/src/tabs.tsx | 179 ++-- packages/tabs/src/tabs.web.tsx | 125 ++- packages/toast/src/toast.tsx | 195 ++-- packages/toggle-group/src/toggle-group.tsx | 154 +-- .../toggle-group/src/toggle-group.web.tsx | 154 +-- packages/toggle/src/toggle.tsx | 62 +- packages/toggle/src/toggle.web.tsx | 38 +- packages/toolbar/src/toolbar.tsx | 189 ++-- packages/toolbar/src/toolbar.web.tsx | 196 ++-- packages/tooltip/src/tooltip.tsx | 273 +++--- packages/tooltip/src/tooltip.web.tsx | 256 ++--- packages/types/src/index.ts | 7 +- 74 files changed, 7104 insertions(+), 5938 deletions(-) diff --git a/packages/accordion/src/index.ts b/packages/accordion/src/index.ts index bffb6d0a..6022a803 100644 --- a/packages/accordion/src/index.ts +++ b/packages/accordion/src/index.ts @@ -14,5 +14,4 @@ export type { ItemProps, RootProps, TriggerProps, - TriggerRef, } from './universal/types'; diff --git a/packages/accordion/src/native/accordion-native.native.tsx b/packages/accordion/src/native/accordion-native.native.tsx index 212ca227..64918268 100644 --- a/packages/accordion/src/native/accordion-native.native.tsx +++ b/packages/accordion/src/native/accordion-native.native.tsx @@ -5,79 +5,61 @@ import type { GestureResponderEvent } from 'react-native'; import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; import { isItemExpanded } from '../utils/is-item-expanded'; -import type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; - -const Root = React.forwardRef( - ( - { - type, - disabled = false, - collapsible = true, - value: valueProp, - onValueChange: onValueChangeProps, - defaultValue, - ...viewProps - }, - ref - ) => { - const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = - useControllableState<(string | undefined) | string[]>({ - prop: valueProp, - defaultProp: getDefaultValue(defaultValue, type), - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); - - return ( - - - - ); - } -); +import type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; + +function Root({ + type, + disabled = false, + collapsible = true, + value: valueProp, + onValueChange: onValueChangeProps, + defaultValue, + ...viewProps +}: RootProps) { + const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: getDefaultValue(defaultValue, type), + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + + return ( + + + + ); +} Root.displayName = 'AccordionRootNative'; const ItemInternalContext = React.createContext<{ nativeID: string } | null>(null); -const Item = React.forwardRef( - ({ value: itemValue, disabled, ...viewProps }, ref) => { - const { rootValue } = useRootContext(); - const nativeID = React.useId(); - - return ( - - - - - - ); - } -); +function Item({ value: itemValue, disabled, ...viewProps }: ItemProps) { + const { rootValue } = useRootContext(); + const nativeID = React.useId(); + + return ( + + + + + + ); +} Item.displayName = 'AccordionItemNative'; @@ -91,81 +73,77 @@ function useItemInternalContext() { return context; } -const Header = React.forwardRef(({ ...props }, ref) => { +const Header = (props: HeaderProps) => { const { disabled: rootDisabled } = useRootContext(); const { disabled: itemDisabled, isExpanded } = useItemContext(); return ( ); -}); +}; Header.displayName = 'AccordionHeaderNative'; -const Trigger = React.forwardRef( - ({ onPress: onPressProp, disabled: disabledProp, ...props }, ref) => { - const { - disabled: rootDisabled, - type, - onRootValueChange, - rootValue, - collapsible, - } = useRootContext(); - const { disabled: itemDisabled, itemValue, isExpanded } = useItemContext(); - const { nativeID } = useItemInternalContext(); - - const onPress = React.useCallback( - (ev: GestureResponderEvent) => { - if (type === 'single') { - const newValue = collapsible - ? itemValue === rootValue - ? undefined - : itemValue - : itemValue; - onRootValueChange?.(newValue as string[] & string); - } - if (type === 'multiple') { - const rootToArray = toStringArray(rootValue); - const newValue = collapsible - ? rootToArray.includes(itemValue) - ? rootToArray.filter((val) => val !== itemValue) - : rootToArray.concat(itemValue) - : [...new Set(rootToArray.concat(itemValue))]; - onRootValueChange?.(newValue as string[] & string); - } - if (typeof onPressProp === 'function') { - onPressProp(ev); - } - }, - [onPressProp, itemValue, rootValue, collapsible, type, onRootValueChange] - ); +const Trigger = ({ onPress: onPressProp, disabled: disabledProp, ...props }: TriggerProps) => { + const { + disabled: rootDisabled, + type, + onRootValueChange, + rootValue, + collapsible, + } = useRootContext(); + const { disabled: itemDisabled, itemValue, isExpanded } = useItemContext(); + const { nativeID } = useItemInternalContext(); - const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); - - return ( - - ); - } -); + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + if (type === 'single') { + const newValue = collapsible + ? itemValue === rootValue + ? undefined + : itemValue + : itemValue; + onRootValueChange?.(newValue as string[] & string); + } + if (type === 'multiple') { + const rootToArray = toStringArray(rootValue); + const newValue = collapsible + ? rootToArray.includes(itemValue) + ? rootToArray.filter((val) => val !== itemValue) + : rootToArray.concat(itemValue) + : [...new Set(rootToArray.concat(itemValue))]; + onRootValueChange?.(newValue as string[] & string); + } + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onPressProp, itemValue, rootValue, collapsible, type, onRootValueChange] + ); + + const isDisabled = !!(disabledProp || rootDisabled || itemDisabled); + + return ( + + ); +}; Trigger.displayName = 'AccordionTriggerNative'; -const Content = React.forwardRef(({ forceMount, ...props }, ref) => { +const Content = ({ forceMount, ...props }: ContentProps) => { const { type } = useRootContext(); const { isExpanded } = useItemContext(); const { nativeID } = useItemInternalContext(); @@ -178,14 +156,13 @@ const Content = React.forwardRef(({ forceMount, ...pro return ( ); -}); +}; Content.displayName = 'AccordionContentNative'; diff --git a/packages/accordion/src/native/accordion-native.tsx b/packages/accordion/src/native/accordion-native.tsx index 0a7f5b8d..1d1efc77 100644 --- a/packages/accordion/src/native/accordion-native.tsx +++ b/packages/accordion/src/native/accordion-native.tsx @@ -1,62 +1,40 @@ -import * as React from 'react'; import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; -import type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; +import type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; -const Root = React.forwardRef(() => { +function Root(props: RootProps) { if (process.env.NODE_ENV === 'development') { console.log('`Root` from @rn-primitives/accordion/native is only supported on native.'); } return null; -}); +} -Root.displayName = 'AccordionRootNative'; - -const Item = React.forwardRef(() => { +function Item(props: ItemProps) { if (process.env.NODE_ENV === 'development') { console.log('`Item` from @rn-primitives/accordion/native is only supported on native.'); } return null; -}); - -Item.displayName = 'AccordionItemNative'; +} -const Header = React.forwardRef(() => { +function Header(props: HeaderProps) { if (process.env.NODE_ENV === 'development') { console.log('`Header` from @rn-primitives/accordion/native is only supported on native.'); } return null; -}); - -Header.displayName = 'AccordionHeaderNative'; +} -const Trigger = React.forwardRef(() => { +function Trigger(props: TriggerProps) { if (process.env.NODE_ENV === 'development') { console.log('`Trigger` from @rn-primitives/accordion/native is only supported on native.'); } return null; -}); +} -Trigger.displayName = 'AccordionTriggerNative'; - -const Content = React.forwardRef(() => { +function Content(props: ContentProps) { if (process.env.NODE_ENV === 'development') { console.log('`Content` from @rn-primitives/accordion/native is only supported on native.'); } return null; -}); - -Content.displayName = 'AccordionContentNative'; +} const useRootContext = () => { throw new Error( diff --git a/packages/accordion/src/native/index.ts b/packages/accordion/src/native/index.ts index d3323067..e620d9fe 100644 --- a/packages/accordion/src/native/index.ts +++ b/packages/accordion/src/native/index.ts @@ -8,15 +8,4 @@ export { useRootContext, } from './accordion-native'; -export type { - ContentProps, - ContentRef, - HeaderProps, - HeaderRef, - ItemProps, - ItemRef, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; +export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; diff --git a/packages/accordion/src/native/types.ts b/packages/accordion/src/native/types.ts index f712d20d..3eb02f84 100644 --- a/packages/accordion/src/native/types.ts +++ b/packages/accordion/src/native/types.ts @@ -1,6 +1,5 @@ -import type { PressableRefUniversal } from '@rn-primitives/core'; import type { PressableProps, ViewProps } from '@rn-primitives/core/dist/native'; -import type { PressableRef, Prettify, ViewRef } from '@rn-primitives/types'; +import type { Prettify } from '@rn-primitives/types'; import type { BaseContentProps, BaseHeaderProps, @@ -11,38 +10,28 @@ import type { type RootProps = Prettify; type RootPropsNativeOnly = ViewProps; -type RootRef = ViewRef; type ItemProps = Prettify; type ItemPropsNativeOnly = ViewProps; -type ItemRef = ViewRef; type HeaderProps = Prettify; type HeaderPropsNativeOnly = ViewProps; -type HeaderRef = ViewRef; type TriggerProps = Prettify; type TriggerPropsNativeOnly = PressableProps; -type TriggerRef = Prettify; type ContentProps = Prettify; type ContentPropsNativeOnly = ViewProps; -type ContentRef = ViewRef; export type { ContentProps, ContentPropsNativeOnly, - ContentRef, HeaderProps, HeaderPropsNativeOnly, - HeaderRef, ItemProps, ItemPropsNativeOnly, - ItemRef, RootProps, RootPropsNativeOnly, - RootRef, TriggerProps, TriggerPropsNativeOnly, - TriggerRef, }; diff --git a/packages/accordion/src/universal/accordion.tsx b/packages/accordion/src/universal/accordion.tsx index b748b3ad..8fadbb86 100644 --- a/packages/accordion/src/universal/accordion.tsx +++ b/packages/accordion/src/universal/accordion.tsx @@ -5,18 +5,11 @@ import { Item as ItemNative, Root as RootNative, Trigger as TriggerNative, - TriggerRef as TriggerNativeRef, + type TriggerProps as TriggerPropsNative, useItemContext, useRootContext, } from '../native'; -import type { - ContentProps, - HeaderProps, - ItemProps, - RootProps, - TriggerProps, - TriggerRef, -} from './types'; +import type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; function Root({ web: _web, native, ...props }: RootProps) { return ; @@ -34,12 +27,8 @@ function Item({ web: _web, native, ...props }: ItemProps) { return ; } -const Trigger = React.forwardRef( - ({ web: _web, native, ...props }, ref) => { - return ( - } {...props} {...native} /> - ); - } -); +function Trigger({ ref, web: _web, native, ...props }: TriggerProps) { + return ; +} export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion/src/universal/accordion.web.tsx b/packages/accordion/src/universal/accordion.web.tsx index 17758bb3..70ab03b7 100644 --- a/packages/accordion/src/universal/accordion.web.tsx +++ b/packages/accordion/src/universal/accordion.web.tsx @@ -9,14 +9,7 @@ import { useItemContext, useRootContext, } from '../web'; -import type { - ContentProps, - HeaderProps, - ItemProps, - RootProps, - TriggerProps, - TriggerRef, -} from './types'; +import type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; function Root({ native: _native, web, style, ...props }: RootProps) { return ( @@ -50,14 +43,12 @@ function Item({ native: _native, style, web, ...props }: ItemProps) { ); } -const Trigger = React.forwardRef( - ({ native: _native, web, ...props }, ref) => { - return ( - - - - ); - } -); +function Trigger({ native: _native, web, ...props }: TriggerProps) { + return ( + + + + ); +} export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion/src/universal/index.ts b/packages/accordion/src/universal/index.ts index 09726939..3fb8ae56 100644 --- a/packages/accordion/src/universal/index.ts +++ b/packages/accordion/src/universal/index.ts @@ -1,10 +1,3 @@ export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext } from './accordion'; -export type { - ContentProps, - HeaderProps, - ItemProps, - RootProps, - TriggerProps, - TriggerRef, -} from './types'; +export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; diff --git a/packages/accordion/src/universal/types.ts b/packages/accordion/src/universal/types.ts index 71cda2da..cba8ac1f 100644 --- a/packages/accordion/src/universal/types.ts +++ b/packages/accordion/src/universal/types.ts @@ -1,8 +1,4 @@ -import { - PressablePropsUniversal, - PressableRefUniversal, - ViewPropsUniversal, -} from '@rn-primitives/core'; +import { PressablePropsUniversal, ViewPropsUniversal } from '@rn-primitives/core'; import type { Prettify } from '@rn-primitives/types'; import type { BaseContentProps, @@ -60,6 +56,4 @@ type TriggerProps = BaseWithPlatformProps< > & PressablePropsUniversal; -type TriggerRef = PressableRefUniversal; - -export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; +export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps }; diff --git a/packages/accordion/src/web/accordion-web.tsx b/packages/accordion/src/web/accordion-web.tsx index aace28a6..0ef4ada7 100644 --- a/packages/accordion/src/web/accordion-web.tsx +++ b/packages/accordion/src/web/accordion-web.tsx @@ -1,34 +1,27 @@ import { Content, Header } from '@radix-ui/react-accordion'; -import * as React from 'react'; import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; -import type { ItemProps, ItemRef, RootProps, RootRef, TriggerProps, TriggerRef } from './types'; +import type { ItemProps, RootProps, TriggerProps } from './types'; -const Root = React.forwardRef(() => { +function Root(props: RootProps) { if (process.env.NODE_ENV === 'development') { console.log('`Root` from @rn-primitives/accordion/web is only supported on web.'); } return null; -}); +} -Root.displayName = 'AccordionRootWeb'; - -const Item = React.forwardRef(() => { +function Item(props: ItemProps) { if (process.env.NODE_ENV === 'development') { console.log('`Item` from @rn-primitives/accordion/web is only supported on web.'); } return null; -}); - -Item.displayName = 'AccordionItemWeb'; +} -const Trigger = React.forwardRef(() => { +function Trigger(props: TriggerProps) { if (process.env.NODE_ENV === 'development') { console.log('`Trigger` from @rn-primitives/accordion/web is only supported on web.'); } return null; -}); - -Trigger.displayName = 'AccordionTriggerWeb'; +} const useRootContext = () => { throw new Error( diff --git a/packages/accordion/src/web/accordion-web.web.tsx b/packages/accordion/src/web/accordion-web.web.tsx index 2545c2f2..ca8a2112 100644 --- a/packages/accordion/src/web/accordion-web.web.tsx +++ b/packages/accordion/src/web/accordion-web.web.tsx @@ -10,57 +10,48 @@ import * as React from 'react'; import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; import { isItemExpanded } from '../utils/is-item-expanded'; -import type { - ItemProps, - ItemRef, - MultipleProps, - RootProps, - RootRef, - SingleProps, - TriggerProps, - TriggerRef, -} from './types'; +import type { ItemProps, MultipleProps, RootProps, SingleProps, TriggerProps } from './types'; -const Root = React.forwardRef( - ( - { value: valueProp, onValueChange: onValueChangeProps, defaultValue, collapsible, ...props }, - ref - ) => { - const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = - useControllableState<(string | undefined) | string[]>({ - prop: valueProp, - defaultProp: getDefaultValue(defaultValue, props.type), - onChange: onValueChangeProps as (state: string | string[] | undefined) => void, - }); +function Root({ + value: valueProp, + onValueChange: onValueChangeProps, + defaultValue, + collapsible, + ...props +}: RootProps) { + const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: getDefaultValue(defaultValue, props.type), + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); - return ( - - - - ); - } -); + return ( + + + + ); +} Root.displayName = 'AccordionRootWeb'; -const Item = React.forwardRef((props, ref) => { +const Item = (props: ItemProps) => { const { rootValue } = useRootContext(); return ( @@ -71,16 +62,16 @@ const Item = React.forwardRef((props, ref) => { isExpanded: isItemExpanded(rootValue, props.value), }} > - + ); -}); +}; Item.displayName = 'AccordionItemWeb'; -const Trigger = React.forwardRef((props, ref) => { - return ; -}); +const Trigger = ({ ref, ...props }: TriggerProps) => { + return | undefined} {...props} />; +}; Trigger.displayName = 'AccordionTriggerWeb'; diff --git a/packages/accordion/src/web/index.ts b/packages/accordion/src/web/index.ts index 36f1b672..f18e75f3 100644 --- a/packages/accordion/src/web/index.ts +++ b/packages/accordion/src/web/index.ts @@ -10,13 +10,9 @@ export { export type { ContentProps, - ContentRef, HeaderProps, - HeaderRef, ItemProps, - ItemRef, RootProps, - RootRef, TriggerProps, TriggerRef, } from './types'; diff --git a/packages/accordion/src/web/types.ts b/packages/accordion/src/web/types.ts index 1fb201ac..679b4a36 100644 --- a/packages/accordion/src/web/types.ts +++ b/packages/accordion/src/web/types.ts @@ -8,42 +8,35 @@ import type { Trigger, } from '@radix-ui/react-accordion'; -type RootProps = React.ComponentPropsWithoutRef & { +type RootProps = React.ComponentProps & { collapsible?: boolean; }; + type RootPropsWebOnly = React.ComponentPropsWithRef<'div'>; -type RootRef = React.ElementRef; -type ItemProps = React.ComponentPropsWithoutRef; +type ItemProps = React.ComponentProps; type ItemPropsWebOnly = React.ComponentPropsWithRef<'div'>; -type ItemRef = React.ElementRef; -type HeaderProps = React.ComponentPropsWithoutRef; +type HeaderProps = React.ComponentProps; type HeaderPropsWebOnly = React.ComponentPropsWithRef<'h1'>; -type HeaderRef = React.ElementRef; -type TriggerProps = React.ComponentPropsWithoutRef; type TriggerPropsWebOnly = React.ComponentPropsWithRef<'button'>; -type TriggerRef = React.ElementRef & { press: () => void }; +type TriggerRef = React.ComponentRef & { press: () => void }; +type TriggerProps = Omit, 'ref'> & { ref?: TriggerRef }; -type ContentProps = React.ComponentPropsWithoutRef; +type ContentProps = React.ComponentProps; type ContentPropsWebOnly = React.ComponentPropsWithRef<'div'>; -type ContentRef = React.ElementRef; export type { ContentProps, ContentPropsWebOnly, - ContentRef, HeaderProps, HeaderPropsWebOnly, - HeaderRef, ItemProps, ItemPropsWebOnly, - ItemRef, MultipleProps, RootProps, RootPropsWebOnly, - RootRef, SingleProps, TriggerProps, TriggerPropsWebOnly, diff --git a/packages/alert-dialog/src/index.ts b/packages/alert-dialog/src/index.ts index df46fb38..18841621 100644 --- a/packages/alert-dialog/src/index.ts +++ b/packages/alert-dialog/src/index.ts @@ -13,9 +13,7 @@ export { export type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, DescriptionProps, OverlayProps, @@ -23,5 +21,4 @@ export type { RootProps, TitleProps, TriggerProps, - TriggerRef, } from './universal'; diff --git a/packages/alert-dialog/src/native/alert-dialog-native.native.tsx b/packages/alert-dialog/src/native/alert-dialog-native.native.tsx index 067441d7..138f48e9 100644 --- a/packages/alert-dialog/src/native/alert-dialog-native.native.tsx +++ b/packages/alert-dialog/src/native/alert-dialog-native.native.tsx @@ -6,21 +6,14 @@ import { BackHandler, type GestureResponderEvent } from 'react-native'; import { RootContext, useRootContext } from '../utils/contexts'; import type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, - ContentRef, DescriptionProps, - DescriptionRef, OverlayProps, - OverlayRef, PortalProps, RootProps, TitleProps, - TitleRef, TriggerProps, - TriggerRef, } from './types'; const RootInternalContext = React.createContext<{ nativeID: string } | null>(null); @@ -56,32 +49,29 @@ function useRootInternalContext() { return context; } -const Trigger = React.forwardRef( - ({ onPress: onPressProp, disabled, ...props }, ref) => { - const { open: value, onOpenChange } = useRootContext(); - - const onPress = React.useCallback( - (ev: GestureResponderEvent) => { - onOpenChange(!value); - if (typeof onPressProp === 'function') { - onPressProp(ev); - } - }, - [onOpenChange, onPressProp, value] - ); +const Trigger = ({ onPress: onPressProp, disabled, ...props }: TriggerProps) => { + const { open: value, onOpenChange } = useRootContext(); - return ( - - ); - } -); + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + onOpenChange(!value); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onOpenChange, onPressProp, value] + ); + + return ( + + ); +}; Trigger.displayName = 'AlertDialogTriggerNative'; @@ -104,146 +94,141 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { - const { open: value, onOpenChange } = useRootContext(); +const Overlay = ({ + forceMount, + onAccessibilityEscape: onAccessibilityEscapeProp, + ...props +}: OverlayProps) => { + const { open: value, onOpenChange } = useRootContext(); - const onAccessibilityEscape = React.useCallback(() => { - if (typeof onAccessibilityEscape === 'function') { - onAccessibilityEscape(); - } - onOpenChange(false); - }, [onAccessibilityEscapeProp, onOpenChange]); - - if (!forceMount) { - if (!value) { - return null; - } + const onAccessibilityEscape = React.useCallback(() => { + if (typeof onAccessibilityEscape === 'function') { + onAccessibilityEscape(); } + onOpenChange(false); + }, [onAccessibilityEscapeProp, onOpenChange]); - return ( - - ); + if (!forceMount) { + if (!value) { + return null; + } } -); + + return ; +}; Overlay.displayName = 'AlertDialogOverlayNative'; -const Content = React.forwardRef( - ({ forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props }, ref) => { - const { open: value, onOpenChange } = useRootContext(); - const { nativeID } = useRootInternalContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - onOpenChange(false); - return true; - }); - - return () => { - backHandler.remove(); - }; - }, []); - - const onAccessibilityEscape = React.useCallback(() => { - if (typeof onAccessibilityEscapeProp === 'function') { - onAccessibilityEscapeProp(); - } +const Content = ({ + forceMount, + onAccessibilityEscape: onAccessibilityEscapeProp, + ...props +}: ContentProps) => { + const { open: value, onOpenChange } = useRootContext(); + const { nativeID } = useRootInternalContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { onOpenChange(false); - }, [onAccessibilityEscapeProp, onOpenChange]); + return true; + }); - if (!forceMount) { - if (!value) { - return null; - } + return () => { + backHandler.remove(); + }; + }, []); + + const onAccessibilityEscape = React.useCallback(() => { + if (typeof onAccessibilityEscapeProp === 'function') { + onAccessibilityEscapeProp(); } + onOpenChange(false); + }, [onAccessibilityEscapeProp, onOpenChange]); - return ( - - ); + if (!forceMount) { + if (!value) { + return null; + } } -); + + return ( + + ); +}; Content.displayName = 'AlertDialogContentNative'; -const Cancel = React.forwardRef( - ({ onPress: onPressProp, disabled, ...props }, ref) => { - const { onOpenChange } = useRootContext(); - - const onPress = React.useCallback( - (ev: GestureResponderEvent) => { - onOpenChange(false); - if (typeof onPressProp === 'function') { - onPressProp(ev); - } - }, - [onOpenChange, onPressProp] - ); +const Cancel = ({ onPress: onPressProp, disabled, ...props }: CancelProps) => { + const { onOpenChange } = useRootContext(); - return ( - - ); - } -); + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + onOpenChange(false); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onOpenChange, onPressProp] + ); + + return ( + + ); +}; Cancel.displayName = 'AlertDialogCloseNative'; -const Action = React.forwardRef( - ({ onPress: onPressProp, disabled, ...props }, ref) => { - const { onOpenChange } = useRootContext(); - - const onPress = React.useCallback( - (ev: GestureResponderEvent) => { - onOpenChange(false); - if (typeof onPressProp === 'function') { - onPressProp(ev); - } - }, - [onOpenChange, onPressProp] - ); +const Action = ({ onPress: onPressProp, disabled, ...props }: ActionProps) => { + const { onOpenChange } = useRootContext(); - return ( - - ); - } -); + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + onOpenChange(false); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onOpenChange, onPressProp] + ); + + return ( + + ); +}; Action.displayName = 'AlertDialogActionNative'; -const Title = React.forwardRef((props, ref) => { +const Title = (props: TitleProps) => { const { nativeID } = useRootInternalContext(); - return ; -}); + return ; +}; Title.displayName = 'AlertDialogTitleNative'; -const Description = React.forwardRef((props, ref) => { +const Description = ({ ...props }: DescriptionProps) => { const { nativeID } = useRootInternalContext(); - return ; -}); + return ; +}; Description.displayName = 'AlertDialogDescriptionNative'; diff --git a/packages/alert-dialog/src/native/alert-dialog-native.tsx b/packages/alert-dialog/src/native/alert-dialog-native.tsx index 488ab657..85597123 100644 --- a/packages/alert-dialog/src/native/alert-dialog-native.tsx +++ b/packages/alert-dialog/src/native/alert-dialog-native.tsx @@ -1,104 +1,80 @@ -import * as React from 'react'; import { RootContextReturnType } from '../utils/contexts'; import type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, - ContentRef, DescriptionProps, - DescriptionRef, OverlayProps, - OverlayRef, PortalProps, RootProps, TitleProps, - TitleRef, TriggerProps, - TriggerRef, } from './types'; -function Root(_props: RootProps) { +function Root(props: RootProps) { if (process.env.NODE_ENV === 'development') { console.log('`Root` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; } -Root.displayName = 'AlertDialogRootNative'; - -const Trigger = React.forwardRef(() => { +function Trigger(props: TriggerProps) { if (process.env.NODE_ENV === 'development') { console.log('`Trigger` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; -}); - -Trigger.displayName = 'AlertDialogTriggerNative'; +} -function Portal(_props: PortalProps) { +function Portal(props: PortalProps) { if (process.env.NODE_ENV === 'development') { console.log('`Portal` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; } -const Overlay = React.forwardRef(() => { +function Overlay(props: OverlayProps) { if (process.env.NODE_ENV === 'development') { console.log('`Overlay` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; -}); - -Overlay.displayName = 'AlertDialogOverlayNative'; +} -const Content = React.forwardRef(() => { +function Content(props: ContentProps) { if (process.env.NODE_ENV === 'development') { console.log('`Content` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; -}); - -Content.displayName = 'AlertDialogContentNative'; +} -const Cancel = React.forwardRef(() => { +function Cancel(props: CancelProps) { if (process.env.NODE_ENV === 'development') { console.log('`Cancel` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; -}); - -Cancel.displayName = 'AlertDialogCloseNative'; +} -const Action = React.forwardRef(() => { +function Action(props: ActionProps) { if (process.env.NODE_ENV === 'development') { console.log('`Action` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; -}); - -Action.displayName = 'AlertDialogActionNative'; +} -const Title = React.forwardRef(() => { +function Title(props: TitleProps) { if (process.env.NODE_ENV === 'development') { console.log('`Title` from @rn-primitives/alert-dialog/native is only supported on native.'); } return null; -}); - -Title.displayName = 'AlertDialogTitleNative'; +} -const Description = React.forwardRef(() => { +function Description(props: DescriptionProps) { if (process.env.NODE_ENV === 'development') { console.log( '`Description` from @rn-primitives/alert-dialog/native is only supported on native.' ); } return null; -}); - -Description.displayName = 'AlertDialogDescriptionNative'; +} const useRootContext = () => { throw new Error( diff --git a/packages/alert-dialog/src/native/index.ts b/packages/alert-dialog/src/native/index.ts index 1551e37d..7be40449 100644 --- a/packages/alert-dialog/src/native/index.ts +++ b/packages/alert-dialog/src/native/index.ts @@ -13,19 +13,12 @@ export { export type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, - ContentRef, DescriptionProps, - DescriptionRef, OverlayProps, - OverlayRef, PortalProps, RootProps, TitleProps, - TitleRef, TriggerProps, - TriggerRef, } from './types'; diff --git a/packages/alert-dialog/src/native/types.ts b/packages/alert-dialog/src/native/types.ts index 9c62e23d..5fbde14e 100644 --- a/packages/alert-dialog/src/native/types.ts +++ b/packages/alert-dialog/src/native/types.ts @@ -1,10 +1,4 @@ -import type { - PressableProps, - PressableRef, - TextProps, - ViewProps, -} from '@rn-primitives/core/dist/native'; -import type { TextRef, ViewRef } from '@rn-primitives/types'; +import type { PressableProps, TextProps, ViewProps } from '@rn-primitives/core/dist/native'; import type { BaseAlertDialogActionProps, BaseAlertDialogCancelProps, @@ -18,69 +12,43 @@ import type { } from '../base-types'; type ActionPropsNativeOnly = PressableProps; -type ActionNativeOnlyRef = PressableRef; type CancelPropsNativeOnly = PressableProps; -type CancelNativeOnlyRef = PressableRef; type ContentPropsNativeOnly = ViewProps; -type ContentNativeOnlyRef = ViewRef; type DescriptionPropsNativeOnly = TextProps; -type DescriptionNativeOnlyRef = TextRef; type OverlayPropsNativeOnly = ViewProps; -type OverlayNativeOnlyRef = ViewRef; type PortalPropsNativeOnly = { hostName?: string; children?: React.ReactNode; }; type TitlePropsNativeOnly = TextProps; -type TitleNativeOnlyRef = TextRef; type TriggerPropsNativeOnly = PressableProps; -type TriggerNativeOnlyRef = PressableRef; type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; type ActionProps = ActionPropsNativeOnly & BaseAlertDialogActionProps; -type ActionRef = ActionNativeOnlyRef; type CancelProps = CancelPropsNativeOnly & BaseAlertDialogCancelProps; -type CancelRef = CancelNativeOnlyRef; type ContentProps = ContentPropsNativeOnly & BaseAlertDialogContentProps; -type ContentRef = ContentNativeOnlyRef; type DescriptionProps = DescriptionPropsNativeOnly & BaseAlertDialogDescriptionProps; -type DescriptionRef = DescriptionNativeOnlyRef; type OverlayProps = OverlayPropsNativeOnly & BaseAlertDialogOverlayProps; -type OverlayRef = OverlayNativeOnlyRef; type PortalProps = PortalPropsNativeOnly & BaseAlertDialogPortalProps; type TitleProps = TitlePropsNativeOnly & BaseAlertDialogTitleProps; -type TitleRef = TitleNativeOnlyRef; type TriggerProps = TriggerPropsNativeOnly & BaseAlertDialogTriggerProps; -type TriggerRef = TriggerNativeOnlyRef; export type { ActionProps, ActionPropsNativeOnly, - ActionRef, CancelProps, CancelPropsNativeOnly, - CancelRef, - ContentNativeOnlyRef, ContentProps, ContentPropsNativeOnly, - ContentRef, - DescriptionNativeOnlyRef, DescriptionProps, DescriptionPropsNativeOnly, - DescriptionRef, - OverlayNativeOnlyRef, OverlayProps, OverlayPropsNativeOnly, - OverlayRef, PortalProps, PortalPropsNativeOnly, RootProps, - TitleNativeOnlyRef, TitleProps, TitlePropsNativeOnly, - TitleRef, - TriggerNativeOnlyRef, TriggerProps, TriggerPropsNativeOnly, - TriggerRef, }; diff --git a/packages/alert-dialog/src/universal/alert-dialog.tsx b/packages/alert-dialog/src/universal/alert-dialog.tsx index befc447c..2d883ef2 100644 --- a/packages/alert-dialog/src/universal/alert-dialog.tsx +++ b/packages/alert-dialog/src/universal/alert-dialog.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; import { Action as ActionNative, - ActionRef as ActionNativeRef, + type ActionProps as ActionPropsNative, Cancel as CancelNative, - type CancelRef as CancelNativeRef, + type CancelProps as CancelPropsNative, Content as ContentNative, Description as DescriptionNative, Overlay as OverlayNative, @@ -11,14 +11,12 @@ import { Root as RootNative, Title as TitleNative, Trigger as TriggerNative, - type TriggerRef as TriggerNativeRef, + type TriggerProps as TriggerPropsNative, useRootContext, } from '../native'; import type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, DescriptionProps, OverlayProps, @@ -26,15 +24,14 @@ import type { RootProps, TitleProps, TriggerProps, - TriggerRef, } from './types'; function Root(props: RootProps) { return ; } -const Content = React.forwardRef(({ web: _web, native, ...props }, ref) => { - return ; -}); +const Content = ({ web: _web, native, ...props }: ContentProps) => { + return ; +}; function Description({ web: _web, native, ...props }: DescriptionProps) { return ; } @@ -51,25 +48,21 @@ function Title({ web: _web, native, ...props }: TitleProps) { return ; } -const Trigger = React.forwardRef( - ({ web: _web, native, ...props }, ref) => { - return ( - } {...props} {...native} /> - ); - } -); +function Trigger({ ref, web: _web, native, ...props }: TriggerProps) { + return ; +} Trigger.displayName = 'AlertDialogTriggerUniversal'; -const Action = React.forwardRef(({ web: _web, native, ...props }, ref) => { - return } {...props} {...native} />; -}); +function Action({ ref, web: _web, native, ...props }: ActionProps) { + return ; +} Action.displayName = 'AlertDialogActionUniversal'; -const Cancel = React.forwardRef(({ web: _web, native, ...props }, ref) => { - return } {...props} {...native} />; -}); +function Cancel({ ref, web: _web, native, ...props }: CancelProps) { + return ; +} Cancel.displayName = 'AlertDialogCancelUniversal'; diff --git a/packages/alert-dialog/src/universal/alert-dialog.web.tsx b/packages/alert-dialog/src/universal/alert-dialog.web.tsx index c0c964bd..1ff1783f 100644 --- a/packages/alert-dialog/src/universal/alert-dialog.web.tsx +++ b/packages/alert-dialog/src/universal/alert-dialog.web.tsx @@ -3,7 +3,6 @@ import * as React from 'react'; import { Action as ActionWeb, Cancel as CancelWeb, - ContentRef, Content as ContentWeb, Description as DescriptionWeb, Overlay as OverlayWeb, @@ -15,9 +14,7 @@ import { } from '../web'; import type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, DescriptionProps, OverlayProps, @@ -25,25 +22,22 @@ import type { RootProps, TitleProps, TriggerProps, - TriggerRef, } from './types'; function Root(props: RootProps) { return ; } -const Content = React.forwardRef( - ({ web, native: _native, style, ...props }, ref) => { - if (style) { - return ( - - - - ); - } - return ; +const Content = ({ web, native: _native, style, ...props }: ContentProps) => { + if (style) { + return ( + + + + ); } -); + return ; +}; Content.displayName = 'AlertDialogContentUniversal'; @@ -85,37 +79,31 @@ function Title({ web, native: _native, style, ...props }: TitleProps) { return ; } -const Trigger = React.forwardRef( - ({ native: _native, web, ...props }, ref) => { - return ( - - - - ); - } -); +const Trigger = ({ native: _native, web, ...props }: TriggerProps) => { + return ( + + + + ); +}; Trigger.displayName = 'AlertDialogTriggerUniversal'; -const Action = React.forwardRef( - ({ native: _native, web, ...props }, ref) => { - return ( - - - - ); - } -); +const Action = ({ native: _native, web, ...props }: ActionProps) => { + return ( + + + + ); +}; -const Cancel = React.forwardRef( - ({ native: _native, web, ...props }, ref) => { - return ( - - - - ); - } -); +const Cancel = ({ native: _native, web, ...props }: CancelProps) => { + return ( + + + + ); +}; Cancel.displayName = 'AlertDialogCancelUniversal'; diff --git a/packages/alert-dialog/src/universal/index.ts b/packages/alert-dialog/src/universal/index.ts index 64d14f78..f8ab6806 100644 --- a/packages/alert-dialog/src/universal/index.ts +++ b/packages/alert-dialog/src/universal/index.ts @@ -13,9 +13,7 @@ export { export type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, DescriptionProps, OverlayProps, @@ -23,5 +21,4 @@ export type { RootProps, TitleProps, TriggerProps, - TriggerRef, } from './types'; diff --git a/packages/alert-dialog/src/universal/types.ts b/packages/alert-dialog/src/universal/types.ts index 68a1f47b..7323afc7 100644 --- a/packages/alert-dialog/src/universal/types.ts +++ b/packages/alert-dialog/src/universal/types.ts @@ -58,7 +58,6 @@ type TriggerProps = Prettify< web?: TriggerPropsWebOnly; } >; -type TriggerRef = PressableRefUniversal; type ActionProps = Prettify< BaseAlertDialogActionProps & @@ -68,8 +67,6 @@ type ActionProps = Prettify< } >; -type ActionRef = PressableRefUniversal; - type CancelProps = Prettify< BaseAlertDialogCancelProps & PressablePropsUniversal & { @@ -77,7 +74,6 @@ type CancelProps = Prettify< web?: CancelPropsWebOnly; } >; -type CancelRef = PressableRefUniversal; type DescriptionProps = Prettify< BaseAlertDialogDescriptionProps & @@ -112,9 +108,7 @@ type TitleProps = Prettify< export type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, DescriptionProps, OverlayProps, @@ -122,5 +116,4 @@ export type { RootProps, TitleProps, TriggerProps, - TriggerRef, }; diff --git a/packages/alert-dialog/src/web/alert-dialog-web.tsx b/packages/alert-dialog/src/web/alert-dialog-web.tsx index a7545ca0..bc727582 100644 --- a/packages/alert-dialog/src/web/alert-dialog-web.tsx +++ b/packages/alert-dialog/src/web/alert-dialog-web.tsx @@ -1,100 +1,78 @@ -import * as React from 'react'; -import type { RootContextReturnType } from '../utils/contexts'; import type { - ActionProps, - ActionRef, - CancelProps, - CancelRef, - ContentProps, - ContentRef, - DescriptionProps, - DescriptionRef, - OverlayProps, - OverlayRef, - PortalProps, - RootProps, - TitleProps, - TitleRef, - TriggerProps, - TriggerRef, -} from './types'; + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogOverlay, + AlertDialogPortal, + AlertDialogTitle, + AlertDialogTrigger, +} from '@radix-ui/react-alert-dialog'; +import type { RootContextReturnType } from '../utils/contexts'; -function Root(_props: RootProps) { +const Root = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Root` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -} +}) as typeof AlertDialog; -const Trigger = React.forwardRef(() => { +const Trigger = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Trigger` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -}); - -Trigger.displayName = 'AlertDialogTriggerWeb'; +}) as unknown as typeof AlertDialogTrigger; -const Content = React.forwardRef(() => { +const Content = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Portal` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -}); +}) as unknown as typeof AlertDialogContent; -Content.displayName = 'AlertDialogContentWeb'; - -const Action = React.forwardRef(() => { +const Action = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Overlay` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -}); - -Action.displayName = 'AlertDialogActionWeb'; +}) as unknown as typeof AlertDialogAction; -const Cancel = React.forwardRef(() => { +const Cancel = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Content` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -}); +}) as unknown as typeof AlertDialogCancel; -Cancel.displayName = 'AlertDialogCancelWeb'; - -const Description = React.forwardRef(() => { +const Description = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Cancel` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -}); - -Description.displayName = 'AlertDialogDescriptionWeb'; +}) as unknown as typeof AlertDialogDescription; -const Overlay = React.forwardRef(() => { +const Overlay = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Action` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -}); +}) as unknown as typeof AlertDialogOverlay; -Overlay.displayName = 'AlertDialogOverlayWeb'; - -function Portal(_props: PortalProps) { +const Portal = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Title` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -} +}) as unknown as typeof AlertDialogPortal; -const Title = React.forwardRef(() => { +const Title = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Description` from @rn-primitives/alert-dialog/web is only supported on web.'); } return null; -}); - -Title.displayName = 'AlertDialogTitleWeb'; +}) as unknown as typeof AlertDialogTitle; const useRootContext = () => { throw new Error( diff --git a/packages/alert-dialog/src/web/alert-dialog-web.web.tsx b/packages/alert-dialog/src/web/alert-dialog-web.web.tsx index bc162592..979d6520 100644 --- a/packages/alert-dialog/src/web/alert-dialog-web.web.tsx +++ b/packages/alert-dialog/src/web/alert-dialog-web.web.tsx @@ -1,35 +1,18 @@ import { AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogOverlay, - AlertDialogPortal, - AlertDialogTitle, - AlertDialogTrigger, + Action, + Cancel, + Content, + Description, + Overlay, + Portal, + Title, + Trigger, } from '@radix-ui/react-alert-dialog'; import { useControllableState } from '@rn-primitives/hooks'; import * as React from 'react'; import { RootContext, useRootContext } from '../utils/contexts'; -import type { - ActionProps, - ActionRef, - CancelProps, - CancelRef, - ContentProps, - ContentRef, - DescriptionProps, - DescriptionRef, - OverlayProps, - OverlayRef, - PortalProps, - RootProps, - TitleProps, - TitleRef, - TriggerProps, - TriggerRef, -} from './types'; +import type { RootProps } from './types'; function Root({ children, @@ -55,52 +38,6 @@ function Root({ ); } -const Trigger = React.forwardRef((props, ref) => { - return ; -}); - -Trigger.displayName = 'AlertDialogTriggerWeb'; - -const Content = React.forwardRef((props, ref) => { - return ; -}); - -Content.displayName = 'AlertDialogContentWeb'; - -const Action = React.forwardRef((props, ref) => { - return ; -}); - -Action.displayName = 'AlertDialogActionWeb'; - -const Cancel = React.forwardRef((props, ref) => { - return ; -}); - -Cancel.displayName = 'AlertDialogCancelWeb'; - -const Description = React.forwardRef((props, ref) => { - return ; -}); - -Description.displayName = 'AlertDialogDescriptionWeb'; - -const Overlay = React.forwardRef((props, ref) => { - return ; -}); - -Overlay.displayName = 'AlertDialogOverlayWeb'; - -function Portal(props: PortalProps) { - return ; -} - -const Title = React.forwardRef((props, ref) => { - return ; -}); - -Title.displayName = 'AlertDialogTitleWeb'; - export { Action, Cancel, diff --git a/packages/alert-dialog/src/web/index.ts b/packages/alert-dialog/src/web/index.ts index 62e1642a..de7479ae 100644 --- a/packages/alert-dialog/src/web/index.ts +++ b/packages/alert-dialog/src/web/index.ts @@ -13,19 +13,12 @@ export { export type { ActionProps, - ActionRef, CancelProps, - CancelRef, ContentProps, - ContentRef, DescriptionProps, - DescriptionRef, OverlayProps, - OverlayRef, PortalProps, RootProps, TitleProps, - TitleRef, TriggerProps, - TriggerRef, } from './types'; diff --git a/packages/alert-dialog/src/web/types.ts b/packages/alert-dialog/src/web/types.ts index 0cdbc85a..78d275f4 100644 --- a/packages/alert-dialog/src/web/types.ts +++ b/packages/alert-dialog/src/web/types.ts @@ -1,13 +1,4 @@ -import type { - Action, - Cancel, - Content, - Description, - Overlay, - Portal, - Title, - Trigger, -} from '@radix-ui/react-alert-dialog'; +import type { Portal } from '@radix-ui/react-alert-dialog'; import type { Slottable } from '@rn-primitives/types'; import type { BaseAlertDialogActionProps, @@ -21,87 +12,56 @@ import type { BaseAlertDialogTriggerProps, } from '../base-types'; -type ContentPropsWebOnly = React.ComponentPropsWithRef<'div'>; - -type ContentWebOnlyRef = React.ElementRef; +type ContentPropsWebOnly = React.ComponentProps<'div'>; -type TriggerPropsWebOnly = React.ComponentPropsWithRef<'button'>; -type TriggerWebOnlyRef = React.ElementRef; +type TriggerPropsWebOnly = React.ComponentProps<'button'>; -type ActionPropsWebOnly = React.ComponentPropsWithRef<'button'>; -type ActionWebOnlyRef = React.ElementRef; +type ActionPropsWebOnly = React.ComponentProps<'button'>; -type CancelPropsWebOnly = React.ComponentPropsWithRef<'button'>; -type CancelWebOnlyRef = React.ElementRef; +type CancelPropsWebOnly = React.ComponentProps<'button'>; -type DescriptionPropsWebOnly = React.ComponentPropsWithRef<'p'>; -type DescriptionWebOnlyRef = React.ElementRef; +type DescriptionPropsWebOnly = React.ComponentProps<'p'>; -type OverlayPropsWebOnly = React.ComponentPropsWithRef<'div'>; -type OverlayWebOnlyRef = React.ElementRef; +type OverlayPropsWebOnly = React.ComponentProps<'div'>; -type PortalPropsWebOnly = Pick, 'container'>; -type PortalWebOnlyRef = React.ElementRef; +type PortalPropsWebOnly = Pick, 'container'>; -type TitlePropsWebOnly = React.ComponentPropsWithRef<'h1'>; -type TitleWebOnlyRef = React.ElementRef; +type TitlePropsWebOnly = React.ComponentProps<'h1'>; type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; type ActionProps = Slottable; -type ActionRef = ActionWebOnlyRef; type CancelProps = Slottable; -type CancelRef = CancelWebOnlyRef; type DescriptionProps = Slottable; -type DescriptionRef = DescriptionWebOnlyRef; type OverlayProps = Slottable; -type OverlayRef = OverlayWebOnlyRef; type PortalProps = BaseAlertDialogPortalProps & PortalPropsWebOnly; type TitleProps = Slottable; -type TitleRef = TitleWebOnlyRef; type TriggerProps = Slottable; -type TriggerRef = TriggerWebOnlyRef; type ContentProps = Slottable; -type ContentRef = ContentWebOnlyRef; export type { ActionProps, ActionPropsWebOnly, - ActionRef, - ActionWebOnlyRef, CancelProps, CancelPropsWebOnly, - CancelRef, - CancelWebOnlyRef, ContentProps, ContentPropsWebOnly, - ContentRef, - ContentWebOnlyRef, DescriptionProps, DescriptionPropsWebOnly, - DescriptionRef, - DescriptionWebOnlyRef, OverlayProps, OverlayPropsWebOnly, - OverlayRef, - OverlayWebOnlyRef, PortalProps, PortalPropsWebOnly, - PortalWebOnlyRef, RootProps, TitleProps, TitlePropsWebOnly, - TitleRef, - TitleWebOnlyRef, TriggerProps, TriggerPropsWebOnly, - TriggerRef, - TriggerWebOnlyRef, }; diff --git a/packages/aspect-ratio/src/aspect-ratio.tsx b/packages/aspect-ratio/src/aspect-ratio.tsx index 1d9454ca..50b98e39 100644 --- a/packages/aspect-ratio/src/aspect-ratio.tsx +++ b/packages/aspect-ratio/src/aspect-ratio.tsx @@ -10,12 +10,18 @@ type RootProps = Omit & { type RootRef = ViewRef; -const Root = React.forwardRef( - ({ asChild, ratio = 1, style, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ; - } -); +const Root = ({ + ref, + asChild, + ratio = 1, + style, + ...props +}: RootProps & { + ref?: React.RefObject; +}) => { + const Component = asChild ? Slot : View; + return ; +}; Root.displayName = 'RootAspectRatio'; diff --git a/packages/avatar/src/avatar.tsx b/packages/avatar/src/avatar.tsx index 5be677cc..ce569850 100644 --- a/packages/avatar/src/avatar.tsx +++ b/packages/avatar/src/avatar.tsx @@ -20,7 +20,14 @@ interface IRootContext extends RootProps { const RootContext = React.createContext(null); -const Root = React.forwardRef(({ asChild, alt, ...viewProps }, ref) => { +const Root = ({ + ref, + asChild, + alt, + ...viewProps +}: RootProps & { + ref?: React.RefObject; +}) => { const [status, setStatus] = React.useState('error'); const Component = asChild ? Slot : View; return ( @@ -28,7 +35,7 @@ const Root = React.forwardRef(({ asChild, alt, ...viewProps ); -}); +}; Root.displayName = 'RootAvatar'; @@ -40,53 +47,63 @@ function useRootContext() { return context; } -const Image = React.forwardRef( - ( - { asChild, onLoad: onLoadProps, onError: onErrorProps, onLoadingStatusChange, ...props }, - ref - ) => { - const { alt, setStatus, status } = useRootContext(); - - useIsomorphicLayoutEffect(() => { - if (isValidSource(props?.source)) { - setStatus('loading'); - } - - return () => { - setStatus('error'); - }; - }, [props?.source]); - - const onLoad = React.useCallback( - (e: NativeSyntheticEvent) => { - setStatus('loaded'); - onLoadingStatusChange?.('loaded'); - onLoadProps?.(e); - }, - [onLoadProps] - ); - - const onError = React.useCallback( - (e: NativeSyntheticEvent) => { - setStatus('error'); - onLoadingStatusChange?.('error'); - onErrorProps?.(e); - }, - [onErrorProps] - ); - - if (status === 'error') { - return null; +const Image = ({ + ref, + asChild, + onLoad: onLoadProps, + onError: onErrorProps, + onLoadingStatusChange, + ...props +}: ImageProps & { + ref?: React.RefObject; +}) => { + const { alt, setStatus, status } = useRootContext(); + + useIsomorphicLayoutEffect(() => { + if (isValidSource(props?.source)) { + setStatus('loading'); } - const Component = asChild ? Slot : RNImage; - return ; + return () => { + setStatus('error'); + }; + }, [props?.source]); + + const onLoad = React.useCallback( + (e: NativeSyntheticEvent) => { + setStatus('loaded'); + onLoadingStatusChange?.('loaded'); + onLoadProps?.(e); + }, + [onLoadProps] + ); + + const onError = React.useCallback( + (e: NativeSyntheticEvent) => { + setStatus('error'); + onLoadingStatusChange?.('error'); + onErrorProps?.(e); + }, + [onErrorProps] + ); + + if (status === 'error') { + return null; } -); + + const Component = asChild ? Slot : RNImage; + return ; +}; Image.displayName = 'ImageAvatar'; -const Fallback = React.forwardRef(({ asChild, ...props }, ref) => { +const Fallback = ({ + ref, + asChild, + ...props +}: FallbackProps & { + ref?: React.RefObject; +}) => { const { alt, status } = useRootContext(); if (status !== 'error') { @@ -94,7 +111,7 @@ const Fallback = React.forwardRef(({ asChild, ...pro } const Component = asChild ? Slot : View; return ; -}); +}; Fallback.displayName = 'FallbackAvatar'; diff --git a/packages/checkbox/src/checkbox.tsx b/packages/checkbox/src/checkbox.tsx index d15f372b..4cebc09b 100644 --- a/packages/checkbox/src/checkbox.tsx +++ b/packages/checkbox/src/checkbox.tsx @@ -10,22 +10,30 @@ interface RootContext extends RootProps { const CheckboxContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, disabled = false, checked, onCheckedChange, nativeID, ...props }, ref) => { - return ( - - - - ); - } -); +const Root = ({ + ref, + asChild, + disabled = false, + checked, + onCheckedChange, + nativeID, + ...props +}: RootProps & { + ref?: React.RefObject; +}) => { + return ( + + + + ); +}; Root.displayName = 'RootNativeCheckbox'; @@ -39,61 +47,71 @@ function useCheckboxContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, ...props }, ref) => { - const { disabled, checked, onCheckedChange, nativeID } = useCheckboxContext(); +const Trigger = ({ + ref, + asChild, + onPress: onPressProp, + ...props +}: SlottablePressableProps & { + ref?: React.RefObject; +}) => { + const { disabled, checked, onCheckedChange, nativeID } = useCheckboxContext(); - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - const newValue = !checked; - onCheckedChange(newValue); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + const newValue = !checked; + onCheckedChange(newValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativeCheckbox'; -const Indicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { checked, disabled } = useCheckboxContext(); +const Indicator = ({ + ref, + asChild, + forceMount, + ...props +}: IndicatorProps & { + ref?: React.RefObject; +}) => { + const { checked, disabled } = useCheckboxContext(); - if (!forceMount) { - if (!checked) { - return null; - } + if (!forceMount) { + if (!checked) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); + + const Component = asChild ? Slot : View; + return ( + + ); +}; Indicator.displayName = 'IndicatorNativeCheckbox'; diff --git a/packages/checkbox/src/checkbox.web.tsx b/packages/checkbox/src/checkbox.web.tsx index c380b835..6a57c542 100644 --- a/packages/checkbox/src/checkbox.web.tsx +++ b/packages/checkbox/src/checkbox.web.tsx @@ -7,61 +7,67 @@ import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; const CheckboxContext = React.createContext(null); -const Root = React.forwardRef( - ( - { asChild, disabled, checked, onCheckedChange, onPress: onPressProp, role: _role, ...props }, - ref - ) => { - const augmentedRef = useAugmentedRef({ ref }); +const Root = ({ + ref, + asChild, + disabled, + checked, + onCheckedChange, + onPress: onPressProp, + role: _role, + ...props +}: RootProps & { + ref?: React.RefObject; +}) => { + const augmentedRef = useAugmentedRef({ ref }); - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - onCheckedChange(!checked); - } + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onCheckedChange(!checked); + } - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = checked ? 'checked' : 'unchecked'; - augRef.value = checked ? 'on' : 'off'; - } - }, [checked]); + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.dataset.state = checked ? 'checked' : 'unchecked'; + augRef.value = checked ? 'on' : 'off'; + } + }, [checked]); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.type = 'button'; - augRef.role = 'checkbox'; + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.type = 'button'; + augRef.role = 'checkbox'; - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } + if (disabled) { + augRef.dataset.disabled = 'true'; + } else { + augRef.dataset.disabled = undefined; } - }, [disabled]); + } + }, [disabled]); - const Component = asChild ? Slot : Pressable; - return ( - - + + - - - - ); - } -); + {...props} + /> + + + ); +}; Root.displayName = 'RootWebCheckbox'; @@ -75,37 +81,42 @@ function useCheckboxContext() { return context; } -const Indicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { checked, disabled } = useCheckboxContext(); - const augmentedRef = useAugmentedRef({ ref }); +const Indicator = ({ + ref, + asChild, + forceMount, + ...props +}: IndicatorProps & { + ref?: React.RefObject; +}) => { + const { checked, disabled } = useCheckboxContext(); + const augmentedRef = useAugmentedRef({ ref }); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = checked ? 'checked' : 'unchecked'; - } - }, [checked]); + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + augRef.dataset.state = checked ? 'checked' : 'unchecked'; + } + }, [checked]); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + if (disabled) { + augRef.dataset.disabled = 'true'; + } else { + augRef.dataset.disabled = undefined; } - }, [disabled]); + } + }, [disabled]); - const Component = asChild ? Slot : View; - return ( - - - - ); - } -); + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Indicator.displayName = 'IndicatorWebCheckbox'; diff --git a/packages/collapsible/src/collapsible.tsx b/packages/collapsible/src/collapsible.tsx index db1ff5b2..575448ba 100644 --- a/packages/collapsible/src/collapsible.tsx +++ b/packages/collapsible/src/collapsible.tsx @@ -2,52 +2,39 @@ import { useControllableState } from '@rn-primitives/hooks'; import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; -import type { - ContentProps, - ContentRef, - RootContext, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; +import type { ContentProps, RootContext, RootProps, TriggerProps } from './types'; const CollapsibleContext = React.createContext<(RootContext & { nativeID: string }) | null>(null); -const Root = React.forwardRef( - ( - { - asChild, - disabled = false, - open: openProp, - defaultOpen, - onOpenChange: onOpenChangeProp, - ...viewProps - }, - ref - ) => { - const nativeID = React.useId(); - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); +function Root({ + asChild, + disabled = false, + open: openProp, + defaultOpen, + onOpenChange: onOpenChangeProp, + ...viewProps +}: RootProps) { + const nativeID = React.useId(); + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); - const Component = asChild ? Slot : View; - return ( - - - - ); - } -); + const Component = asChild ? Slot : View; + return ( + + + + ); +} Root.displayName = 'RootNativeCollapsible'; @@ -61,59 +48,58 @@ function useCollapsibleContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled: disabledProp = false, ...props }, ref) => { - const { disabled, open, onOpenChange, nativeID } = useCollapsibleContext(); +function Trigger({ + asChild, + onPress: onPressProp, + disabled: disabledProp = false, + ...props +}: TriggerProps) { + const { disabled, open, onOpenChange, nativeID } = useCollapsibleContext(); - function onPress(ev: GestureResponderEvent) { - if (disabled || disabledProp) return; - onOpenChange(!open); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled || disabledProp) return; + onOpenChange(!open); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +} Trigger.displayName = 'TriggerNativeCollapsible'; -const Content = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { nativeID, open } = useCollapsibleContext(); +function Content({ asChild, forceMount, ...props }: ContentProps) { + const { nativeID, open } = useCollapsibleContext(); - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); + + const Component = asChild ? Slot : View; + return ( + + ); +} Content.displayName = 'ContentNativeCollapsible'; diff --git a/packages/collapsible/src/collapsible.web.tsx b/packages/collapsible/src/collapsible.web.tsx index e214628b..463c4c0d 100644 --- a/packages/collapsible/src/collapsible.web.tsx +++ b/packages/collapsible/src/collapsible.web.tsx @@ -7,76 +7,64 @@ import { import { Slot } from '@rn-primitives/slot'; import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; -import type { - ContentProps, - ContentRef, - RootContext, - RootProps, - RootRef, - TriggerProps, - TriggerRef, -} from './types'; +import type { ContentProps, RootContext, RootProps, TriggerProps } from './types'; const CollapsibleContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - disabled = false, - open: openProp, - defaultOpen, - onOpenChange: onOpenChangeProp, - ...viewProps - }, - ref - ) => { - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - const augmentedRef = useAugmentedRef({ ref }); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = open ? 'open' : 'closed'; - } - }, [open]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } +function Root({ + ref, + asChild, + disabled = false, + open: openProp, + defaultOpen, + onOpenChange: onOpenChangeProp, + ...viewProps +}: RootProps) { + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + const augmentedRef = useAugmentedRef({ ref }); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + augRef.dataset.state = open ? 'open' : 'closed'; + } + }, [open]); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + if (disabled) { + augRef.dataset.disabled = 'true'; + } else { + augRef.dataset.disabled = undefined; } - }, [disabled]); - - const Component = asChild ? Slot : View; - return ( - + - - - - - ); - } -); + + + + ); +} Root.displayName = 'RootWebCollapsible'; @@ -90,73 +78,75 @@ function useCollapsibleContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled: disabledProp = false, ...props }, ref) => { - const { disabled, open, onOpenChange } = useCollapsibleContext(); - const augmentedRef = useAugmentedRef({ ref }); +function Trigger({ + ref, + asChild, + onPress: onPressProp, + disabled: disabledProp = false, + ...props +}: TriggerProps) { + const { disabled, open, onOpenChange } = useCollapsibleContext(); + const augmentedRef = useAugmentedRef({ ref }); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.dataset.state = open ? 'open' : 'closed'; + } + }, [open]); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = open ? 'open' : 'closed'; - } - }, [open]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.type = 'button'; - - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } - } - }, [disabled]); + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.type = 'button'; - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - onOpenChange(!open); + if (disabled) { + augRef.dataset.disabled = 'true'; + } else { + augRef.dataset.disabled = undefined; + } } + }, [disabled]); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onOpenChange(!open); } -); -Trigger.displayName = 'TriggerWebCollapsible'; + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +} -const Content = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { open } = useCollapsibleContext(); +Trigger.displayName = 'TriggerWebCollapsible'; - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = open ? 'open' : 'closed'; - } - }, [open]); +function Content({ ref, asChild, forceMount, ...props }: ContentProps) { + const augmentedRef = useAugmentedRef({ ref }); + const { open } = useCollapsibleContext(); - const Component = asChild ? Slot : View; - return ( - - - - ); - } -); + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + augRef.dataset.state = open ? 'open' : 'closed'; + } + }, [open]); + + const Component = asChild ? Slot : View; + return ( + + + + ); +} Content.displayName = 'ContentWebCollapsible'; diff --git a/packages/context-menu/src/context-menu.tsx b/packages/context-menu/src/context-menu.tsx index d2ad8b34..c671b7c8 100644 --- a/packages/context-menu/src/context-menu.tsx +++ b/packages/context-menu/src/context-menu.tsx @@ -63,37 +63,45 @@ interface IRootContext extends RootProps { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, relativeTo = 'longPress', onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const nativeID = React.useId(); - const [pressPosition, setPressPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + relativeTo = 'longPress', + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const nativeID = React.useId(); + const [pressPosition, setPressPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + const [open, setOpen] = React.useState(false); + + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); } -); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeContextMenu'; @@ -109,84 +117,84 @@ function useRootContext() { const accessibilityActions = [{ name: 'longpress' }]; -const Trigger = React.forwardRef( - ( - { - asChild, - onLongPress: onLongPressProp, - disabled = false, - onAccessibilityAction: onAccessibilityActionProp, - ...props - }, - ref - ) => { - const { open, onOpenChange, relativeTo, setPressPosition } = useRootContext(); - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open: () => { - onOpenChange(true); - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setPressPosition({ width, pageX, pageY: pageY, height }); - }); - }, - close: () => { - setPressPosition(null); - onOpenChange(false); - }, - }, - }); - - function onLongPress(ev: GestureResponderEvent) { - if (disabled) return; - if (relativeTo === 'longPress') { - setPressPosition({ - width: 0, - pageX: ev.nativeEvent.pageX, - pageY: ev.nativeEvent.pageY, - height: 0, - }); - } - if (relativeTo === 'trigger') { +const Trigger = ( + { + ref, + asChild, + onLongPress: onLongPressProp, + disabled = false, + onAccessibilityAction: onAccessibilityActionProp, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, relativeTo, setPressPosition } = useRootContext(); + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open: () => { + onOpenChange(true); augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { setPressPosition({ width, pageX, pageY: pageY, height }); }); - } - onOpenChange(!open); - onLongPressProp?.(ev); + }, + close: () => { + setPressPosition(null); + onOpenChange(false); + }, + }, + }); + + function onLongPress(ev: GestureResponderEvent) { + if (disabled) return; + if (relativeTo === 'longPress') { + setPressPosition({ + width: 0, + pageX: ev.nativeEvent.pageX, + pageY: ev.nativeEvent.pageY, + height: 0, + }); } - - function onAccessibilityAction(event: AccessibilityActionEvent) { - if (disabled) return; - if (event.nativeEvent.actionName === 'longpress') { - setPressPosition({ - width: 0, - pageX: 0, - pageY: 0, - height: 0, - }); - const newValue = !open; - onOpenChange(newValue); - } - onAccessibilityActionProp?.(event); + if (relativeTo === 'trigger') { + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setPressPosition({ width, pageX, pageY: pageY, height }); + }); } + onOpenChange(!open); + onLongPressProp?.(ev); + } - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onAccessibilityAction(event: AccessibilityActionEvent) { + if (disabled) return; + if (event.nativeEvent.actionName === 'longpress') { + setPressPosition({ + width: 0, + pageX: 0, + pageY: 0, + height: 0, + }); + const newValue = !open; + onOpenChange(newValue); + } + onAccessibilityActionProp?.(event); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativeContextMenu'; @@ -213,160 +221,192 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, onPress: OnPressProp, closeOnPress = true, ...props }, ref) => { - const { open, onOpenChange, setContentLayout, setPressPosition } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setPressPosition(null); - setContentLayout(null); - onOpenChange(false); - } - OnPressProp?.(ev); +const Overlay = ( + { + ref, + asChild, + forceMount, + onPress: OnPressProp, + closeOnPress = true, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setContentLayout, setPressPosition } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setPressPosition(null); + setContentLayout(null); + onOpenChange(false); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); -Overlay.displayName = 'OverlayNativeContextMenu'; + const Component = asChild ? Slot : Pressable; + return ; +}; -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'start', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - ...props - }, - ref - ) => { - const { - open, - onOpenChange, - contentLayout, - nativeID, - pressPosition, - setContentLayout, - setPressPosition, - } = useRootContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setPressPosition(null); - setContentLayout(null); - onOpenChange(false); - return true; - }); +Overlay.displayName = 'OverlayNativeContextMenu'; - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition: pressPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side, - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'start', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + open, + onOpenChange, + contentLayout, + nativeID, + pressPosition, + setContentLayout, + setPressPosition, + } = useRootContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setPressPosition(null); + setContentLayout(null); + onOpenChange(false); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition: pressPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side, + disablePositioningStyle, + }); + + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); -Content.displayName = 'ContentNativeContextMenu'; + const Component = asChild ? Slot : View; + return ( + + ); +}; -const Item = React.forwardRef( - ( - { asChild, textValue, onPress: onPressProp, disabled = false, closeOnPress = true, ...props }, - ref - ) => { - const { onOpenChange, setContentLayout, setPressPosition } = useRootContext(); +Content.displayName = 'ContentNativeContextMenu'; - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setPressPosition(null); - setContentLayout(null); - onOpenChange(false); - } - onPressProp?.(ev); +const Item = ( + { + ref, + asChild, + textValue, + onPress: onPressProp, + disabled = false, + closeOnPress = true, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, setContentLayout, setPressPosition } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setPressPosition(null); + setContentLayout(null); + onOpenChange(false); } - - const Component = asChild ? Slot : Pressable; - return ( - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Item.displayName = 'ItemNativeContextMenu'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Group.displayName = 'GroupNativeContextMenu'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ; -}); +}; Label.displayName = 'LabelNativeContextMenu'; @@ -379,50 +419,50 @@ type FormItemContext = const FormItemContext = React.createContext(null); -const CheckboxItem = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - textValue, - onPress: onPressProp, - closeOnPress = true, - disabled = false, - ...props - }, - ref - ) => { - const { onOpenChange, setContentLayout, setPressPosition, nativeID } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - onCheckedChange(!checked); - if (closeOnPress) { - setPressPosition(null); - setContentLayout(null); - onOpenChange(false); - } - onPressProp?.(ev); +const CheckboxItem = ( + { + ref, + asChild, + checked, + onCheckedChange, + textValue, + onPress: onPressProp, + closeOnPress = true, + disabled = false, + ...props + }: CheckboxItemProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, setContentLayout, setPressPosition, nativeID } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + onCheckedChange(!checked); + if (closeOnPress) { + setPressPosition(null); + setContentLayout(null); + onOpenChange(false); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; CheckboxItem.displayName = 'CheckboxItemNativeContextMenu'; @@ -436,16 +476,24 @@ function useFormItemContext() { return context; } -const RadioGroup = React.forwardRef( - ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const RadioGroup = ( + { + ref, + asChild, + value, + onValueChange, + ...props + }: RadioGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; RadioGroup.displayName = 'RadioGroupNativeContextMenu'; @@ -455,52 +503,52 @@ type BothFormItemContext = Exclude & { const RadioItemContext = React.createContext({} as { itemValue: string }); -const RadioItem = React.forwardRef( - ( - { - asChild, - value: itemValue, - textValue, - onPress: onPressProp, - disabled = false, - closeOnPress = true, - ...props - }, - ref - ) => { - const { onOpenChange, setContentLayout, setPressPosition } = useRootContext(); - - const { value, onValueChange } = useFormItemContext() as BothFormItemContext; - function onPress(ev: GestureResponderEvent) { - onValueChange(itemValue); - if (closeOnPress) { - setPressPosition(null); - setContentLayout(null); - onOpenChange(false); - } - onPressProp?.(ev); +const RadioItem = ( + { + ref, + asChild, + value: itemValue, + textValue, + onPress: onPressProp, + disabled = false, + closeOnPress = true, + ...props + }: RadioItemProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, setContentLayout, setPressPosition } = useRootContext(); + + const { value, onValueChange } = useFormItemContext() as BothFormItemContext; + function onPress(ev: GestureResponderEvent) { + onValueChange(itemValue); + if (closeOnPress) { + setPressPosition(null); + setContentLayout(null); + onOpenChange(false); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; RadioItem.displayName = 'RadioItemNativeContextMenu'; @@ -508,32 +556,46 @@ function useItemIndicatorContext() { return React.useContext(RadioItemContext); } -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { itemValue } = useItemIndicatorContext(); - const { checked, value } = useFormItemContext() as BothFormItemContext; - - if (!forceMount) { - if (itemValue == null && !checked) { - return null; - } - if (value !== itemValue) { - return null; - } +const ItemIndicator = ( + { + ref, + asChild, + forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; + } +) => { + const { itemValue } = useItemIndicatorContext(); + const { checked, value } = useFormItemContext() as BothFormItemContext; + + if (!forceMount) { + if (itemValue == null && !checked) { + return null; + } + if (value !== itemValue) { + return null; } - const Component = asChild ? Slot : View; - return ; } -); + const Component = asChild ? Slot : View; + return ; +}; ItemIndicator.displayName = 'ItemIndicatorNativeContextMenu'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ; +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ; +}; Separator.displayName = 'SeparatorNativeContextMenu'; @@ -543,29 +605,38 @@ const SubContext = React.createContext<{ onOpenChange: (value: boolean) => void; } | null>(null); -const Sub = React.forwardRef( - ({ asChild, defaultOpen, open: openProp, onOpenChange: onOpenChangeProp, ...props }, ref) => { - const nativeID = React.useId(); - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Sub = ( + { + ref, + asChild, + defaultOpen, + open: openProp, + onOpenChange: onOpenChangeProp, + ...props + }: SubProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Sub.displayName = 'SubNativeContextMenu'; @@ -577,49 +648,65 @@ function useSubContext() { return context; } -const SubTrigger = React.forwardRef( - ({ asChild, textValue, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { nativeID, open, onOpenChange } = useSubContext(); - - function onPress(ev: GestureResponderEvent) { - onOpenChange(!open); - onPressProp?.(ev); - } +const SubTrigger = ( + { + ref, + asChild, + textValue, + onPress: onPressProp, + disabled = false, + ...props + }: SubTriggerProps & { + ref: React.RefObject; + } +) => { + const { nativeID, open, onOpenChange } = useSubContext(); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + onOpenChange(!open); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; SubTrigger.displayName = 'SubTriggerNativeContextMenu'; -const SubContent = React.forwardRef( - ({ asChild = false, forceMount, ...props }, ref) => { - const { open, nativeID } = useSubContext(); +const SubContent = ( + { + ref, + asChild = false, + forceMount, + ...props + }: SubContentProps & { + ref: React.RefObject; + } +) => { + const { open, nativeID } = useSubContext(); - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Content.displayName = 'ContentNativeContextMenu'; diff --git a/packages/context-menu/src/context-menu.web.tsx b/packages/context-menu/src/context-menu.web.tsx index 79974991..db31c02f 100644 --- a/packages/context-menu/src/context-menu.web.tsx +++ b/packages/context-menu/src/context-menu.web.tsx @@ -47,25 +47,32 @@ const ContextMenuContext = React.createContext<{ onOpenChange: (open: boolean) => void; } | null>(null); -const Root = React.forwardRef( - ({ asChild, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } +const Root = ( + { + ref, + asChild, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const [open, setOpen] = React.useState(false); - const Component = asChild ? Slot : View; - return ( - - - - - - ); + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); } -); + + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebContextMenu'; @@ -79,47 +86,54 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, disabled = false, ...props }, ref) => { - const { open } = useRootContext(); - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open() { - console.warn('Warning: `open()` is only for Native platforms'); - }, - close() { - console.warn('Warning: `close()` is only for Native platforms'); - }, +const Trigger = ( + { + ref, + asChild, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { open } = useRootContext(); + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open() { + console.warn('Warning: `open()` is only for Native platforms'); }, - }); + close() { + console.warn('Warning: `close()` is only for Native platforms'); + }, + }, + }); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = open ? 'open' : 'closed'; - } - }, [open]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + augRef.dataset.state = open ? 'open' : 'closed'; + } + }, [open]); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + if (disabled) { + augRef.dataset.disabled = 'true'; + } else { + augRef.dataset.disabled = undefined; } - }, [disabled]); + } + }, [disabled]); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); - } -); + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebContextMenu'; @@ -127,10 +141,18 @@ function Portal({ forceMount, container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { +const Overlay = ( + { + ref, + asChild, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Overlay.displayName = 'OverlayWebContextMenu'; @@ -138,68 +160,68 @@ const ContextMenuContentContext = React.createContext<{ close: () => void; } | null>(null); -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align: _align, - side: _side, - sideOffset: _sideOffset, - alignOffset = 0, - avoidCollisions = true, - insets, - loop = true, - onCloseAutoFocus, - onEscapeKeyDown, - onPointerDownOutside, - onFocusOutside, - onInteractOutside, - collisionBoundary, - sticky, - hideWhenDetached, - ...props - }, - ref - ) => { - const itemRef = React.useRef(null); - - function close() { - itemRef.current?.click(); - } +const Content = ( + { + ref, + asChild = false, + forceMount, + align: _align, + side: _side, + sideOffset: _sideOffset, + alignOffset = 0, + avoidCollisions = true, + insets, + loop = true, + onCloseAutoFocus, + onEscapeKeyDown, + onPointerDownOutside, + onFocusOutside, + onInteractOutside, + collisionBoundary, + sticky, + hideWhenDetached, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const itemRef = React.useRef(null); - const Component = asChild ? Slot : View; - return ( - - - - - - ); + function close() { + itemRef.current?.click(); } -); + + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Content.displayName = 'ContentWebContextMenu'; @@ -213,122 +235,147 @@ function useContextMenuContentContext() { return context; } -const Item = React.forwardRef( - ({ asChild, textValue, closeOnPress = true, onPress: onPressProp, ...props }, ref) => { - const { close } = useContextMenuContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - if (ev.key === 'Enter' || ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - if (closeOnPress) { - close(); - } - } - } +const Item = ( + { + ref, + asChild, + textValue, + closeOnPress = true, + onPress: onPressProp, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { close } = useContextMenuContentContext(); - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); + function onKeyDown(ev: React.KeyboardEvent) { + if (ev.key === 'Enter' || ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); if (closeOnPress) { close(); } } + } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + if (closeOnPress) { + close(); + } } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Item.displayName = 'ItemWebContextMenu'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Group.displayName = 'GroupWebContextMenu'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ( ); -}); +}; Label.displayName = 'LabelWebContextMenu'; -const CheckboxItem = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - textValue, - disabled = false, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - const { close } = useContextMenuContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - onCheckedChange?.(!checked); - if (closeOnPress) { - close(); - } - } - } +const CheckboxItem = ( + { + ref, + asChild, + checked, + onCheckedChange, + textValue, + disabled = false, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: CheckboxItemProps & { + ref: React.RefObject; + } +) => { + const { close } = useContextMenuContentContext(); - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); onCheckedChange?.(!checked); if (closeOnPress) { close(); } } + } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onCheckedChange?.(!checked); + if (closeOnPress) { + close(); + } } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; CheckboxItem.displayName = 'CheckboxItemWebContextMenu'; @@ -337,18 +384,26 @@ const ContextMenuRadioGroupContext = React.createContext<{ onValueChange?: (value: string) => void; } | null>(null); -const RadioGroup = React.forwardRef( - ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const RadioGroup = ( + { + ref, + asChild, + value, + onValueChange, + ...props + }: RadioGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; RadioGroup.displayName = 'RadioGroupWebContextMenu'; @@ -362,80 +417,94 @@ function useContextMenuRadioGroupContext() { return context; } -const RadioItem = React.forwardRef( - ( - { - asChild, - value, - textValue, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - const { onValueChange } = useContextMenuRadioGroupContext(); - const { close } = useContextMenuContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onValueChange?.(value); - onPressProp?.(EmptyGestureResponderEvent); - if (closeOnPress) { - close(); - } - } - } +const RadioItem = ( + { + ref, + asChild, + value, + textValue, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: RadioItemProps & { + ref: React.RefObject; + } +) => { + const { onValueChange } = useContextMenuRadioGroupContext(); + const { close } = useContextMenuContentContext(); - function onPress(ev: GestureResponderEvent) { + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { onValueChange?.(value); - onPressProp?.(ev); + onPressProp?.(EmptyGestureResponderEvent); if (closeOnPress) { close(); } } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); } -); + + function onPress(ev: GestureResponderEvent) { + onValueChange?.(value); + onPressProp?.(ev); + if (closeOnPress) { + close(); + } + } + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; RadioItem.displayName = 'RadioItemWebContextMenu'; -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const ItemIndicator = ( + { + ref, + asChild, + forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; ItemIndicator.displayName = 'ItemIndicatorWebContextMenu'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Separator.displayName = 'SeparatorWebContextMenu'; @@ -444,24 +513,33 @@ const ContextMenuSubContext = React.createContext<{ onOpenChange: (open: boolean) => void; } | null>(null); -const Sub = React.forwardRef( - ({ asChild, defaultOpen, open: openProp, onOpenChange: onOpenChangeProp, ...props }, ref) => { - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Sub = ( + { + ref, + asChild, + defaultOpen, + open: openProp, + onOpenChange: onOpenChangeProp, + ...props + }: SubProps & { + ref: React.RefObject; } -); +) => { + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Sub.displayName = 'SubWebContextMenu'; @@ -475,38 +553,54 @@ function useSubContext() { return context; } -const SubTrigger = React.forwardRef( - ({ asChild, textValue, disabled = false, onPress: onPressProp, ...props }, ref) => { - const { onOpenChange } = useSubContext(); - - function onPress(ev: GestureResponderEvent) { - onOpenChange(true); - onPressProp?.(ev); - } +const SubTrigger = ( + { + ref, + asChild, + textValue, + disabled = false, + onPress: onPressProp, + ...props + }: SubTriggerProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange } = useSubContext(); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onOpenChange(true); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; SubTrigger.displayName = 'SubTriggerWebContextMenu'; -const SubContent = React.forwardRef( - ({ asChild = false, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : Pressable; - return ( - - - - - - ); +const SubContent = ( + { + ref, + asChild = false, + forceMount, + ...props + }: SubContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : Pressable; + return ( + + + + + + ); +}; Content.displayName = 'ContentWebContextMenu'; diff --git a/packages/core/src/native/components.tsx b/packages/core/src/native/components.tsx index 1ba6247b..485866d4 100644 --- a/packages/core/src/native/components.tsx +++ b/packages/core/src/native/components.tsx @@ -1,37 +1,38 @@ 'use client'; import type { - AnimatableImageProps, - AnimatablePressableProps, - AnimatableTextProps, - AnimatableViewProps, -} from './animatable/types'; -function Image(_props: AnimatableImageProps) { + AnimatableImage, + AnimatablePressable, + AnimatableText, + AnimatableView, +} from './animatable'; + +const Image = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Image` from @rn-primitives/core/native is only supported on native.'); } return null; -} +}) as unknown as typeof AnimatableImage; -function Pressable(_props: AnimatablePressableProps) { +const Pressable = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Pressable` from @rn-primitives/core/native is only supported on native.'); } return null; -} +}) as unknown as typeof AnimatablePressable; -function Text(_props: AnimatableTextProps) { +const Text = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Text` from @rn-primitives/core/native is only supported on native.'); } return null; -} +}) as unknown as typeof AnimatableText; -function View(_props: AnimatableViewProps) { +const View = (() => { if (process.env.NODE_ENV === 'development') { console.log('`View` from @rn-primitives/core/native is only supported on native.'); } return null; -} +}) as unknown as typeof AnimatableView; export { Image, Pressable, Text, View }; diff --git a/packages/dialog/src/dialog.tsx b/packages/dialog/src/dialog.tsx index 77712a1b..153214f2 100644 --- a/packages/dialog/src/dialog.tsx +++ b/packages/dialog/src/dialog.tsx @@ -24,29 +24,38 @@ import type { const DialogContext = React.createContext<(RootContext & { nativeID: string }) | null>(null); -const Root = React.forwardRef( - ({ asChild, open: openProp, defaultOpen, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const nativeID = React.useId(); - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + open: openProp, + defaultOpen, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeDialog'; @@ -58,30 +67,38 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { open, onOpenChange } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - const newValue = !open; - onOpenChange(newValue); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + const newValue = !open; + onOpenChange(newValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativeDialog'; @@ -104,106 +121,144 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, closeOnPress = true, onPress: OnPressProp, ...props }, ref) => { - const { open, onOpenChange } = useRootContext(); +const Overlay = ( + { + ref, + asChild, + forceMount, + closeOnPress = true, + onPress: OnPressProp, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - onOpenChange(!open); - } - OnPressProp?.(ev); + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + onOpenChange(!open); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); -Overlay.displayName = 'OverlayNativeDialog'; + const Component = asChild ? Slot : Pressable; + return ; +}; -const Content = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { open, nativeID, onOpenChange } = useRootContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - onOpenChange(false); - return true; - }); - - return () => { - backHandler.remove(); - }; - }, []); - - if (!forceMount) { - if (!open) { - return null; - } - } +Overlay.displayName = 'OverlayNativeDialog'; - const Component = asChild ? Slot : View; - return ( - - ); +const Content = ( + { + ref, + asChild, + forceMount, + ...props + }: ContentProps & { + ref: React.RefObject; } -); +) => { + const { open, nativeID, onOpenChange } = useRootContext(); -Content.displayName = 'ContentNativeDialog'; + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + onOpenChange(false); + return true; + }); -const Close = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { onOpenChange } = useRootContext(); + return () => { + backHandler.remove(); + }; + }, []); - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - onOpenChange(false); - onPressProp?.(ev); + if (!forceMount) { + if (!open) { + return null; } + } + + const Component = asChild ? Slot : View; + return ( + + ); +}; - const Component = asChild ? Slot : Pressable; - return ( - - ); +Content.displayName = 'ContentNativeDialog'; + +const Close = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: CloseProps & { + ref: React.RefObject; } -); +) => { + const { onOpenChange } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + onOpenChange(false); + onPressProp?.(ev); + } + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Close.displayName = 'CloseNativeDialog'; -const Title = React.forwardRef((props, ref) => { +const Title = ( + { + ref, + ...props + }: TitleProps & { + ref: React.RefObject; + } +) => { const { nativeID } = useRootContext(); return ; -}); +}; Title.displayName = 'TitleNativeDialog'; -const Description = React.forwardRef((props, ref) => { +const Description = ( + { + ref, + ...props + }: DescriptionProps & { + ref: React.RefObject; + } +) => { const { nativeID } = useRootContext(); return ; -}); +}; Description.displayName = 'DescriptionNativeDialog'; diff --git a/packages/dialog/src/dialog.web.tsx b/packages/dialog/src/dialog.web.tsx index 6ccad2fb..ed688126 100644 --- a/packages/dialog/src/dialog.web.tsx +++ b/packages/dialog/src/dialog.web.tsx @@ -28,23 +28,32 @@ import type { const DialogContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, open: openProp, defaultOpen, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Root = ( + { + ref, + asChild, + open: openProp, + defaultOpen, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebDialog'; @@ -56,39 +65,48 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, role: _role, disabled, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { onOpenChange, open } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + role: _role, + disabled, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const augmentedRef = useAugmentedRef({ ref }); + const { onOpenChange, open } = useRootContext(); + function onPress(ev: GestureResponderEvent) { + if (onPressProp) { + onPressProp(ev); } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = open ? 'open' : 'closed'; - augRef.type = 'button'; - } - }, [open]); - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onOpenChange(!open); } -); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.dataset.state = open ? 'open' : 'closed'; + augRef.type = 'button'; + } + }, [open]); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebDialog'; @@ -96,110 +114,139 @@ function Portal({ forceMount, container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : Pressable; - return ( - - - - ); +const Overlay = ( + { + ref, + asChild, + forceMount, + ...props + }: OverlayProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Overlay.displayName = 'OverlayWebDialog'; -const Content = React.forwardRef( - ( - { - asChild, - forceMount, - onOpenAutoFocus, - onCloseAutoFocus, - onEscapeKeyDown, - onInteractOutside, - onPointerDownOutside, - ...props - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Content = ( + { + ref, + asChild, + forceMount, + onOpenAutoFocus, + onCloseAutoFocus, + onEscapeKeyDown, + onInteractOutside, + onPointerDownOutside, + ...props + }: ContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Content.displayName = 'ContentWebDialog'; -const Close = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { onOpenChange, open } = useRootContext(); +const Close = ( + { + ref, + asChild, + onPress: onPressProp, + disabled, + ...props + }: CloseProps & { + ref: React.RefObject; + } +) => { + const augmentedRef = useAugmentedRef({ ref }); + const { onOpenChange, open } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); + function onPress(ev: GestureResponderEvent) { + if (onPressProp) { + onPressProp(ev); } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.type = 'button'; - } - }, []); - - const Component = asChild ? Slot : Pressable; - return ( - <> - - - - - ); + onOpenChange(!open); } -); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.type = 'button'; + } + }, []); + + const Component = asChild ? Slot : Pressable; + return ( + <> + + + + + ); +}; Close.displayName = 'CloseWebDialog'; -const Title = React.forwardRef(({ asChild, ...props }, ref) => { +const Title = ( + { + ref, + asChild, + ...props + }: TitleProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ( ); -}); +}; Title.displayName = 'TitleWebDialog'; -const Description = React.forwardRef( - ({ asChild, ...props }, ref) => { - const Component = asChild ? Slot : Text; - return ( - - - - ); +const Description = ( + { + ref, + asChild, + ...props + }: DescriptionProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : Text; + return ( + + + + ); +}; Description.displayName = 'DescriptionWebDialog'; diff --git a/packages/dropdown-menu/src/dropdown-menu.tsx b/packages/dropdown-menu/src/dropdown-menu.tsx index b6477840..361d6321 100644 --- a/packages/dropdown-menu/src/dropdown-menu.tsx +++ b/packages/dropdown-menu/src/dropdown-menu.tsx @@ -62,36 +62,43 @@ interface IRootContext { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const nativeID = React.useId(); - const [triggerPosition, setTriggerPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - const [open, setOpen] = React.useState(false); - - function onOpenChange(open: boolean) { - setOpen(open); - onOpenChangeProp?.(open); - } - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const nativeID = React.useId(); + const [triggerPosition, setTriggerPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + const [open, setOpen] = React.useState(false); + + function onOpenChange(open: boolean) { + setOpen(open); + onOpenChangeProp?.(open); } -); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeDropdownMenu'; @@ -105,50 +112,58 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { open, onOpenChange, setTriggerPosition } = useRootContext(); - - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open: () => { - onOpenChange(true); - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - }, - close: () => { - setTriggerPosition(null); - onOpenChange(false); - }, +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setTriggerPosition } = useRootContext(); + + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open: () => { + onOpenChange(true); + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); }, - }); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - const newValue = !open; - onOpenChange(newValue); - onPressProp?.(ev); - } + close: () => { + setTriggerPosition(null); + onOpenChange(false); + }, + }, + }); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); + const newValue = !open; + onOpenChange(newValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativeDropdownMenu'; @@ -175,162 +190,194 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, onPress: OnPressProp, closeOnPress = true, ...props }, ref) => { - const { open, onOpenChange, setContentLayout, setTriggerPosition } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - OnPressProp?.(ev); +const Overlay = ( + { + ref, + asChild, + forceMount, + onPress: OnPressProp, + closeOnPress = true, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setContentLayout, setTriggerPosition } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayNativeDropdownMenu'; /** * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior by setting `disablePositioningStyle` to `true`. */ -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'start', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - ...props - }, - ref - ) => { - const { - open, - onOpenChange, - nativeID, - triggerPosition, - setTriggerPosition, - contentLayout, - setContentLayout, - } = useRootContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - return true; - }); - - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side, - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'start', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + open, + onOpenChange, + nativeID, + triggerPosition, + setTriggerPosition, + contentLayout, + setContentLayout, + } = useRootContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side, + disablePositioningStyle, + }); + + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ( - - ); } -); -Content.displayName = 'ContentNativeDropdownMenu'; + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; -const Item = React.forwardRef( - ( - { asChild, textValue, onPress: onPressProp, disabled = false, closeOnPress = true, ...props }, - ref - ) => { - const { onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); +Content.displayName = 'ContentNativeDropdownMenu'; - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - onPressProp?.(ev); +const Item = ( + { + ref, + asChild, + textValue, + onPress: onPressProp, + disabled = false, + closeOnPress = true, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } - - const Component = asChild ? Slot : Pressable; - return ( - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Item.displayName = 'ItemNativeDropdownMenu'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Group.displayName = 'GroupNativeDropdownMenu'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ; -}); +}; Label.displayName = 'LabelNativeDropdownMenu'; @@ -343,50 +390,50 @@ type FormItemContext = const FormItemContext = React.createContext(null); -const CheckboxItem = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - textValue, - onPress: onPressProp, - closeOnPress = true, - disabled = false, - ...props - }, - ref - ) => { - const { onOpenChange, setContentLayout, setTriggerPosition, nativeID } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - onCheckedChange(!checked); - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - onPressProp?.(ev); +const CheckboxItem = ( + { + ref, + asChild, + checked, + onCheckedChange, + textValue, + onPress: onPressProp, + closeOnPress = true, + disabled = false, + ...props + }: CheckboxItemProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, setContentLayout, setTriggerPosition, nativeID } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + onCheckedChange(!checked); + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; CheckboxItem.displayName = 'CheckboxItemNativeDropdownMenu'; @@ -400,16 +447,24 @@ function useFormItemContext() { return context; } -const RadioGroup = React.forwardRef( - ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const RadioGroup = ( + { + ref, + asChild, + value, + onValueChange, + ...props + }: RadioGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; RadioGroup.displayName = 'RadioGroupNativeDropdownMenu'; @@ -419,52 +474,52 @@ type BothFormItemContext = Exclude & { const RadioItemContext = React.createContext({} as { itemValue: string }); -const RadioItem = React.forwardRef( - ( - { - asChild, - value: itemValue, - textValue, - onPress: onPressProp, - disabled = false, - closeOnPress = true, - ...props - }, - ref - ) => { - const { onOpenChange, setContentLayout, setTriggerPosition } = useRootContext(); - - const { value, onValueChange } = useFormItemContext() as BothFormItemContext; - function onPress(ev: GestureResponderEvent) { - onValueChange(itemValue); - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - onPressProp?.(ev); +const RadioItem = ( + { + ref, + asChild, + value: itemValue, + textValue, + onPress: onPressProp, + disabled = false, + closeOnPress = true, + ...props + }: RadioItemProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, setContentLayout, setTriggerPosition } = useRootContext(); + + const { value, onValueChange } = useFormItemContext() as BothFormItemContext; + function onPress(ev: GestureResponderEvent) { + onValueChange(itemValue); + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; RadioItem.displayName = 'RadioItemNativeDropdownMenu'; @@ -472,32 +527,46 @@ function useItemIndicatorContext() { return React.useContext(RadioItemContext); } -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { itemValue } = useItemIndicatorContext(); - const { checked, value } = useFormItemContext() as BothFormItemContext; - - if (!forceMount) { - if (itemValue == null && !checked) { - return null; - } - if (value !== itemValue) { - return null; - } +const ItemIndicator = ( + { + ref, + asChild, + forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; + } +) => { + const { itemValue } = useItemIndicatorContext(); + const { checked, value } = useFormItemContext() as BothFormItemContext; + + if (!forceMount) { + if (itemValue == null && !checked) { + return null; + } + if (value !== itemValue) { + return null; } - const Component = asChild ? Slot : View; - return ; } -); + const Component = asChild ? Slot : View; + return ; +}; ItemIndicator.displayName = 'ItemIndicatorNativeDropdownMenu'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ; +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ; +}; Separator.displayName = 'SeparatorNativeDropdownMenu'; @@ -507,29 +576,38 @@ const SubContext = React.createContext<{ onOpenChange: (value: boolean) => void; } | null>(null); -const Sub = React.forwardRef( - ({ asChild, defaultOpen, open: openProp, onOpenChange: onOpenChangeProp, ...props }, ref) => { - const nativeID = React.useId(); - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Sub = ( + { + ref, + asChild, + defaultOpen, + open: openProp, + onOpenChange: onOpenChangeProp, + ...props + }: SubProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Sub.displayName = 'SubNativeDropdownMenu'; @@ -541,49 +619,65 @@ function useSubContext() { return context; } -const SubTrigger = React.forwardRef( - ({ asChild, textValue, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { nativeID, open, onOpenChange } = useSubContext(); - - function onPress(ev: GestureResponderEvent) { - onOpenChange(!open); - onPressProp?.(ev); - } +const SubTrigger = ( + { + ref, + asChild, + textValue, + onPress: onPressProp, + disabled = false, + ...props + }: SubTriggerProps & { + ref: React.RefObject; + } +) => { + const { nativeID, open, onOpenChange } = useSubContext(); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + onOpenChange(!open); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; SubTrigger.displayName = 'SubTriggerNativeDropdownMenu'; -const SubContent = React.forwardRef( - ({ asChild = false, forceMount, ...props }, ref) => { - const { open, nativeID } = useSubContext(); +const SubContent = ( + { + ref, + asChild = false, + forceMount, + ...props + }: SubContentProps & { + ref: React.RefObject; + } +) => { + const { open, nativeID } = useSubContext(); - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Content.displayName = 'ContentNativeDropdownMenu'; diff --git a/packages/dropdown-menu/src/dropdown-menu.web.tsx b/packages/dropdown-menu/src/dropdown-menu.web.tsx index d6877800..968edf94 100644 --- a/packages/dropdown-menu/src/dropdown-menu.web.tsx +++ b/packages/dropdown-menu/src/dropdown-menu.web.tsx @@ -47,25 +47,32 @@ const DropdownMenuContext = React.createContext<{ onOpenChange: (open: boolean) => void; } | null>(null); -const Root = React.forwardRef( - ({ asChild, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const [open, setOpen] = React.useState(false); - - function onOpenChange(open: boolean) { - setOpen(open); - onOpenChangeProp?.(open); - } +const Root = ( + { + ref, + asChild, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const [open, setOpen] = React.useState(false); - const Component = asChild ? Slot : View; - return ( - - - - - - ); + function onOpenChange(open: boolean) { + setOpen(open); + onOpenChangeProp?.(open); } -); + + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebDropdownMenu'; @@ -79,47 +86,54 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, disabled = false, ...props }, ref) => { - const { open, onOpenChange } = useRootContext(); - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open() { - onOpenChange(true); - }, - close() { - onOpenChange(false); - }, +const Trigger = ( + { + ref, + asChild, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange } = useRootContext(); + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open() { + onOpenChange(true); }, - }); + close() { + onOpenChange(false); + }, + }, + }); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = open ? 'open' : 'closed'; - } - }, [open]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + augRef.dataset.state = open ? 'open' : 'closed'; + } + }, [open]); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + if (disabled) { + augRef.dataset.disabled = 'true'; + } else { + augRef.dataset.disabled = undefined; } - }, [disabled]); + } + }, [disabled]); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); - } -); + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebDropdownMenu'; @@ -127,10 +141,18 @@ function Portal({ forceMount, container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { +const Overlay = ( + { + ref, + asChild, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Overlay.displayName = 'OverlayWebDropdownMenu'; @@ -138,70 +160,70 @@ const DropdownMenuContentContext = React.createContext<{ close: () => void; } | null>(null); -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align, - side, - sideOffset, - alignOffset = 0, - avoidCollisions = true, - insets, - loop = true, - onCloseAutoFocus, - onEscapeKeyDown, - onPointerDownOutside, - onFocusOutside, - onInteractOutside, - collisionBoundary, - sticky, - hideWhenDetached, - ...props - }, - ref - ) => { - const itemRef = React.useRef(null); +const Content = ( + { + ref, + asChild = false, + forceMount, + align, + side, + sideOffset, + alignOffset = 0, + avoidCollisions = true, + insets, + loop = true, + onCloseAutoFocus, + onEscapeKeyDown, + onPointerDownOutside, + onFocusOutside, + onInteractOutside, + collisionBoundary, + sticky, + hideWhenDetached, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const itemRef = React.useRef(null); - function close() { - itemRef.current?.click(); - } - const Component = asChild ? Slot : Pressable; - return ( - - - - - - ); + function close() { + itemRef.current?.click(); } -); + const Component = asChild ? Slot : Pressable; + return ( + + + + + + ); +}; Content.displayName = 'ContentWebDropdownMenu'; @@ -215,125 +237,141 @@ function useDropdownMenuContentContext() { return context; } -const Item = React.forwardRef( - ( - { - asChild, - textValue, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - const { close } = useDropdownMenuContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - if (closeOnPress) { - close(); - } - } - } +const Item = ( + { + ref, + asChild, + textValue, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { close } = useDropdownMenuContentContext(); - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); if (closeOnPress) { close(); } } + } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + if (closeOnPress) { + close(); + } } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Item.displayName = 'ItemWebDropdownMenu'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Group.displayName = 'GroupWebDropdownMenu'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ( ); -}); +}; Label.displayName = 'LabelWebDropdownMenu'; -const CheckboxItem = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - textValue, - disabled = false, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - const { close } = useDropdownMenuContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - onCheckedChange?.(!checked); - if (closeOnPress) { - close(); - } - } - } +const CheckboxItem = ( + { + ref, + asChild, + checked, + onCheckedChange, + textValue, + disabled = false, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: CheckboxItemProps & { + ref: React.RefObject; + } +) => { + const { close } = useDropdownMenuContentContext(); - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); onCheckedChange?.(!checked); if (closeOnPress) { close(); } } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); } -); + + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onCheckedChange?.(!checked); + if (closeOnPress) { + close(); + } + } + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; CheckboxItem.displayName = 'CheckboxItemWebDropdownMenu'; @@ -342,18 +380,26 @@ const DropdownMenuRadioGroupContext = React.createContext<{ onValueChange?: (value: string) => void; } | null>(null); -const RadioGroup = React.forwardRef( - ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const RadioGroup = ( + { + ref, + asChild, + value, + onValueChange, + ...props + }: RadioGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; RadioGroup.displayName = 'RadioGroupWebDropdownMenu'; @@ -367,80 +413,94 @@ function useDropdownMenuRadioGroupContext() { return context; } -const RadioItem = React.forwardRef( - ( - { - asChild, - value, - textValue, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - const { onValueChange } = useDropdownMenuRadioGroupContext(); - const { close } = useDropdownMenuContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onValueChange?.(value); - onPressProp?.(EmptyGestureResponderEvent); - if (closeOnPress) { - close(); - } - } - } +const RadioItem = ( + { + ref, + asChild, + value, + textValue, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: RadioItemProps & { + ref: React.RefObject; + } +) => { + const { onValueChange } = useDropdownMenuRadioGroupContext(); + const { close } = useDropdownMenuContentContext(); - function onPress(ev: GestureResponderEvent) { + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { onValueChange?.(value); - onPressProp?.(ev); + onPressProp?.(EmptyGestureResponderEvent); if (closeOnPress) { close(); } } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); } -); + + function onPress(ev: GestureResponderEvent) { + onValueChange?.(value); + onPressProp?.(ev); + if (closeOnPress) { + close(); + } + } + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; RadioItem.displayName = 'RadioItemWebDropdownMenu'; -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const ItemIndicator = ( + { + ref, + asChild, + forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; ItemIndicator.displayName = 'ItemIndicatorWebDropdownMenu'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Separator.displayName = 'SeparatorWebDropdownMenu'; @@ -449,24 +509,33 @@ const DropdownMenuSubContext = React.createContext<{ onOpenChange: (open: boolean) => void; } | null>(null); -const Sub = React.forwardRef( - ({ asChild, defaultOpen, open: openProp, onOpenChange: onOpenChangeProp, ...props }, ref) => { - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Sub = ( + { + ref, + asChild, + defaultOpen, + open: openProp, + onOpenChange: onOpenChangeProp, + ...props + }: SubProps & { + ref: React.RefObject; } -); +) => { + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Sub.displayName = 'SubWebDropdownMenu'; @@ -480,38 +549,54 @@ function useSubContext() { return context; } -const SubTrigger = React.forwardRef( - ({ asChild, textValue, disabled = false, onPress: onPressProp, ...props }, ref) => { - const { onOpenChange } = useSubContext(); - - function onPress(ev: GestureResponderEvent) { - onOpenChange(true); - onPressProp?.(ev); - } +const SubTrigger = ( + { + ref, + asChild, + textValue, + disabled = false, + onPress: onPressProp, + ...props + }: SubTriggerProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange } = useSubContext(); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onOpenChange(true); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; SubTrigger.displayName = 'SubTriggerWebDropdownMenu'; -const SubContent = React.forwardRef( - ({ asChild = false, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : Pressable; - return ( - - - - - - ); +const SubContent = ( + { + ref, + asChild = false, + forceMount, + ...props + }: SubContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : Pressable; + return ( + + + + + + ); +}; Content.displayName = 'ContentWebDropdownMenu'; diff --git a/packages/hover-card/src/hover-card.tsx b/packages/hover-card/src/hover-card.tsx index 15694a1a..482250f5 100644 --- a/packages/hover-card/src/hover-card.tsx +++ b/packages/hover-card/src/hover-card.tsx @@ -35,45 +35,45 @@ interface IRootContext extends SharedRootContext { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - openDelay: _openDelay, - closeDelay: _closeDelay, - onOpenChange: onOpenChangeProp, - ...viewProps - }, - ref - ) => { - const nativeID = React.useId(); - const [triggerPosition, setTriggerPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + openDelay: _openDelay, + closeDelay: _closeDelay, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const nativeID = React.useId(); + const [triggerPosition, setTriggerPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + const [open, setOpen] = React.useState(false); + + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); } -); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeHoverCard'; @@ -87,49 +87,57 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { open, onOpenChange, setTriggerPosition } = useRootContext(); - - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open: () => { - onOpenChange(true); - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - }, - close: () => { - setTriggerPosition(null); - onOpenChange(false); - }, +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setTriggerPosition } = useRootContext(); + + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open: () => { + onOpenChange(true); + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); }, - }); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); + close: () => { + setTriggerPosition(null); + onOpenChange(false); + }, + }, + }); - onOpenChange(!open); - onPressProp?.(ev); - } + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); - const Component = asChild ? Slot : Pressable; - return ( - - ); + onOpenChange(!open); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativeHoverCard'; @@ -156,115 +164,124 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, onPress: OnPressProp, closeOnPress = true, ...props }, ref) => { - const { open, onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - OnPressProp?.(ev); +const Overlay = ( + { + ref, + asChild, + forceMount, + onPress: OnPressProp, + closeOnPress = true, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayNativeHoverCard'; /** * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior by setting `disablePositioningStyle` to `true`. */ -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'start', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - ...props - }, - ref - ) => { - const { - open, - onOpenChange, - contentLayout, - nativeID, - setContentLayout, - setTriggerPosition, - triggerPosition, - } = useRootContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - return true; - }); - - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side, - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'start', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + open, + onOpenChange, + contentLayout, + nativeID, + setContentLayout, + setTriggerPosition, + triggerPosition, + } = useRootContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side, + disablePositioningStyle, + }); + + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); + + const Component = asChild ? Slot : View; + return ( + + ); +}; Content.displayName = 'ContentNativeHoverCard'; diff --git a/packages/hover-card/src/hover-card.web.tsx b/packages/hover-card/src/hover-card.web.tsx index 0daea5fe..8a9df685 100644 --- a/packages/hover-card/src/hover-card.web.tsx +++ b/packages/hover-card/src/hover-card.web.tsx @@ -18,30 +18,39 @@ import type { const HoverCardContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, openDelay, closeDelay, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } +const Root = ( + { + ref, + asChild, + openDelay, + closeDelay, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const [open, setOpen] = React.useState(false); - const Component = asChild ? Slot : View; - return ( - - - - - - ); + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); } -); + + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebHoverCard'; @@ -55,7 +64,15 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef(({ asChild, ...props }, ref) => { +const Trigger = ( + { + ref, + asChild, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { const { onOpenChange } = useRootContext(); const augmentedRef = useAugmentedRef({ ref, @@ -75,7 +92,7 @@ const Trigger = React.forwardRef(({ asChild, ...props ); -}); +}; Trigger.displayName = 'TriggerWebHoverCard'; @@ -83,60 +100,68 @@ function Portal({ forceMount, container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { +const Overlay = ( + { + ref, + asChild, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Overlay.displayName = 'OverlayWebHoverCard'; -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align, - side, - sideOffset, - alignOffset = 0, - avoidCollisions = true, - insets, - loop: _loop, - onCloseAutoFocus: _onCloseAutoFocus, - onEscapeKeyDown, - onPointerDownOutside, - onFocusOutside, - onInteractOutside, - collisionBoundary, - sticky, - hideWhenDetached, - ...props - }, - ref - ) => { - const Component = asChild ? Slot : Pressable; - return ( - - - - ); +const Content = ( + { + ref, + asChild = false, + forceMount, + align, + side, + sideOffset, + alignOffset = 0, + avoidCollisions = true, + insets, + loop: _loop, + onCloseAutoFocus: _onCloseAutoFocus, + onEscapeKeyDown, + onPointerDownOutside, + onFocusOutside, + onInteractOutside, + collisionBoundary, + sticky, + hideWhenDetached, + ...props + }: ContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Content.displayName = 'ContentWebHoverCard'; diff --git a/packages/label/src/label.tsx b/packages/label/src/label.tsx index b9ce9334..f032ca35 100644 --- a/packages/label/src/label.tsx +++ b/packages/label/src/label.tsx @@ -3,17 +3,33 @@ import * as React from 'react'; import { Pressable, Text as RNText } from 'react-native'; import type { RootProps, RootRef, TextProps, TextRef } from './types'; -const Root = React.forwardRef(({ asChild, ...props }, ref) => { +const Root = ( + { + ref, + asChild, + ...props + }: RootProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Root.displayName = 'RootNativeLabel'; -const Text = React.forwardRef(({ asChild, ...props }, ref) => { +const Text = ( + { + ref, + asChild, + ...props + }: TextProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : RNText; return ; -}); +}; Text.displayName = 'TextNativeLabel'; diff --git a/packages/label/src/label.web.tsx b/packages/label/src/label.web.tsx index a5e90faf..cdb61a89 100644 --- a/packages/label/src/label.web.tsx +++ b/packages/label/src/label.web.tsx @@ -4,23 +4,40 @@ import * as React from 'react'; import { Pressable, Text as RNText } from 'react-native'; import type { RootProps, RootRef, TextProps, TextRef } from './types'; -const Root = React.forwardRef(({ asChild, tabIndex = -1, ...props }, ref) => { +const Root = ( + { + ref, + asChild, + tabIndex = -1, + ...props + }: RootProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Root.displayName = 'RootWebLabel'; -const Text = React.forwardRef( - ({ asChild, nativeID, htmlFor, ...props }, ref) => { - const Component = asChild ? Slot : RNText; - return ( - - - - ); +const Text = ( + { + ref, + asChild, + nativeID, + htmlFor, + ...props + }: TextProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : RNText; + return ( + + + + ); +}; Text.displayName = 'TextWebLabel'; diff --git a/packages/menubar/src/menubar.tsx b/packages/menubar/src/menubar.tsx index 8637e996..f359cbbf 100644 --- a/packages/menubar/src/menubar.tsx +++ b/packages/menubar/src/menubar.tsx @@ -62,30 +62,38 @@ interface IMenuContext extends RootProps { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, value, onValueChange, ...viewProps }, ref) => { - const nativeID = React.useId(); - const [triggerPosition, setTriggerPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const [triggerPosition, setTriggerPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootMenubar'; @@ -99,7 +107,16 @@ function useRootContext() { const MenuContext = React.createContext(null); -const Menu = React.forwardRef(({ asChild, value, ...viewProps }, ref) => { +const Menu = ( + { + ref, + asChild, + value, + ...viewProps + }: MenuProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( (({ asChild, value, ...viewProp ); -}); +}; Menu.displayName = 'MenuMenubar'; @@ -122,36 +139,44 @@ function useMenuContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const triggerRef = useAugmentedRef({ ref }); - const { value, onValueChange, setTriggerPosition } = useRootContext(); - const { value: menuValue } = useMenuContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - triggerRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY, height }); - }); - - onValueChange(menuValue === value ? undefined : menuValue); - onPressProp?.(ev); - } +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const triggerRef = useAugmentedRef({ ref }); + const { value, onValueChange, setTriggerPosition } = useRootContext(); + const { value: menuValue } = useMenuContext(); + + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + triggerRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY, height }); + }); - const Component = asChild ? Slot : Pressable; - return ( - - ); + onValueChange(menuValue === value ? undefined : menuValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerMenubar'; @@ -183,164 +208,196 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, onPress: OnPressProp, closeOnPress = true, ...props }, ref) => { - const { value, onValueChange, setContentLayout, setTriggerPosition } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onValueChange(undefined); - } - OnPressProp?.(ev); +const Overlay = ( + { + ref, + asChild, + forceMount, + onPress: OnPressProp, + closeOnPress = true, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { value, onValueChange, setContentLayout, setTriggerPosition } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onValueChange(undefined); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!value) { - return null; - } + if (!forceMount) { + if (!value) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayMenubar'; /** * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior by setting `disablePositioningStyle` to `true`. */ -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'start', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - ...props - }, - ref - ) => { - const { - value, - onValueChange, - triggerPosition, - contentLayout, - setContentLayout, - nativeID, - setTriggerPosition, - } = useRootContext(); - const { value: menuValue } = useMenuContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setTriggerPosition(null); - setContentLayout(null); - onValueChange(undefined); - return true; - }); - - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side, - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'start', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + value, + onValueChange, + triggerPosition, + contentLayout, + setContentLayout, + nativeID, + setTriggerPosition, + } = useRootContext(); + const { value: menuValue } = useMenuContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setTriggerPosition(null); + setContentLayout(null); + onValueChange(undefined); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side, + disablePositioningStyle, + }); + + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - if (!forceMount) { - if (value !== menuValue) { - return null; - } + if (!forceMount) { + if (value !== menuValue) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); + + const Component = asChild ? Slot : View; + return ( + + ); +}; Content.displayName = 'ContentMenubar'; -const Item = React.forwardRef( - ( - { asChild, textValue, onPress: onPressProp, disabled = false, closeOnPress = true, ...props }, - ref - ) => { - const { onValueChange, setContentLayout, setTriggerPosition } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onValueChange(undefined); - } - onPressProp?.(ev); +const Item = ( + { + ref, + asChild, + textValue, + onPress: onPressProp, + disabled = false, + closeOnPress = true, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { onValueChange, setContentLayout, setTriggerPosition } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onValueChange(undefined); } - - const Component = asChild ? Slot : Pressable; - return ( - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Item.displayName = 'ItemMenubar'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Group.displayName = 'GroupMenubar'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ; -}); +}; Label.displayName = 'LabelMenubar'; @@ -353,50 +410,50 @@ type FormItemContext = const FormItemContext = React.createContext(null); -const CheckboxItem = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - textValue, - onPress: onPressProp, - closeOnPress = true, - disabled = false, - ...props - }, - ref - ) => { - const { onValueChange, setTriggerPosition, setContentLayout, nativeID } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - onCheckedChange(!checked); - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onValueChange(undefined); - } - onPressProp?.(ev); +const CheckboxItem = ( + { + ref, + asChild, + checked, + onCheckedChange, + textValue, + onPress: onPressProp, + closeOnPress = true, + disabled = false, + ...props + }: CheckboxItemProps & { + ref: React.RefObject; + } +) => { + const { onValueChange, setTriggerPosition, setContentLayout, nativeID } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + onCheckedChange(!checked); + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onValueChange(undefined); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; CheckboxItem.displayName = 'CheckboxItemMenubar'; @@ -410,16 +467,24 @@ function useFormItemContext() { return context; } -const RadioGroup = React.forwardRef( - ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const RadioGroup = ( + { + ref, + asChild, + value, + onValueChange, + ...props + }: RadioGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; RadioGroup.displayName = 'RadioGroupMenubar'; @@ -429,56 +494,56 @@ type BothFormItemContext = Exclude & { const RadioItemContext = React.createContext({} as { itemValue: string }); -const RadioItem = React.forwardRef( - ( - { - asChild, - value: itemValue, - textValue, - onPress: onPressProp, - disabled = false, - closeOnPress = true, - ...props - }, - ref - ) => { - const { - onValueChange: onRootValueChange, - setTriggerPosition, - setContentLayout, - } = useRootContext(); - - const { value, onValueChange } = useFormItemContext() as BothFormItemContext; - function onPress(ev: GestureResponderEvent) { - onValueChange(itemValue); - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onRootValueChange(undefined); - } - onPressProp?.(ev); +const RadioItem = ( + { + ref, + asChild, + value: itemValue, + textValue, + onPress: onPressProp, + disabled = false, + closeOnPress = true, + ...props + }: RadioItemProps & { + ref: React.RefObject; + } +) => { + const { + onValueChange: onRootValueChange, + setTriggerPosition, + setContentLayout, + } = useRootContext(); + + const { value, onValueChange } = useFormItemContext() as BothFormItemContext; + function onPress(ev: GestureResponderEvent) { + onValueChange(itemValue); + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onRootValueChange(undefined); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; RadioItem.displayName = 'RadioItemMenubar'; @@ -486,32 +551,46 @@ function useItemIndicatorContext() { return React.useContext(RadioItemContext); } -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { itemValue } = useItemIndicatorContext(); - const { checked, value } = useFormItemContext() as BothFormItemContext; - - if (!forceMount) { - if (itemValue == null && !checked) { - return null; - } - if (value !== itemValue) { - return null; - } +const ItemIndicator = ( + { + ref, + asChild, + forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; + } +) => { + const { itemValue } = useItemIndicatorContext(); + const { checked, value } = useFormItemContext() as BothFormItemContext; + + if (!forceMount) { + if (itemValue == null && !checked) { + return null; + } + if (value !== itemValue) { + return null; } - const Component = asChild ? Slot : View; - return ; } -); + const Component = asChild ? Slot : View; + return ; +}; ItemIndicator.displayName = 'ItemIndicatorMenubar'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ; +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ; +}; Separator.displayName = 'SeparatorMenubar'; @@ -521,29 +600,38 @@ const SubContext = React.createContext<{ onOpenChange: (value: boolean) => void; } | null>(null); -const Sub = React.forwardRef( - ({ asChild, defaultOpen, open: openProp, onOpenChange: onOpenChangeProp, ...props }, ref) => { - const nativeID = React.useId(); - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Sub = ( + { + ref, + asChild, + defaultOpen, + open: openProp, + onOpenChange: onOpenChangeProp, + ...props + }: SubProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Sub.displayName = 'SubMenubar'; @@ -555,49 +643,65 @@ function useSubContext() { return context; } -const SubTrigger = React.forwardRef( - ({ asChild, textValue, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { nativeID, open, onOpenChange } = useSubContext(); - - function onPress(ev: GestureResponderEvent) { - onOpenChange(!open); - onPressProp?.(ev); - } +const SubTrigger = ( + { + ref, + asChild, + textValue, + onPress: onPressProp, + disabled = false, + ...props + }: SubTriggerProps & { + ref: React.RefObject; + } +) => { + const { nativeID, open, onOpenChange } = useSubContext(); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + onOpenChange(!open); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; SubTrigger.displayName = 'SubTriggerMenubar'; -const SubContent = React.forwardRef( - ({ asChild = false, forceMount, ...props }, ref) => { - const { open, nativeID } = useSubContext(); +const SubContent = ( + { + ref, + asChild = false, + forceMount, + ...props + }: SubContentProps & { + ref: React.RefObject; + } +) => { + const { open, nativeID } = useSubContext(); - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : View; - return ; } -); + + const Component = asChild ? Slot : View; + return ; +}; SubContent.displayName = 'SubContentMenubar'; diff --git a/packages/menubar/src/menubar.web.tsx b/packages/menubar/src/menubar.web.tsx index 3b32c770..701f8495 100644 --- a/packages/menubar/src/menubar.web.tsx +++ b/packages/menubar/src/menubar.web.tsx @@ -46,18 +46,26 @@ import type { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, value, onValueChange, ...viewProps }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebMenubar'; @@ -71,7 +79,16 @@ function useRootContext() { const MenuContext = React.createContext(null); -const Menu = React.forwardRef(({ asChild, value, ...viewProps }, ref) => { +const Menu = ( + { + ref, + asChild, + value, + ...viewProps + }: MenuProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( @@ -80,7 +97,7 @@ const Menu = React.forwardRef(({ asChild, value, ...viewProp ); -}); +}; Menu.displayName = 'MenuWebMenubar'; @@ -92,38 +109,45 @@ function useMenuContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, disabled = false, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { value: menuValue } = useMenuContext(); - const { value } = useRootContext(); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = value && menuValue === value ? 'open' : 'closed'; - } - }, [value && menuValue]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } +const Trigger = ( + { + ref, + asChild, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const augmentedRef = useAugmentedRef({ ref }); + const { value: menuValue } = useMenuContext(); + const { value } = useRootContext(); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + augRef.dataset.state = value && menuValue === value ? 'open' : 'closed'; + } + }, [value && menuValue]); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLDivElement; + if (disabled) { + augRef.dataset.disabled = 'true'; + } else { + augRef.dataset.disabled = undefined; } - }, [disabled]); + } + }, [disabled]); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); - } -); + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebMenubar'; @@ -131,10 +155,18 @@ function Portal({ forceMount, container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef(({ asChild, ...props }, ref) => { +const Overlay = ( + { + ref, + asChild, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Overlay.displayName = 'OverlayWebMenubar'; @@ -142,71 +174,71 @@ const MenubarContentContext = React.createContext<{ close: () => void; } | null>(null); -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align, - side, - sideOffset, - alignOffset = 0, - avoidCollisions = true, - insets, - loop, - onCloseAutoFocus, - onEscapeKeyDown, - onPointerDownOutside, - onFocusOutside, - onInteractOutside, - collisionBoundary, - sticky, - hideWhenDetached, - ...props - }, - ref - ) => { - const itemRef = React.useRef(null); - - function close() { - itemRef.current?.click(); - } +const Content = ( + { + ref, + asChild = false, + forceMount, + align, + side, + sideOffset, + alignOffset = 0, + avoidCollisions = true, + insets, + loop, + onCloseAutoFocus, + onEscapeKeyDown, + onPointerDownOutside, + onFocusOutside, + onInteractOutside, + collisionBoundary, + sticky, + hideWhenDetached, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const itemRef = React.useRef(null); - const Component = asChild ? Slot : View; - return ( - - - - - - ); + function close() { + itemRef.current?.click(); } -); + + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Content.displayName = 'ContentWebMenubar'; @@ -220,123 +252,139 @@ function useMenubarContentContext() { return context; } -const Item = React.forwardRef( - ( - { - asChild, - textValue, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - const { close } = useMenubarContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - if (closeOnPress) { - close(); - } - } - } +const Item = ( + { + ref, + asChild, + textValue, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { close } = useMenubarContentContext(); - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); if (closeOnPress) { close(); } } + } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + if (closeOnPress) { + close(); + } } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Item.displayName = 'ItemWebMenubar'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Group.displayName = 'GroupWebMenubar'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ( ); -}); +}; Label.displayName = 'LabelWebMenubar'; -const CheckboxItem = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - textValue, - disabled = false, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - onCheckedChange?.(!checked); - if (closeOnPress) { - close(); - } - } - } - - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); +const CheckboxItem = ( + { + ref, + asChild, + checked, + onCheckedChange, + textValue, + disabled = false, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: CheckboxItemProps & { + ref: React.RefObject; + } +) => { + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); onCheckedChange?.(!checked); if (closeOnPress) { close(); } } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); } -); + + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onCheckedChange?.(!checked); + if (closeOnPress) { + close(); + } + } + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; CheckboxItem.displayName = 'CheckboxItemWebMenubar'; @@ -345,18 +393,26 @@ const MenubarRadioGroupContext = React.createContext<{ onValueChange?: (value: string) => void; } | null>(null); -const RadioGroup = React.forwardRef( - ({ asChild, value, onValueChange, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const RadioGroup = ( + { + ref, + asChild, + value, + onValueChange, + ...props + }: RadioGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; RadioGroup.displayName = 'RadioGroupWebMenubar'; @@ -370,80 +426,94 @@ function useMenubarRadioGroupContext() { return context; } -const RadioItem = React.forwardRef( - ( - { - asChild, - value, - textValue, - closeOnPress = true, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - const { onValueChange } = useMenubarRadioGroupContext(); - const { close } = useMenubarContentContext(); - - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onValueChange?.(value); - onPressProp?.(EmptyGestureResponderEvent); - if (closeOnPress) { - close(); - } - } - } +const RadioItem = ( + { + ref, + asChild, + value, + textValue, + closeOnPress = true, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: RadioItemProps & { + ref: React.RefObject; + } +) => { + const { onValueChange } = useMenubarRadioGroupContext(); + const { close } = useMenubarContentContext(); - function onPress(ev: GestureResponderEvent) { + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { onValueChange?.(value); - onPressProp?.(ev); + onPressProp?.(EmptyGestureResponderEvent); if (closeOnPress) { close(); } } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); } -); + + function onPress(ev: GestureResponderEvent) { + onValueChange?.(value); + onPressProp?.(ev); + if (closeOnPress) { + close(); + } + } + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; RadioItem.displayName = 'RadioItemWebMenubar'; -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const ItemIndicator = ( + { + ref, + asChild, + forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; ItemIndicator.displayName = 'ItemIndicatorWebMenubar'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Separator.displayName = 'SeparatorWebMenubar'; @@ -452,23 +522,32 @@ const MenubarSubContext = React.createContext<{ onOpenChange: (open: boolean) => void; } | null>(null); -const Sub = React.forwardRef( - ({ asChild, defaultOpen, open: openProp, onOpenChange: onOpenChangeProp, ...props }, ref) => { - const [open = false, onOpenChange] = useControllableState({ - prop: openProp, - defaultProp: defaultOpen, - onChange: onOpenChangeProp, - }); - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Sub = ( + { + ref, + asChild, + defaultOpen, + open: openProp, + onOpenChange: onOpenChangeProp, + ...props + }: SubProps & { + ref: React.RefObject; } -); +) => { + const [open = false, onOpenChange] = useControllableState({ + prop: openProp, + defaultProp: defaultOpen, + onChange: onOpenChangeProp, + }); + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Sub.displayName = 'SubWebMenubar'; @@ -482,38 +561,54 @@ function useSubContext() { return context; } -const SubTrigger = React.forwardRef( - ({ asChild, textValue, disabled = false, onPress: onPressProp, ...props }, ref) => { - const { onOpenChange } = useSubContext(); - - function onPress(ev: GestureResponderEvent) { - onOpenChange(true); - onPressProp?.(ev); - } +const SubTrigger = ( + { + ref, + asChild, + textValue, + disabled = false, + onPress: onPressProp, + ...props + }: SubTriggerProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange } = useSubContext(); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onOpenChange(true); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; SubTrigger.displayName = 'SubTriggerWebMenubar'; -const SubContent = React.forwardRef( - ({ asChild = false, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const SubContent = ( + { + ref, + asChild = false, + forceMount, + ...props + }: SubContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Content.displayName = 'ContentWebMenubar'; diff --git a/packages/navigation-menu/src/navigation-menu.tsx b/packages/navigation-menu/src/navigation-menu.tsx index 5e2439df..f8a150a2 100644 --- a/packages/navigation-menu/src/navigation-menu.tsx +++ b/packages/navigation-menu/src/navigation-menu.tsx @@ -40,30 +40,38 @@ interface INavigationMenuRootContext extends RootProps { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, value, onValueChange, ...viewProps }, ref) => { - const nativeID = React.useId(); - const [triggerPosition, setTriggerPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const [triggerPosition, setTriggerPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeNavigationMenu'; @@ -77,16 +85,33 @@ function useRootContext() { return context; } -const List = React.forwardRef(({ asChild, ...viewProps }, ref) => { +const List = ( + { + ref, + asChild, + ...viewProps + }: ListProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; List.displayName = 'ListNativeNavigationMenu'; const ItemContext = React.createContext<(ItemProps & { nativeID: string }) | null>(null); -const Item = React.forwardRef(({ asChild, value, ...viewProps }, ref) => { +const Item = ( + { + ref, + asChild, + value, + ...viewProps + }: ItemProps & { + ref: React.RefObject; + } +) => { const nativeID = React.useId(); const Component = asChild ? Slot : View; @@ -100,7 +125,7 @@ const Item = React.forwardRef(({ asChild, value, ...viewProp ); -}); +}; Item.displayName = 'ItemNativeNavigationMenu'; @@ -114,49 +139,57 @@ function useItemContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const triggerRef = React.useRef(null); - const { value, onValueChange, setTriggerPosition } = useRootContext(); - const { value: menuValue } = useItemContext(); - - // TODO: double check that the ref passed to this component has all the correct methods - React.useImperativeHandle( - ref, - // @ts-expect-error - () => { - if (!triggerRef.current) { - return new View({}); - } - return triggerRef.current; - }, - [triggerRef.current] - ); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - triggerRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const triggerRef = React.useRef(null); + const { value, onValueChange, setTriggerPosition } = useRootContext(); + const { value: menuValue } = useItemContext(); + + // TODO: double check that the ref passed to this component has all the correct methods + React.useImperativeHandle( + ref, + // @ts-expect-error + () => { + if (!triggerRef.current) { + return new View({}); + } + return triggerRef.current; + }, + [triggerRef.current] + ); - onValueChange(menuValue === value ? '' : menuValue); - onPressProp?.(ev); - } + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + triggerRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); - const Component = asChild ? Slot : Pressable; - return ( - - ); + onValueChange(menuValue === value ? '' : menuValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativeNavigationMenu'; @@ -192,106 +225,129 @@ function Portal({ forceMount, hostName, children }: PortalProps) { /** * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior by setting `disablePositioningStyle` to `true`. */ -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'center', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - ...props - }, - ref - ) => { - const { - value, - onValueChange, - triggerPosition, - setTriggerPosition, - contentLayout, - setContentLayout, - } = useRootContext(); - const { value: menuValue, nativeID } = useItemContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setTriggerPosition(null); - setContentLayout(null); - onValueChange(''); - return true; - }); - - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side, - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'center', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + value, + onValueChange, + triggerPosition, + setTriggerPosition, + contentLayout, + setContentLayout, + } = useRootContext(); + const { value: menuValue, nativeID } = useItemContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setTriggerPosition(null); + setContentLayout(null); + onValueChange(''); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side, + disablePositioningStyle, + }); + + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - if (!forceMount) { - if (value !== menuValue) { - return null; - } + if (!forceMount) { + if (value !== menuValue) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); + + const Component = asChild ? Slot : View; + return ( + + ); +}; Content.displayName = 'ContentNativeNavigationMenu'; -const Link = React.forwardRef(({ asChild, ...props }, ref) => { +const Link = ( + { + ref, + asChild, + ...props + }: LinkProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Link.displayName = 'LinkNativeNavigationMenu'; -const Viewport = React.forwardRef((props, ref) => { +const Viewport = ( + { + ref, + ...props + }: ViewportProps & { + ref: React.RefObject; + } +) => { return ; -}); +}; Viewport.displayName = 'ViewportNativeNavigationMenu'; -const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { +const Indicator = ( + { + ref, + asChild, + ...props + }: IndicatorProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Indicator.displayName = 'IndicatorNativeNavigationMenu'; diff --git a/packages/navigation-menu/src/navigation-menu.web.tsx b/packages/navigation-menu/src/navigation-menu.web.tsx index 443d53c3..9b28abf6 100644 --- a/packages/navigation-menu/src/navigation-menu.web.tsx +++ b/packages/navigation-menu/src/navigation-menu.web.tsx @@ -26,37 +26,37 @@ import type { const NavigationMenuContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - value, - onValueChange, - delayDuration, - skipDelayDuration, - dir, - orientation, - ...viewProps - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + delayDuration, + skipDelayDuration, + dir, + orientation, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebNavigationMenu'; @@ -70,7 +70,15 @@ function useRootContext() { return context; } -const List = React.forwardRef(({ asChild, ...viewProps }, ref) => { +const List = ( + { + ref, + asChild, + ...viewProps + }: ListProps & { + ref: React.RefObject; + } +) => { const augmentedRef = useAugmentedRef({ ref }); const { orientation } = useRootContext(); @@ -87,13 +95,22 @@ const List = React.forwardRef(({ asChild, ...viewProps }, re ); -}); +}; List.displayName = 'ListWebNavigationMenu'; const ItemContext = React.createContext(null); -const Item = React.forwardRef(({ asChild, value, ...props }, ref) => { +const Item = ( + { + ref, + asChild, + value, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( @@ -102,7 +119,7 @@ const Item = React.forwardRef(({ asChild, value, ...props }, ); -}); +}; Item.displayName = 'ItemWebNavigationMenu'; @@ -116,34 +133,40 @@ function useItemContext() { return context; } -const Trigger = React.forwardRef( - ( - { asChild, onPress: onPressProp, disabled = false, onKeyDown: onKeyDownProp, ...props }, - ref - ) => { - const { value: rootValue, onValueChange } = useRootContext(); - const { value } = useItemContext(); - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - onValueChange(value === rootValue ? '' : value); - } - } - - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + onKeyDown: onKeyDownProp, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { value: rootValue, onValueChange } = useRootContext(); + const { value } = useItemContext(); + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); onValueChange(value === rootValue ? '' : value); } + } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onValueChange(value === rootValue ? '' : value); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebNavigationMenu'; @@ -151,89 +174,113 @@ function Portal({ children }: PortalProps) { return <>{children}; } -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align: _align, - side: _side, - sideOffset: _sideOffset, - alignOffset: _alignOffset, - avoidCollisions: _avoidCollisions, - onLayout: onLayoutProp, - insets: _insets, - disablePositioningStyle: _disablePositioningStyle, - onEscapeKeyDown, - onPointerDownOutside, - onFocusOutside, - onInteractOutside, - ...props - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Content = ( + { + ref, + asChild = false, + forceMount, + align: _align, + side: _side, + sideOffset: _sideOffset, + alignOffset: _alignOffset, + avoidCollisions: _avoidCollisions, + onLayout: onLayoutProp, + insets: _insets, + disablePositioningStyle: _disablePositioningStyle, + onEscapeKeyDown, + onPointerDownOutside, + onFocusOutside, + onInteractOutside, + ...props + }: ContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Content.displayName = 'ContentWebNavigationMenu'; -const Link = React.forwardRef( - ({ asChild, active, onPress: onPressProp, onKeyDown: onKeyDownProp, ...props }, ref) => { - const { onValueChange } = useRootContext(); - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === 'Enter' || ev.key === ' ') { - onPressProp?.(EmptyGestureResponderEvent); - onValueChange(''); - } - } - - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); +const Link = ( + { + ref, + asChild, + active, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: LinkProps & { + ref: React.RefObject; + } +) => { + const { onValueChange } = useRootContext(); + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === 'Enter' || ev.key === ' ') { + onPressProp?.(EmptyGestureResponderEvent); onValueChange(''); } + } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onValueChange(''); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Link.displayName = 'LinkWebNavigationMenu'; -const Viewport = React.forwardRef((props, ref) => { +const Viewport = ( + { + ref, + ...props + }: ViewportProps & { + ref: React.RefObject; + } +) => { return ( ); -}); +}; Viewport.displayName = 'ViewportWebNavigationMenu'; -const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { +const Indicator = ( + { + ref, + asChild, + ...props + }: IndicatorProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Indicator.displayName = 'IndicatorWebNavigationMenu'; diff --git a/packages/popover/src/popover.tsx b/packages/popover/src/popover.tsx index cfeb74de..b63cfc46 100644 --- a/packages/popover/src/popover.tsx +++ b/packages/popover/src/popover.tsx @@ -36,36 +36,43 @@ interface IRootContext { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const nativeID = React.useId(); - const [triggerPosition, setTriggerPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const nativeID = React.useId(); + const [triggerPosition, setTriggerPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + const [open, setOpen] = React.useState(false); + + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); } -); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativePopover'; @@ -77,48 +84,56 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { onOpenChange, open, setTriggerPosition } = useRootContext(); - - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open: () => { - onOpenChange(true); - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - }, - close: () => { - setTriggerPosition(null); - onOpenChange(false); - }, +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, open, setTriggerPosition } = useRootContext(); + + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open: () => { + onOpenChange(true); + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); }, - }); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - onOpenChange(!open); - onPressProp?.(ev); - } + close: () => { + setTriggerPosition(null); + onOpenChange(false); + }, + }, + }); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); + onOpenChange(!open); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativePopover'; @@ -145,144 +160,161 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, onPress: OnPressProp, closeOnPress = true, ...props }, ref) => { - const { open, onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); +const Overlay = ( + { + ref, + asChild, + forceMount, + onPress: OnPressProp, + closeOnPress = true, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - OnPressProp?.(ev); + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayNativePopover'; /** * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior by setting `disablePositioningStyle` to `true`. */ -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'start', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - onOpenAutoFocus: _onOpenAutoFocus, - ...props - }, - ref - ) => { - const { - open, - onOpenChange, - contentLayout, - nativeID, - setContentLayout, - setTriggerPosition, - triggerPosition, - } = useRootContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - return true; - }); - - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side, - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'start', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + onOpenAutoFocus: _onOpenAutoFocus, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + open, + onOpenChange, + contentLayout, + nativeID, + setContentLayout, + setTriggerPosition, + triggerPosition, + } = useRootContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side, + disablePositioningStyle, + }); + + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); -Content.displayName = 'ContentNativePopover'; - -const Close = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { onOpenChange, setContentLayout, setTriggerPosition } = useRootContext(); + const Component = asChild ? Slot : View; + return ( + + ); +}; - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - onPressProp?.(ev); - } +Content.displayName = 'ContentNativePopover'; - const Component = asChild ? Slot : Pressable; - return ( - - ); +const Close = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: CloseProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, setContentLayout, setTriggerPosition } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Close.displayName = 'CloseNativePopover'; diff --git a/packages/popover/src/popover.web.tsx b/packages/popover/src/popover.web.tsx index fa62214e..40801ea8 100644 --- a/packages/popover/src/popover.web.tsx +++ b/packages/popover/src/popover.web.tsx @@ -22,24 +22,22 @@ const RootContext = React.createContext<{ onOpenChange: (open: boolean) => void; } | null>(null); -const Root = React.forwardRef void }>( - ({ asChild, onOpenChange: onOpenChangeProp, ...viewProps }, ref) => { - const [open, setOpen] = React.useState(false); +const Root = ({ ref, asChild, onOpenChange: onOpenChangeProp, ...viewProps }: RootProps) => { + const [open, setOpen] = React.useState(false); - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } - const Component = asChild ? Slot : View; - return ( - - - - - - ); + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); } -); + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebPopover'; @@ -51,49 +49,56 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, role: _role, disabled, ...props }, ref) => { - const { onOpenChange, open } = useRootContext(); - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open() { - onOpenChange(true); - }, - close() { - onOpenChange(false); - }, +const Trigger = ({ + ref, + asChild, + onPress: onPressProp, + role: _role, + disabled, + ...props +}: TriggerProps & { + ref: React.RefObject; +}) => { + const { onOpenChange, open } = useRootContext(); + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open() { + onOpenChange(true); + }, + close() { + onOpenChange(false); }, - }); - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); + }, + }); + function onPress(ev: GestureResponderEvent) { + if (onPressProp) { + onPressProp(ev); } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = open ? 'open' : 'closed'; - augRef.type = 'button'; - } - }, [open]); - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onOpenChange(!open); } -); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.dataset.state = open ? 'open' : 'closed'; + augRef.type = 'button'; + } + }, [open]); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebPopover'; @@ -101,94 +106,103 @@ function Portal({ forceMount, container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : Pressable; - return ; - } -); +const Overlay = ({ + ref, + asChild, + forceMount, + ...props +}: OverlayProps & { + ref: React.RefObject; +}) => { + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayWebPopover'; -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'start', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - insets: _insets, - disablePositioningStyle: _disablePositioningStyle, - onCloseAutoFocus, - onEscapeKeyDown, - onInteractOutside, - onPointerDownOutside, - onOpenAutoFocus, - ...props - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); - } -); +const Content = ({ + ref, + asChild = false, + forceMount, + align = 'start', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + insets: _insets, + disablePositioningStyle: _disablePositioningStyle, + onCloseAutoFocus, + onEscapeKeyDown, + onInteractOutside, + onPointerDownOutside, + onOpenAutoFocus, + ...props +}: ContentProps & { + ref: React.RefObject; +}) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Content.displayName = 'ContentWebPopover'; -const Close = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled, ...props }, ref) => { - const augmentedRef = useAugmentedRef({ ref }); - const { onOpenChange, open } = useRootContext(); +const Close = ({ + ref, + asChild, + onPress: onPressProp, + disabled, + ...props +}: CloseProps & { + ref: React.RefObject; +}) => { + const augmentedRef = useAugmentedRef({ ref }); + const { onOpenChange, open } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (onPressProp) { + onPressProp(ev); + } + onOpenChange(!open); + } - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.type = 'button'; } + }, []); - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.type = 'button'; - } - }, []); - - const Component = asChild ? Slot : Pressable; - return ( - <> - - - - - ); - } -); + const Component = asChild ? Slot : Pressable; + return ( + <> + + + + + ); +}; Close.displayName = 'CloseWebPopover'; diff --git a/packages/progress/src/progress.tsx b/packages/progress/src/progress.tsx index 0da6dd8b..e15969b6 100644 --- a/packages/progress/src/progress.tsx +++ b/packages/progress/src/progress.tsx @@ -9,41 +9,55 @@ import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; const DEFAULT_MAX = 100; -const Root = React.forwardRef( - ( - { asChild, value: valueProp, max: maxProp, getValueLabel = defaultGetValueLabel, ...props }, - ref - ) => { - const max = maxProp ?? DEFAULT_MAX; - const value = isValidValueNumber(valueProp, max) ? valueProp : 0; - - const Component = asChild ? Slot : View; - return ( - - ); +const Root = ( + { + ref, + asChild, + value: valueProp, + max: maxProp, + getValueLabel = defaultGetValueLabel, + ...props + }: RootProps & { + ref: React.RefObject; } -); +) => { + const max = maxProp ?? DEFAULT_MAX; + const value = isValidValueNumber(valueProp, max) ? valueProp : 0; + + const Component = asChild ? Slot : View; + return ( + + ); +}; Root.displayName = 'RootProgress'; -const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { +const Indicator = ( + { + ref, + asChild, + ...props + }: IndicatorProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Indicator.displayName = 'IndicatorProgress'; diff --git a/packages/progress/src/progress.web.tsx b/packages/progress/src/progress.web.tsx index 2f96f72a..d8272185 100644 --- a/packages/progress/src/progress.web.tsx +++ b/packages/progress/src/progress.web.tsx @@ -6,29 +6,46 @@ import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; const ProgressContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, value, max, getValueLabel, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Root = ( + { + ref, + asChild, + value, + max, + getValueLabel, + ...props + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootProgress'; -const Indicator = React.forwardRef(({ asChild, ...props }, ref) => { +const Indicator = ( + { + ref, + asChild, + ...props + }: IndicatorProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Indicator.displayName = 'IndicatorProgress'; diff --git a/packages/radio-group/src/radio-group.tsx b/packages/radio-group/src/radio-group.tsx index 56be6a9a..db8979fb 100644 --- a/packages/radio-group/src/radio-group.tsx +++ b/packages/radio-group/src/radio-group.tsx @@ -5,22 +5,31 @@ import type { IndicatorProps, IndicatorRef, ItemProps, ItemRef, RootProps, RootR const RadioGroupContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, value, onValueChange, disabled = false, ...viewProps }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + disabled = false, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootRadioGroup'; @@ -40,42 +49,48 @@ interface RadioItemContext { const RadioItemContext = React.createContext(null); -const Item = React.forwardRef( - ( - { asChild, value: itemValue, disabled: disabledProp = false, onPress: onPressProp, ...props }, - ref - ) => { - const { disabled, value, onValueChange } = useRadioGroupContext(); +const Item = ( + { + ref, + asChild, + value: itemValue, + disabled: disabledProp = false, + onPress: onPressProp, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { disabled, value, onValueChange } = useRadioGroupContext(); - function onPress(ev: GestureResponderEvent) { - if (disabled || disabledProp) return; - onValueChange(itemValue); - onPressProp?.(ev); - } + function onPress(ev: GestureResponderEvent) { + if (disabled || disabledProp) return; + onValueChange(itemValue); + onPressProp?.(ev); + } - const Component = asChild ? Slot : Pressable; - return ( - + - - - ); - } -); + {...props} + /> + + ); +}; Item.displayName = 'ItemRadioGroup'; @@ -89,20 +104,27 @@ function useRadioItemContext() { return context; } -const Indicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { value } = useRadioGroupContext(); - const { itemValue } = useRadioItemContext(); +const Indicator = ( + { + ref, + asChild, + forceMount, + ...props + }: IndicatorProps & { + ref: React.RefObject; + } +) => { + const { value } = useRadioGroupContext(); + const { itemValue } = useRadioItemContext(); - if (!forceMount) { - if (value !== itemValue) { - return null; - } + if (!forceMount) { + if (value !== itemValue) { + return null; } - const Component = asChild ? Slot : View; - return ; } -); + const Component = asChild ? Slot : View; + return ; +}; Indicator.displayName = 'IndicatorRadioGroup'; diff --git a/packages/radio-group/src/radio-group.web.tsx b/packages/radio-group/src/radio-group.web.tsx index cc9a0404..b08af382 100644 --- a/packages/radio-group/src/radio-group.web.tsx +++ b/packages/radio-group/src/radio-group.web.tsx @@ -6,24 +6,33 @@ import type { IndicatorProps, IndicatorRef, ItemProps, ItemRef, RootProps, RootR const RadioGroupContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, value, onValueChange, disabled = false, ...viewProps }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + disabled = false, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootRadioGroup'; function useRadioGroupContext() { @@ -35,38 +44,53 @@ function useRadioGroupContext() { } return context; } -const Item = React.forwardRef( - ({ asChild, value, onPress: onPressProps, ...props }, ref) => { - const { onValueChange } = useRadioGroupContext(); +const Item = ( + { + ref, + asChild, + value, + onPress: onPressProps, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { onValueChange } = useRadioGroupContext(); - function onPress(ev: GestureResponderEvent) { - if (onPressProps) { - onPressProps(ev); - } - onValueChange(value); + function onPress(ev: GestureResponderEvent) { + if (onPressProps) { + onPressProps(ev); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onValueChange(value); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Item.displayName = 'ItemRadioGroup'; -const Indicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Indicator = ( + { + ref, + asChild, + forceMount, + ...props + }: IndicatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Indicator.displayName = 'IndicatorRadioGroup'; diff --git a/packages/select/src/select.tsx b/packages/select/src/select.tsx index 6147f7d1..34b6ebc0 100644 --- a/packages/select/src/select.tsx +++ b/packages/select/src/select.tsx @@ -58,55 +58,55 @@ interface IRootContext extends SharedRootContext { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - value: valueProp, - defaultValue, - onValueChange: onValueChangeProp, - onOpenChange: onOpenChangeProp, - disabled, - ...viewProps - }, - ref - ) => { - const nativeID = React.useId(); - const [value, onValueChange] = useControllableState({ - prop: valueProp, - defaultProp: defaultValue, - onChange: onValueChangeProp, - }); - const [triggerPosition, setTriggerPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + value: valueProp, + defaultValue, + onValueChange: onValueChangeProp, + onOpenChange: onOpenChangeProp, + disabled, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const [value, onValueChange] = useControllableState({ + prop: valueProp, + defaultProp: defaultValue, + onChange: onValueChangeProp, + }); + const [triggerPosition, setTriggerPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + const [open, setOpen] = React.useState(false); + + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); + } + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeSelect'; @@ -118,53 +118,70 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { open, onOpenChange, disabled: disabledRoot, setTriggerPosition } = useRootContext(); - - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open: () => { - onOpenChange(true); - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - }, - close: () => { - setTriggerPosition(null); - onOpenChange(false); - }, +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, disabled: disabledRoot, setTriggerPosition } = useRootContext(); + + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open: () => { + onOpenChange(true); + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); }, - }); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { - setTriggerPosition({ width, pageX, pageY: pageY, height }); - }); - onOpenChange(!open); - onPressProp?.(ev); - } + close: () => { + setTriggerPosition(null); + onOpenChange(false); + }, + }, + }); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + augmentedRef.current?.measure((_x, _y, width, height, pageX, pageY) => { + setTriggerPosition({ width, pageX, pageY: pageY, height }); + }); + onOpenChange(!open); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Trigger.displayName = 'TriggerNativeSelect'; -const Value = React.forwardRef(({ asChild, placeholder, ...props }, ref) => { +const Value = ( + { + ref, + asChild, + placeholder, + ...props + }: ValueProps & { + ref: React.RefObject; + } +) => { const { value } = useRootContext(); const Component = asChild ? Slot : Text; return ( @@ -172,7 +189,7 @@ const Value = React.forwardRef(({ asChild, placeholder, .. {value?.label ?? placeholder} ); -}); +}; Value.displayName = 'ValueNativeSelect'; @@ -199,116 +216,125 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, onPress: OnPressProp, closeOnPress = true, ...props }, ref) => { - const { open, onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - OnPressProp?.(ev); +const Overlay = ( + { + ref, + asChild, + forceMount, + onPress: OnPressProp, + closeOnPress = true, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setTriggerPosition, setContentLayout } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayNativeSelect'; /** * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior by setting `disablePositioningStyle` to `true`. */ -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'start', - side = 'bottom', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - position: _position, - ...props - }, - ref - ) => { - const { - open, - onOpenChange, - contentLayout, - nativeID, - triggerPosition, - setContentLayout, - setTriggerPosition, - } = useRootContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - return true; - }); - - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side, - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'start', + side = 'bottom', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + position: _position, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + open, + onOpenChange, + contentLayout, + nativeID, + triggerPosition, + setContentLayout, + setTriggerPosition, + } = useRootContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side, + disablePositioningStyle, + }); + + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); + + const Component = asChild ? Slot : View; + return ( + + ); +}; Content.displayName = 'ContentNativeSelect'; @@ -317,53 +343,53 @@ const ItemContext = React.createContext<{ label: string; } | null>(null); -const Item = React.forwardRef( - ( - { - asChild, - value: itemValue, - label, - onPress: onPressProp, - disabled = false, - closeOnPress = true, - ...props - }, - ref - ) => { - const { onOpenChange, value, onValueChange, setTriggerPosition, setContentLayout } = - useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - - onValueChange({ value: itemValue, label }); - onPressProp?.(ev); +const Item = ( + { + ref, + asChild, + value: itemValue, + label, + onPress: onPressProp, + disabled = false, + closeOnPress = true, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, value, onValueChange, setTriggerPosition, setContentLayout } = + useRootContext(); + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onValueChange({ value: itemValue, label }); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Item.displayName = 'ItemNativeSelect'; @@ -375,7 +401,15 @@ function useItemContext() { return context; } -const ItemText = React.forwardRef(({ asChild, ...props }, ref) => { +const ItemText = ( + { + ref, + asChild, + ...props + }: ItemTextProps & { + ref: React.RefObject; + } +) => { const { label } = useItemContext(); const Component = asChild ? Slot : Text; @@ -384,47 +418,77 @@ const ItemText = React.forwardRef(({ asChild, ...pro {label} ); -}); +}; ItemText.displayName = 'ItemTextNativeSelect'; -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const { itemValue } = useItemContext(); - const { value } = useRootContext(); +const ItemIndicator = ( + { + ref, + asChild, + forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; + } +) => { + const { itemValue } = useItemContext(); + const { value } = useRootContext(); - if (!forceMount) { - if (value?.value !== itemValue) { - return null; - } + if (!forceMount) { + if (value?.value !== itemValue) { + return null; } - const Component = asChild ? Slot : View; - return ; } -); + const Component = asChild ? Slot : View; + return ; +}; ItemIndicator.displayName = 'ItemIndicatorNativeSelect'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Group.displayName = 'GroupNativeSelect'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ; -}); +}; Label.displayName = 'LabelNativeSelect'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ; +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ; +}; Separator.displayName = 'SeparatorNativeSelect'; diff --git a/packages/select/src/select.web.tsx b/packages/select/src/select.web.tsx index 43aa79bf..8da37897 100644 --- a/packages/select/src/select.web.tsx +++ b/packages/select/src/select.web.tsx @@ -49,57 +49,57 @@ const SelectContext = React.createContext< * @web Parameter of `onValueChange` has the value of `value` for the `value` and the `label` of the selected Option * @ex When an Option with a label of Green Apple, the parameter passed to `onValueChange` is { value: 'green-apple', label: 'green-apple' } */ -const Root = React.forwardRef( - ( - { - asChild, - value: valueProp, - defaultValue, - onValueChange: onValueChangeProp, - onOpenChange: onOpenChangeProp, - ...viewProps - }, - ref - ) => { - const [value, onValueChange] = useControllableState({ - prop: valueProp, - defaultProp: defaultValue, - onChange: onValueChangeProp, - }); - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } +const Root = ( + { + ref, + asChild, + value: valueProp, + defaultValue, + onValueChange: onValueChangeProp, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const [value, onValueChange] = useControllableState({ + prop: valueProp, + defaultProp: defaultValue, + onChange: onValueChangeProp, + }); + const [open, setOpen] = React.useState(false); + + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); + } - function onStrValueChange(val: string) { - onValueChange({ value: val, label: val }); - } + function onStrValueChange(val: string) { + onValueChange({ value: val, label: val }); + } - const Component = asChild ? Slot : View; - return ( - + - - - - - ); - } -); + + + + ); +}; Root.displayName = 'RootWebSelect'; @@ -111,49 +111,65 @@ function useRootContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, role: _role, disabled, ...props }, ref) => { - const { open, onOpenChange } = useRootContext(); - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open() { - onOpenChange(true); - }, - close() { - onOpenChange(false); - }, - }, - }); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = open ? 'open' : 'closed'; - augRef.type = 'button'; - } - }, [open]); - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); +const Trigger = ( + { + ref, + asChild, + role: _role, + disabled, + ...props + }: TriggerProps & { + ref: React.RefObject; } -); +) => { + const { open, onOpenChange } = useRootContext(); + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open() { + onOpenChange(true); + }, + close() { + onOpenChange(false); + }, + }, + }); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.dataset.state = open ? 'open' : 'closed'; + augRef.type = 'button'; + } + }, [open]); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebSelect'; -const Value = React.forwardRef( - ({ asChild, placeholder, children, ...props }, ref) => { - return ( - - {children} - - ); +const Value = ( + { + ref, + asChild, + placeholder, + children, + ...props + }: ValueProps & { + ref: React.RefObject; } -); +) => { + return ( + + {children} + + ); +}; Value.displayName = 'ValueWebSelect'; @@ -161,60 +177,68 @@ function Portal({ container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef( - ({ asChild, forceMount, children, ...props }, ref) => { - const { open } = useRootContext(); - - const Component = asChild ? Slot : Pressable; - return ( - <> - {open && } - {children as React.ReactNode} - - ); +const Overlay = ( + { + ref, + asChild, + forceMount, + children, + ...props + }: OverlayProps & { + ref: React.RefObject; } -); +) => { + const { open } = useRootContext(); + + const Component = asChild ? Slot : Pressable; + return ( + <> + {open && } + {children as React.ReactNode} + + ); +}; Overlay.displayName = 'OverlayWebSelect'; -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount: _forceMount, - align = 'start', - side = 'bottom', - position = 'popper', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - disablePositioningStyle: _disablePositioningStyle, - onCloseAutoFocus, - onEscapeKeyDown, - onInteractOutside: _onInteractOutside, - onPointerDownOutside, - ...props - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Content = ( + { + ref, + asChild = false, + forceMount: _forceMount, + align = 'start', + side = 'bottom', + position = 'popper', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + disablePositioningStyle: _disablePositioningStyle, + onCloseAutoFocus, + onEscapeKeyDown, + onInteractOutside: _onInteractOutside, + onPointerDownOutside, + ...props + }: ContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Content.displayName = 'ContentWebSelect'; @@ -223,19 +247,29 @@ const ItemContext = React.createContext<{ label: string; } | null>(null); -const Item = React.forwardRef( - ({ asChild, closeOnPress = true, label, value, children, ...props }, ref) => { - return ( - - - - <>{children as React.ReactNode} - - - - ); +const Item = ( + { + ref, + asChild, + closeOnPress = true, + label, + value, + children, + ...props + }: ItemProps & { + ref: React.RefObject; } -); +) => { + return ( + + + + <>{children as React.ReactNode} + + + + ); +}; Item.displayName = 'ItemWebSelect'; @@ -247,68 +281,104 @@ function useItemContext() { return context; } -const ItemText = React.forwardRef>( - ({ asChild, ...props }, ref) => { - const { label } = useItemContext(); - - const Component = asChild ? Slot : Text; - return ( - - - {label} - - - ); +const ItemText = ( + { + ref, + asChild, + ...props + }: Omit & { + ref: React.RefObject; } -); +) => { + const { label } = useItemContext(); + + const Component = asChild ? Slot : Text; + return ( + + + {label} + + + ); +}; ItemText.displayName = 'ItemTextWebSelect'; -const ItemIndicator = React.forwardRef( - ({ asChild, forceMount: _forceMount, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const ItemIndicator = ( + { + ref, + asChild, + forceMount: _forceMount, + ...props + }: ItemIndicatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; ItemIndicator.displayName = 'ItemIndicatorWebSelect'; -const Group = React.forwardRef(({ asChild, ...props }, ref) => { +const Group = ( + { + ref, + asChild, + ...props + }: GroupProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Group.displayName = 'GroupWebSelect'; -const Label = React.forwardRef(({ asChild, ...props }, ref) => { +const Label = ( + { + ref, + asChild, + ...props + }: LabelProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Text; return ( ); -}); +}; Label.displayName = 'LabelWebSelect'; -const Separator = React.forwardRef( - ({ asChild, decorative, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Separator = ( + { + ref, + asChild, + decorative, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Separator.displayName = 'SeparatorWebSelect'; diff --git a/packages/separator/src/separator.tsx b/packages/separator/src/separator.tsx index f744921f..43604c07 100644 --- a/packages/separator/src/separator.tsx +++ b/packages/separator/src/separator.tsx @@ -3,19 +3,27 @@ import * as React from 'react'; import { View } from 'react-native'; import type { RootProps, RootRef } from './types'; -const Root = React.forwardRef( - ({ asChild, decorative, orientation = 'horizontal', ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - ); +const Root = ( + { + ref, + asChild, + decorative, + orientation = 'horizontal', + ...props + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + ); +}; Root.displayName = 'RootSeparator'; diff --git a/packages/slider/src/slider.tsx b/packages/slider/src/slider.tsx index 50eb2aed..e68d32a6 100644 --- a/packages/slider/src/slider.tsx +++ b/packages/slider/src/slider.tsx @@ -14,30 +14,30 @@ import type { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - value, - disabled, - min, - max, - dir: _dir, - inverted: _inverted, - step: _step, - onValueChange: _onValueChange, - ...props - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + value, + disabled, + min, + max, + dir: _dir, + inverted: _inverted, + step: _step, + onValueChange: _onValueChange, + ...props + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeSlider'; @@ -49,7 +49,15 @@ function useSliderContext() { return context; } -const Track = React.forwardRef(({ asChild, ...props }, ref) => { +const Track = ( + { + ref, + asChild, + ...props + }: TrackProps & { + ref: React.RefObject; + } +) => { const { value, min, max, disabled } = useSliderContext(); const Component = asChild ? Slot : View; @@ -65,21 +73,37 @@ const Track = React.forwardRef(({ asChild, ...props }, ref {...props} /> ); -}); +}; Track.displayName = 'TrackNativeSlider'; -const Range = React.forwardRef(({ asChild, ...props }, ref) => { +const Range = ( + { + ref, + asChild, + ...props + }: RangeProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Range.displayName = 'RangeNativeSlider'; -const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { +const Thumb = ( + { + ref, + asChild, + ...props + }: ThumbProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Thumb.displayName = 'ThumbNativeSlider'; diff --git a/packages/slider/src/slider.web.tsx b/packages/slider/src/slider.web.tsx index 6756f9ba..4bc02af0 100644 --- a/packages/slider/src/slider.web.tsx +++ b/packages/slider/src/slider.web.tsx @@ -13,62 +13,97 @@ import type { TrackRef, } from './types'; -const Root = React.forwardRef( - ( - { asChild, value, disabled, min, max, dir, inverted, step = 1, onValueChange, ...props }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + value, + disabled, + min, + max, + dir, + inverted, + step = 1, + onValueChange, + ...props + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootWebSlider'; -const Track = React.forwardRef(({ asChild, ...props }, ref) => { +const Track = ( + { + ref, + asChild, + ...props + }: TrackProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Track.displayName = 'TrackWebSlider'; -const Range = React.forwardRef(({ asChild, ...props }, ref) => { +const Range = ( + { + ref, + asChild, + ...props + }: RangeProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Range.displayName = 'RangeWebSlider'; -const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { +const Thumb = ( + { + ref, + asChild, + ...props + }: ThumbProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Thumb.displayName = 'ThumbWebSlider'; diff --git a/packages/slot/src/slot.tsx b/packages/slot/src/slot.tsx index 9d271149..dac9ebaa 100644 --- a/packages/slot/src/slot.tsx +++ b/packages/slot/src/slot.tsx @@ -59,72 +59,87 @@ Slot.displayName = 'Slot'; /** * @deprecated: Use Slot instead */ -const Pressable = React.forwardRef, RNPressableProps>( - (props, forwardedRef) => { - const { children, ...pressableSlotProps } = props; - - if (!React.isValidElement(children)) { - console.log('Slot.Pressable - Invalid asChild element', children); - return null; - } +const Pressable = ( + { + ref: forwardedRef, + ...props + }: RNPressableProps & { + ref: React.RefObject>; + } +) => { + const { children, ...pressableSlotProps } = props; - return React.cloneElement< - React.ComponentPropsWithoutRef, - React.Component, 'ref'>, any, any> - >(isTextChildren(children) ? <> : children, { - ...mergeProps(pressableSlotProps, children.props as any), - ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, - }); + if (!React.isValidElement(children)) { + console.log('Slot.Pressable - Invalid asChild element', children); + return null; } -); + + return React.cloneElement< + React.ComponentPropsWithoutRef, + React.Component, 'ref'>, any, any> + >(isTextChildren(children) ? <> : children, { + ...mergeProps(pressableSlotProps, children.props as any), + ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, + }); +}; Pressable.displayName = 'SlotPressable'; /** * @deprecated: Use Slot instead */ -const View = React.forwardRef, RNViewProps>( - (props, forwardedRef) => { - const { children, ...viewSlotProps } = props; - - if (!React.isValidElement(children)) { - console.log('Slot.View - Invalid asChild element', children); - return null; - } +const View = ( + { + ref: forwardedRef, + ...props + }: RNViewProps & { + ref: React.RefObject>; + } +) => { + const { children, ...viewSlotProps } = props; - return React.cloneElement< - React.ComponentPropsWithoutRef, - React.ElementRef - >(isTextChildren(children) ? <> : children, { - ...mergeProps(viewSlotProps, children.props as any), - ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, - }); + if (!React.isValidElement(children)) { + console.log('Slot.View - Invalid asChild element', children); + return null; } -); + + return React.cloneElement< + React.ComponentPropsWithoutRef, + React.ElementRef + >(isTextChildren(children) ? <> : children, { + ...mergeProps(viewSlotProps, children.props as any), + ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, + }); +}; View.displayName = 'SlotView'; /** * @deprecated: Use Slot instead */ -const Text = React.forwardRef, RNTextProps>( - (props, forwardedRef) => { - const { children, ...textSlotProps } = props; - - if (!React.isValidElement(children)) { - console.log('Slot.Text - Invalid asChild element', children); - return null; - } +const Text = ( + { + ref: forwardedRef, + ...props + }: RNTextProps & { + ref: React.RefObject>; + } +) => { + const { children, ...textSlotProps } = props; - return React.cloneElement< - React.ComponentPropsWithoutRef, - React.ElementRef - >(isTextChildren(children) ? <> : children, { - ...mergeProps(textSlotProps, children.props as any), - ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, - }); + if (!React.isValidElement(children)) { + console.log('Slot.Text - Invalid asChild element', children); + return null; } -); + + return React.cloneElement< + React.ComponentPropsWithoutRef, + React.ElementRef + >(isTextChildren(children) ? <> : children, { + ...mergeProps(textSlotProps, children.props as any), + ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, + }); +}; Text.displayName = 'SlotText'; @@ -135,24 +150,29 @@ type ImageSlotProps = RNImageProps & { /** * @deprecated: Use Slot instead */ -const Image = React.forwardRef, ImageSlotProps>( - (props, forwardedRef) => { - const { children, ...imageSlotProps } = props; - - if (!React.isValidElement(children)) { - console.log('Slot.Image - Invalid asChild element', children); - return null; - } +const Image = ( + { + ref: forwardedRef, + ...props + }: ImageSlotProps & { + ref: React.RefObject>; + } +) => { + const { children, ...imageSlotProps } = props; - return React.cloneElement< - React.ComponentPropsWithoutRef, - React.ElementRef - >(isTextChildren(children) ? <> : children, { - ...mergeProps(imageSlotProps, children.props as any), - ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, - }); + if (!React.isValidElement(children)) { + console.log('Slot.Image - Invalid asChild element', children); + return null; } -); + + return React.cloneElement< + React.ComponentPropsWithoutRef, + React.ElementRef + >(isTextChildren(children) ? <> : children, { + ...mergeProps(imageSlotProps, children.props as any), + ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref, + }); +}; Image.displayName = 'SlotImage'; diff --git a/packages/switch/src/switch.tsx b/packages/switch/src/switch.tsx index a3520c62..d0b0444e 100644 --- a/packages/switch/src/switch.tsx +++ b/packages/switch/src/switch.tsx @@ -3,51 +3,59 @@ import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; import type { RootProps, RootRef, ThumbProps, ThumbRef } from './types'; -const Root = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - disabled, - onPress: onPressProp, - 'aria-valuetext': ariaValueText, - ...props - }, - ref - ) => { - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - onCheckedChange(!checked); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); +const Root = ( + { + ref, + asChild, + checked, + onCheckedChange, + disabled, + onPress: onPressProp, + 'aria-valuetext': ariaValueText, + ...props + }: RootProps & { + ref: React.RefObject; + } +) => { + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + onCheckedChange(!checked); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Root.displayName = 'RootNativeSwitch'; -const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { +const Thumb = ( + { + ref, + asChild, + ...props + }: ThumbProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Thumb.displayName = 'ThumbNativeSwitch'; diff --git a/packages/switch/src/switch.web.tsx b/packages/switch/src/switch.web.tsx index ec8b1bbf..3da80c55 100644 --- a/packages/switch/src/switch.web.tsx +++ b/packages/switch/src/switch.web.tsx @@ -4,56 +4,64 @@ import * as React from 'react'; import { Pressable, View, type GestureResponderEvent } from 'react-native'; import type { RootProps, RootRef, ThumbProps, ThumbRef } from './types'; -const Root = React.forwardRef( - ( - { - asChild, - checked, - onCheckedChange, - disabled, - onPress: onPressProp, - onKeyDown: onKeyDownProp, - ...props - }, - ref - ) => { - function onPress(ev: GestureResponderEvent) { - onCheckedChange(!checked); - onPressProp?.(ev); - } +const Root = ( + { + ref, + asChild, + checked, + onCheckedChange, + disabled, + onPress: onPressProp, + onKeyDown: onKeyDownProp, + ...props + }: RootProps & { + ref: React.RefObject; + } +) => { + function onPress(ev: GestureResponderEvent) { + onCheckedChange(!checked); + onPressProp?.(ev); + } - function onKeyDown(ev: React.KeyboardEvent) { - onKeyDownProp?.(ev); - if (ev.key === ' ') { - onCheckedChange(!checked); - } + function onKeyDown(ev: React.KeyboardEvent) { + onKeyDownProp?.(ev); + if (ev.key === ' ') { + onCheckedChange(!checked); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Root.displayName = 'RootWebSwitch'; -const Thumb = React.forwardRef(({ asChild, ...props }, ref) => { +const Thumb = ( + { + ref, + asChild, + ...props + }: ThumbProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; Thumb.displayName = 'ThumbWebSwitch'; diff --git a/packages/table/src/table.tsx b/packages/table/src/table.tsx index ae49afdf..21a9f5cd 100644 --- a/packages/table/src/table.tsx +++ b/packages/table/src/table.tsx @@ -11,64 +11,120 @@ import { Pressable, View } from 'react-native'; type RootProps = SlottableViewProps; type RootRef = ViewRef; -const Root = React.forwardRef(({ asChild, ...props }, ref) => { +const Root = ( + { + ref, + asChild, + ...props + }: RootProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Root.displayName = 'RootTable'; type HeaderProps = SlottableViewProps; type HeaderRef = ViewRef; -const Header = React.forwardRef(({ asChild, ...props }, ref) => { +const Header = ( + { + ref, + asChild, + ...props + }: HeaderProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Header.displayName = 'HeaderTable'; type RowProps = SlottablePressableProps; type RowRef = PressableRef; -const Row = React.forwardRef(({ asChild, ...props }, ref) => { +const Row = ( + { + ref, + asChild, + ...props + }: RowProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Row.displayName = 'RowTable'; type HeadProps = SlottableViewProps; type HeadRef = ViewRef; -const Head = React.forwardRef(({ asChild, ...props }, ref) => { +const Head = ( + { + ref, + asChild, + ...props + }: HeadProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Head.displayName = 'HeadTable'; type BodyProps = SlottableViewProps; type BodyRef = ViewRef; -const Body = React.forwardRef(({ asChild, ...props }, ref) => { +const Body = ( + { + ref, + asChild, + ...props + }: BodyProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Body.displayName = 'BodyTable'; type CellProps = SlottableViewProps; type CellRef = ViewRef; -const Cell = React.forwardRef(({ asChild, ...props }, ref) => { +const Cell = ( + { + ref, + asChild, + ...props + }: CellProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Cell.displayName = 'CellTable'; type FooterProps = SlottableViewProps; type FooterRef = ViewRef; -const Footer = React.forwardRef(({ asChild, ...props }, ref) => { +const Footer = ( + { + ref, + asChild, + ...props + }: FooterProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Footer.displayName = 'FooterTable'; export { Body, Cell, Footer, Head, Header, Root, Row }; diff --git a/packages/tabs/src/tabs.tsx b/packages/tabs/src/tabs.tsx index 83ab5e69..0131551d 100644 --- a/packages/tabs/src/tabs.tsx +++ b/packages/tabs/src/tabs.tsx @@ -18,34 +18,34 @@ interface RootContext extends RootProps { const TabsContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - value, - onValueChange, - orientation: _orientation, - dir: _dir, - activationMode: _activationMode, - ...viewProps - }, - ref - ) => { - const nativeID = React.useId(); - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + orientation: _orientation, + dir: _dir, + activationMode: _activationMode, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeTabs'; @@ -57,46 +57,63 @@ function useRootContext() { return context; } -const List = React.forwardRef(({ asChild, ...props }, ref) => { +const List = ( + { + ref, + asChild, + ...props + }: ListProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; List.displayName = 'ListNativeTabs'; const TriggerContext = React.createContext<{ value: string } | null>(null); -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled, value: tabValue, ...props }, ref) => { - const { onValueChange, value: rootValue, nativeID } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - onValueChange(tabValue); - onPressProp?.(ev); - } +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + disabled, + value: tabValue, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { onValueChange, value: rootValue, nativeID } = useRootContext(); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + onValueChange(tabValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerNativeTabs'; @@ -110,28 +127,36 @@ function useTriggerContext() { return context; } -const Content = React.forwardRef( - ({ asChild, forceMount, value: tabValue, ...props }, ref) => { - const { value: rootValue, nativeID } = useRootContext(); +const Content = ( + { + ref, + asChild, + forceMount, + value: tabValue, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { value: rootValue, nativeID } = useRootContext(); - if (!forceMount) { - if (rootValue !== tabValue) { - return null; - } + if (!forceMount) { + if (rootValue !== tabValue) { + return null; } - - const Component = asChild ? Slot : View; - return ( - - ); } -); + + const Component = asChild ? Slot : View; + return ( + + ); +}; Content.displayName = 'ContentNativeTabs'; diff --git a/packages/tabs/src/tabs.web.tsx b/packages/tabs/src/tabs.web.tsx index b55bb05b..41091250 100644 --- a/packages/tabs/src/tabs.web.tsx +++ b/packages/tabs/src/tabs.web.tsx @@ -14,30 +14,41 @@ import type { } from './types'; const TabsContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, value, onValueChange, orientation, dir, activationMode, ...viewProps }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Root = ( + { + ref, + asChild, + value, + onValueChange, + orientation, + dir, + activationMode, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootWebTabs'; @@ -49,30 +60,45 @@ function useRootContext() { return context; } -const List = React.forwardRef(({ asChild, ...props }, ref) => { +const List = ( + { + ref, + asChild, + ...props + }: ListProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ( ); -}); +}; List.displayName = 'ListWebTabs'; const TriggerContext = React.createContext<{ value: string } | null>(null); -const Trigger = React.forwardRef( - ({ asChild, value: tabValue, ...props }, ref) => { - const Component = asChild ? Slot : Pressable; - return ( - - - - - - ); +const Trigger = ( + { + ref, + asChild, + value: tabValue, + ...props + }: TriggerProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : Pressable; + return ( + + + + + + ); +}; Trigger.displayName = 'TriggerWebTabs'; @@ -86,16 +112,25 @@ function useTriggerContext() { return context; } -const Content = React.forwardRef( - ({ asChild, forceMount, value, tabIndex = -1, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Content = ( + { + ref, + asChild, + forceMount, + value, + tabIndex = -1, + ...props + }: ContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Content.displayName = 'ContentWebTabs'; diff --git a/packages/toast/src/toast.tsx b/packages/toast/src/toast.tsx index 3babdf99..4b562d5c 100644 --- a/packages/toast/src/toast.tsx +++ b/packages/toast/src/toast.tsx @@ -19,34 +19,43 @@ interface RootContext extends RootProps { } const ToastContext = React.createContext(null); -const Root = React.forwardRef( - ({ asChild, type = 'foreground', open, onOpenChange, ...viewProps }, ref) => { - const nativeID = React.useId(); - - if (!open) { - return null; - } - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + type = 'foreground', + open, + onOpenChange, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const nativeID = React.useId(); + + if (!open) { + return null; + } + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootToast'; @@ -58,75 +67,105 @@ function useToastContext() { return context; } -const Close = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { onOpenChange } = useToastContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - onOpenChange(false); - onPressProp?.(ev); - } +const Close = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: CloseProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange } = useToastContext(); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + onOpenChange(false); + onPressProp?.(ev); } -); -Close.displayName = 'CloseToast'; + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; -const Action = React.forwardRef( - ({ asChild, onPress: onPressProp, disabled = false, ...props }, ref) => { - const { onOpenChange } = useToastContext(); +Close.displayName = 'CloseToast'; - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - onOpenChange(false); - onPressProp?.(ev); - } +const Action = ( + { + ref, + asChild, + onPress: onPressProp, + disabled = false, + ...props + }: ActionProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange } = useToastContext(); - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + onOpenChange(false); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Action.displayName = 'ActionToast'; -const Title = React.forwardRef(({ asChild, ...props }, ref) => { +const Title = ( + { + ref, + asChild, + ...props + }: TitleProps & { + ref: React.RefObject; + } +) => { const { nativeID } = useToastContext(); const Component = asChild ? Slot : Text; return ; -}); +}; Title.displayName = 'TitleToast'; -const Description = React.forwardRef( - ({ asChild, ...props }, ref) => { - const { nativeID } = useToastContext(); - - const Component = asChild ? Slot : Text; - return ; +const Description = ( + { + ref, + asChild, + ...props + }: DescriptionProps & { + ref: React.RefObject; } -); +) => { + const { nativeID } = useToastContext(); + + const Component = asChild ? Slot : Text; + return ; +}; Description.displayName = 'DescriptionToast'; diff --git a/packages/toggle-group/src/toggle-group.tsx b/packages/toggle-group/src/toggle-group.tsx index b12e4996..02d4947f 100644 --- a/packages/toggle-group/src/toggle-group.tsx +++ b/packages/toggle-group/src/toggle-group.tsx @@ -6,39 +6,39 @@ import type { ItemProps, ItemRef, RootProps, RootRef } from './types'; const ToggleGroupContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - type, - value, - onValueChange, - disabled = false, - rovingFocus: _rovingFocus, - orientation: _orientation, - dir: _dir, - loop: _loop, - ...viewProps - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + type, + value, + onValueChange, + disabled = false, + rovingFocus: _rovingFocus, + orientation: _orientation, + dir: _dir, + loop: _loop, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootToggleGroup'; @@ -54,52 +54,58 @@ function useRootContext() { const ItemContext = React.createContext(null); -const Item = React.forwardRef( - ( - { asChild, value: itemValue, disabled: disabledProp = false, onPress: onPressProp, ...props }, - ref - ) => { - const id = React.useId(); - const { type, disabled, value, onValueChange } = useRootContext(); +const Item = ( + { + ref, + asChild, + value: itemValue, + disabled: disabledProp = false, + onPress: onPressProp, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const id = React.useId(); + const { type, disabled, value, onValueChange } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (disabled || disabledProp) return; - if (type === 'single') { - onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); - } - if (type === 'multiple') { - onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); - } - onPressProp?.(ev); + function onPress(ev: GestureResponderEvent) { + if (disabled || disabledProp) return; + if (type === 'single') { + onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); } + if (type === 'multiple') { + onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); + } + onPressProp?.(ev); + } - const isChecked = - type === 'single' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - const isSelected = - type === 'multiple' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; + const isChecked = + type === 'single' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; + const isSelected = + type === 'multiple' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - const Component = asChild ? Slot : Pressable; - return ( - - - - ); - } -); + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Item.displayName = 'ItemToggleGroup'; diff --git a/packages/toggle-group/src/toggle-group.web.tsx b/packages/toggle-group/src/toggle-group.web.tsx index 8cf80aec..5306b0f2 100644 --- a/packages/toggle-group/src/toggle-group.web.tsx +++ b/packages/toggle-group/src/toggle-group.web.tsx @@ -7,51 +7,51 @@ import type { ItemProps, ItemRef, RootProps, RootRef } from './types'; const ToggleGroupContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - type, - value, - onValueChange, - disabled = false, - rovingFocus, - orientation, - dir, - loop, - ...viewProps - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const Root = ( + { + ref, + asChild, + type, + value, + onValueChange, + disabled = false, + rovingFocus, + orientation, + dir, + loop, + ...viewProps + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; Root.displayName = 'RootToggleGroup'; @@ -67,39 +67,45 @@ function useRootContext() { const ItemContext = React.createContext(null); -const Item = React.forwardRef( - ( - { asChild, value: itemValue, disabled: disabledProp = false, onPress: onPressProp, ...props }, - ref - ) => { - const { type, disabled, value, onValueChange } = useRootContext(); +const Item = ( + { + ref, + asChild, + value: itemValue, + disabled: disabledProp = false, + onPress: onPressProp, + ...props + }: ItemProps & { + ref: React.RefObject; + } +) => { + const { type, disabled, value, onValueChange } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - if (type === 'single') { - onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); - } - if (type === 'multiple') { - onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); - } + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + if (type === 'single') { + onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); + } + if (type === 'multiple') { + onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); } - - const Component = asChild ? Slot : Pressable; - return ( - - - - - - ); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + + + ); +}; Item.displayName = 'ItemToggleGroup'; diff --git a/packages/toggle/src/toggle.tsx b/packages/toggle/src/toggle.tsx index f4701545..e0cf0964 100644 --- a/packages/toggle/src/toggle.tsx +++ b/packages/toggle/src/toggle.tsx @@ -3,33 +3,43 @@ import * as React from 'react'; import { Pressable, type GestureResponderEvent } from 'react-native'; import type { RootProps, RootRef } from './types'; -const Root = React.forwardRef( - ({ asChild, pressed, onPressedChange, disabled, onPress: onPressProp, ...props }, ref) => { - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - const newValue = !pressed; - onPressedChange(newValue); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); +const Root = ( + { + ref, + asChild, + pressed, + onPressedChange, + disabled, + onPress: onPressProp, + ...props + }: RootProps & { + ref: React.RefObject; + } +) => { + function onPress(ev: GestureResponderEvent) { + if (disabled) return; + const newValue = !pressed; + onPressedChange(newValue); + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; Root.displayName = 'RootNativeToggle'; diff --git a/packages/toggle/src/toggle.web.tsx b/packages/toggle/src/toggle.web.tsx index 181e3007..4744edc5 100644 --- a/packages/toggle/src/toggle.web.tsx +++ b/packages/toggle/src/toggle.web.tsx @@ -4,21 +4,31 @@ import * as React from 'react'; import { Pressable, type GestureResponderEvent } from 'react-native'; import type { RootProps, RootRef } from './types'; -const Root = React.forwardRef( - ({ asChild, pressed, onPressedChange, disabled, onPress: onPressProp, ...props }, ref) => { - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - onPressedChange(!pressed); - } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + pressed, + onPressedChange, + disabled, + onPress: onPressProp, + ...props + }: RootProps & { + ref: React.RefObject; + } +) => { + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + onPressedChange(!pressed); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Root.displayName = 'RootWebToggle'; diff --git a/packages/toolbar/src/toolbar.tsx b/packages/toolbar/src/toolbar.tsx index d461842a..f7f7efae 100644 --- a/packages/toolbar/src/toolbar.tsx +++ b/packages/toolbar/src/toolbar.tsx @@ -17,36 +17,55 @@ import type { ToggleItemRef, } from './types'; -const Root = React.forwardRef( - ({ asChild, orientation: _orientation, dir: _dir, loop: _loop, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ; +const Root = ( + { + ref, + asChild, + orientation: _orientation, + dir: _dir, + loop: _loop, + ...props + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ; +}; Root.displayName = 'RootNativeToolbar'; const ToggleGroupContext = React.createContext(null); -const ToggleGroup = React.forwardRef( - ({ asChild, type, value, onValueChange, disabled = false, ...viewProps }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const ToggleGroup = ( + { + ref, + asChild, + type, + value, + onValueChange, + disabled = false, + ...viewProps + }: ToggleGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; ToggleGroup.displayName = 'ToggleGroupNativeToolbar'; @@ -60,69 +79,99 @@ function useToggleGroupContext() { return context; } -const ToggleItem = React.forwardRef( - ( - { asChild, value: itemValue, disabled: disabledProp = false, onPress: onPressProp, ...props }, - ref - ) => { - const { type, disabled, value, onValueChange } = useToggleGroupContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled || disabledProp) return; - if (type === 'single') { - onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); - } - if (type === 'multiple') { - onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); - } - onPressProp?.(ev); - } +const ToggleItem = ( + { + ref, + asChild, + value: itemValue, + disabled: disabledProp = false, + onPress: onPressProp, + ...props + }: ToggleItemProps & { + ref: React.RefObject; + } +) => { + const { type, disabled, value, onValueChange } = useToggleGroupContext(); - const isChecked = - type === 'single' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - const isSelected = - type === 'multiple' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - - const Component = asChild ? Slot : Pressable; - return ( - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled || disabledProp) return; + if (type === 'single') { + onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); + } + if (type === 'multiple') { + onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); + } + onPressProp?.(ev); } -); + + const isChecked = + type === 'single' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; + const isSelected = + type === 'multiple' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; + + const Component = asChild ? Slot : Pressable; + return ( + + ); +}; ToggleItem.displayName = 'ToggleItemNativeToolbar'; -const Separator = React.forwardRef(({ asChild, ...props }, ref) => { +const Separator = ( + { + ref, + asChild, + ...props + }: SeparatorProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : View; return ; -}); +}; Separator.displayName = 'SeparatorNativeToolbar'; -const Link = React.forwardRef(({ asChild, ...props }, ref) => { +const Link = ( + { + ref, + asChild, + ...props + }: LinkProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; Link.displayName = 'LinkNativeToolbar'; -const Button = React.forwardRef(({ asChild, ...props }, ref) => { +const Button = ( + { + ref, + asChild, + ...props + }: ButtonProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ; -}); +}; export { Button, Link, Root, Separator, ToggleGroup, ToggleItem }; diff --git a/packages/toolbar/src/toolbar.web.tsx b/packages/toolbar/src/toolbar.web.tsx index f46fda24..967ec072 100644 --- a/packages/toolbar/src/toolbar.web.tsx +++ b/packages/toolbar/src/toolbar.web.tsx @@ -18,48 +18,69 @@ import type { ToggleItemRef, } from './types'; -const Root = React.forwardRef( - ({ asChild, orientation, dir, loop, style, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + orientation, + dir, + loop, + style, + ...props + }: RootProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootWebToolbar'; const ToggleGroupContext = React.createContext(null); -const ToggleGroup = React.forwardRef( - ({ asChild, type, value, onValueChange, disabled = false, style, ...viewProps }, ref) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); +const ToggleGroup = ( + { + ref, + asChild, + type, + value, + onValueChange, + disabled = false, + style, + ...viewProps + }: ToggleGroupProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + + + ); +}; ToggleGroup.displayName = 'ToggleGroupWebToolbar'; @@ -73,69 +94,94 @@ function useToggleGroupContext() { return context; } -const ToggleItem = React.forwardRef( - ( - { - asChild, - value: itemValue, - disabled: disabledProp = false, - onPress: onPressProp, - style, - ...props - }, - ref - ) => { - const { type, disabled, value, onValueChange } = useToggleGroupContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled || disabledProp) return; - if (type === 'single') { - onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); - } - if (type === 'multiple') { - onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); - } - onPressProp?.(ev); - } +const ToggleItem = ( + { + ref, + asChild, + value: itemValue, + disabled: disabledProp = false, + onPress: onPressProp, + style, + ...props + }: ToggleItemProps & { + ref: React.RefObject; + } +) => { + const { type, disabled, value, onValueChange } = useToggleGroupContext(); - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + function onPress(ev: GestureResponderEvent) { + if (disabled || disabledProp) return; + if (type === 'single') { + onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); + } + if (type === 'multiple') { + onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); + } + onPressProp?.(ev); } -); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; ToggleItem.displayName = 'ToggleItemWebToolbar'; -const Separator = React.forwardRef( - ({ asChild, style, ...props }, ref) => { - const Component = asChild ? Slot : View; - return ; +const Separator = ( + { + ref, + asChild, + style, + ...props + }: SeparatorProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ; +}; Separator.displayName = 'SeparatorWebToolbar'; -const Link = React.forwardRef(({ asChild, style, ...props }, ref) => { +const Link = ( + { + ref, + asChild, + style, + ...props + }: LinkProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ( ); -}); +}; Link.displayName = 'LinkWebToolbar'; -const Button = React.forwardRef(({ asChild, style, ...props }, ref) => { +const Button = ( + { + ref, + asChild, + style, + ...props + }: ButtonProps & { + ref: React.RefObject; + } +) => { const Component = asChild ? Slot : Pressable; return ( ); -}); +}; export { Button, Link, Root, Separator, ToggleGroup, ToggleItem }; diff --git a/packages/tooltip/src/tooltip.tsx b/packages/tooltip/src/tooltip.tsx index 213756cf..16b6c7ad 100644 --- a/packages/tooltip/src/tooltip.tsx +++ b/packages/tooltip/src/tooltip.tsx @@ -34,46 +34,46 @@ interface IRootContext { const RootContext = React.createContext(null); -const Root = React.forwardRef( - ( - { - asChild, - delayDuration: _delayDuration, - skipDelayDuration: _skipDelayDuration, - disableHoverableContent: _disableHoverableContent, - onOpenChange: onOpenChangeProp, - ...viewProps - }, - ref - ) => { - const nativeID = React.useId(); - const [triggerPosition, setTriggerPosition] = React.useState(null); - const [contentLayout, setContentLayout] = React.useState(null); - const [open, setOpen] = React.useState(false); - - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } - - const Component = asChild ? Slot : View; - return ( - - - - ); +const Root = ( + { + ref, + asChild, + delayDuration: _delayDuration, + skipDelayDuration: _skipDelayDuration, + disableHoverableContent: _disableHoverableContent, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const nativeID = React.useId(); + const [triggerPosition, setTriggerPosition] = React.useState(null); + const [contentLayout, setContentLayout] = React.useState(null); + const [open, setOpen] = React.useState(false); + + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); } -); + + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Root.displayName = 'RootNativeTooltip'; @@ -152,115 +152,124 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = React.forwardRef( - ({ asChild, forceMount, onPress: OnPressProp, closeOnPress = true, ...props }, ref) => { - const { open, onOpenChange, setContentLayout, setTriggerPosition } = useTooltipContext(); +const Overlay = ( + { + ref, + asChild, + forceMount, + onPress: OnPressProp, + closeOnPress = true, + ...props + }: OverlayProps & { + ref: React.RefObject; + } +) => { + const { open, onOpenChange, setContentLayout, setTriggerPosition } = useTooltipContext(); - function onPress(ev: GestureResponderEvent) { - if (closeOnPress) { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - } - OnPressProp?.(ev); + function onPress(ev: GestureResponderEvent) { + if (closeOnPress) { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); } + OnPressProp?.(ev); + } - if (!forceMount) { - if (!open) { - return null; - } + if (!forceMount) { + if (!open) { + return null; } - - const Component = asChild ? Slot : Pressable; - return ; } -); + + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayNativeTooltip'; /** * @info `position`, `top`, `left`, and `maxWidth` style properties are controlled internally. Opt out of this behavior on native by setting `disablePositioningStyle` to `true`. */ -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'center', - side = 'top', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - onLayout: onLayoutProp, - insets, - style, - disablePositioningStyle, - ...props - }, - ref - ) => { - const { - open, - onOpenChange, - nativeID, - contentLayout, - setContentLayout, - setTriggerPosition, - triggerPosition, - } = useTooltipContext(); - - React.useEffect(() => { - const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { - setTriggerPosition(null); - setContentLayout(null); - onOpenChange(false); - return true; - }); - - return () => { - setContentLayout(null); - backHandler.remove(); - }; - }, []); - - const positionStyle = useRelativePosition({ - align, - avoidCollisions, - triggerPosition, - contentLayout, - alignOffset, - insets, - sideOffset, - side: getNativeSide(side), - disablePositioningStyle, +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'center', + side = 'top', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + onLayout: onLayoutProp, + insets, + style, + disablePositioningStyle, + ...props + }: ContentProps & { + ref: React.RefObject; + } +) => { + const { + open, + onOpenChange, + nativeID, + contentLayout, + setContentLayout, + setTriggerPosition, + triggerPosition, + } = useTooltipContext(); + + React.useEffect(() => { + const backHandler = BackHandler.addEventListener('hardwareBackPress', () => { + setTriggerPosition(null); + setContentLayout(null); + onOpenChange(false); + return true; }); - function onLayout(event: LayoutChangeEvent) { - setContentLayout(event.nativeEvent.layout); - onLayoutProp?.(event); - } + return () => { + setContentLayout(null); + backHandler.remove(); + }; + }, []); + + const positionStyle = useRelativePosition({ + align, + avoidCollisions, + triggerPosition, + contentLayout, + alignOffset, + insets, + sideOffset, + side: getNativeSide(side), + disablePositioningStyle, + }); - if (!forceMount) { - if (!open) { - return null; - } - } + function onLayout(event: LayoutChangeEvent) { + setContentLayout(event.nativeEvent.layout); + onLayoutProp?.(event); + } - const Component = asChild ? Slot : View; - return ( - - ); + if (!forceMount) { + if (!open) { + return null; + } } -); + + const Component = asChild ? Slot : View; + return ( + + ); +}; Content.displayName = 'ContentNativeTooltip'; diff --git a/packages/tooltip/src/tooltip.web.tsx b/packages/tooltip/src/tooltip.web.tsx index b01bdda8..16b00268 100644 --- a/packages/tooltip/src/tooltip.web.tsx +++ b/packages/tooltip/src/tooltip.web.tsx @@ -20,46 +20,46 @@ const RootContext = React.createContext<{ onOpenChange: (open: boolean) => void; } | null>(null); -const Root = React.forwardRef( - ( - { - asChild, - delayDuration, - skipDelayDuration, - disableHoverableContent, - onOpenChange: onOpenChangeProp, - ...viewProps - }, - ref - ) => { - const [open, setOpen] = React.useState(false); +const Root = ( + { + ref, + asChild, + delayDuration, + skipDelayDuration, + disableHoverableContent, + onOpenChange: onOpenChangeProp, + ...viewProps + }: RootProps & { + ref: React.RefObject; + } +) => { + const [open, setOpen] = React.useState(false); - function onOpenChange(value: boolean) { - setOpen(value); - onOpenChangeProp?.(value); - } + function onOpenChange(value: boolean) { + setOpen(value); + onOpenChangeProp?.(value); + } - const Component = asChild ? Slot : View; - return ( - - + + - - - - - - ); - } -); + + + + + ); +}; Root.displayName = 'RootWebTooltip'; @@ -71,49 +71,58 @@ function useTooltipContext() { return context; } -const Trigger = React.forwardRef( - ({ asChild, onPress: onPressProp, role: _role, disabled, ...props }, ref) => { - const { onOpenChange, open } = useTooltipContext(); - const augmentedRef = useAugmentedRef({ - ref, - methods: { - open() { - onOpenChange(true); - }, - close() { - onOpenChange(false); - }, +const Trigger = ( + { + ref, + asChild, + onPress: onPressProp, + role: _role, + disabled, + ...props + }: TriggerProps & { + ref: React.RefObject; + } +) => { + const { onOpenChange, open } = useTooltipContext(); + const augmentedRef = useAugmentedRef({ + ref, + methods: { + open() { + onOpenChange(true); }, - }); - function onPress(ev: GestureResponderEvent) { - if (onPressProp) { - onPressProp(ev); - } - onOpenChange(!open); + close() { + onOpenChange(false); + }, + }, + }); + function onPress(ev: GestureResponderEvent) { + if (onPressProp) { + onPressProp(ev); } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = open ? 'open' : 'closed'; - augRef.type = 'button'; - } - }, [open]); - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); + onOpenChange(!open); } -); + + useIsomorphicLayoutEffect(() => { + if (augmentedRef.current) { + const augRef = augmentedRef.current as unknown as HTMLButtonElement; + augRef.dataset.state = open ? 'open' : 'closed'; + augRef.type = 'button'; + } + }, [open]); + + const Component = asChild ? Slot : Pressable; + return ( + + + + ); +}; Trigger.displayName = 'TriggerWebTooltip'; @@ -121,56 +130,63 @@ function Portal({ forceMount, container, children }: PortalProps) { return ; } -const Overlay = React.forwardRef( - ({ asChild, forceMount, ...props }, ref) => { - const Component = asChild ? Slot : Pressable; - return ; +const Overlay = ( + { + ref, + asChild, + forceMount, + ...props + }: OverlayProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : Pressable; + return ; +}; Overlay.displayName = 'OverlayWebTooltip'; -const Content = React.forwardRef( - ( - { - asChild = false, - forceMount, - align = 'center', - side = 'top', - sideOffset = 0, - alignOffset = 0, - avoidCollisions = true, - insets: _insets, - disablePositioningStyle: _disablePositioningStyle, - onCloseAutoFocus: _onCloseAutoFocus, - onEscapeKeyDown, - onInteractOutside: _onInteractOutside, - onPointerDownOutside, - sticky, - hideWhenDetached, - ...props - }, - ref - ) => { - const Component = asChild ? Slot : View; - return ( - - - - ); +const Content = ( + { + ref, + asChild = false, + forceMount, + align = 'center', + side = 'top', + sideOffset = 0, + alignOffset = 0, + avoidCollisions = true, + insets: _insets, + disablePositioningStyle: _disablePositioningStyle, + onCloseAutoFocus: _onCloseAutoFocus, + onEscapeKeyDown, + onInteractOutside: _onInteractOutside, + onPointerDownOutside, + sticky, + hideWhenDetached, + ...props + }: ContentProps & { + ref: React.RefObject; } -); +) => { + const Component = asChild ? Slot : View; + return ( + + + + ); +}; Content.displayName = 'ContentWebTooltip'; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index f9fd94d2..8d6da4ce 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -21,10 +21,11 @@ type PropsWithoutHTML = PropsWithout>; type Slottable = Prettify; -type SlottableViewProps = Slottable; +type SlottableViewProps = Slottable & { ref?: ViewRef }; // TODO: remove the web only props type SlottablePressableProps = Slottable & { + ref?: PressableRef; /** * Platform: WEB ONLY */ @@ -34,8 +35,8 @@ type SlottablePressableProps = Slottable & { */ onKeyUp?: (ev: React.KeyboardEvent) => void; }; -type SlottableTextProps = Slottable; -type SlottableImageProps = Slottable; +type SlottableTextProps = Slottable & { ref?: TextRef }; +type SlottableImageProps = Slottable & { ref?: ImageRef }; type BaseSlottableTextProps = Slottable<{ children?: React.ReactNode; From 230f174589bdb38fe45b02c29d61987d98ee4b16 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sun, 16 Mar 2025 20:43:50 -0400 Subject: [PATCH 051/106] get nextjs working --- apps/nextjs-nativewind/next.config.mjs | 4 --- apps/nextjs-nativewind/package.json | 2 +- apps/nextjs-nativewind/tsconfig.json | 7 +++-- apps/nextjs-no-rn/next.config.mjs | 10 +++--- apps/nextjs-no-rn/package.json | 2 +- .../src/components/ui/accordion.tsx | 25 +++------------ apps/nextjs-no-rn/src/components/ui/text.tsx | 6 +--- apps/nextjs-no-rn/tsconfig.json | 7 +++-- pnpm-lock.yaml | 31 ------------------- 9 files changed, 21 insertions(+), 73 deletions(-) diff --git a/apps/nextjs-nativewind/next.config.mjs b/apps/nextjs-nativewind/next.config.mjs index eaf6c4ff..d06b695f 100644 --- a/apps/nextjs-nativewind/next.config.mjs +++ b/apps/nextjs-nativewind/next.config.mjs @@ -40,10 +40,6 @@ const nextConfig = { '@rn-primitives/tooltip', '@rn-primitives/types', ], - - experimental: { - forceSwcTransforms: true, - }, }; export default withExpo(nextConfig); diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index e4acc09b..caf6f7a0 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev --turbopack", + "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint", diff --git a/apps/nextjs-nativewind/tsconfig.json b/apps/nextjs-nativewind/tsconfig.json index ef9c87d1..6f56f716 100644 --- a/apps/nextjs-nativewind/tsconfig.json +++ b/apps/nextjs-nativewind/tsconfig.json @@ -26,16 +26,17 @@ "~/*": [ "./src/*" ] - } + }, + "target": "ES2017" }, "include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", - "nativewind-env.d.ts", + "nativewind-env.d.ts" ], "exclude": [ "node_modules" ] -} \ No newline at end of file +} diff --git a/apps/nextjs-no-rn/next.config.mjs b/apps/nextjs-no-rn/next.config.mjs index b24b38c6..ba355369 100644 --- a/apps/nextjs-no-rn/next.config.mjs +++ b/apps/nextjs-no-rn/next.config.mjs @@ -41,10 +41,6 @@ const nextConfig = { // '@rn-primitives/types', // '@rn-primitives/core', ], - - experimental: { - forceSwcTransforms: true, - }, }; export default withRNPrimitives(nextConfig); @@ -63,5 +59,11 @@ function withRNPrimitives(nextConfig) { return config; }, + // Turbopack not working even with this: + // experimental: { + // turbo: { + // resolveExtensions: ['.web.js', '.web.jsx', '.web.ts', '.web.tsx'], + // }, + // }, }; } diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index 985acf4e..007b9b17 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev --turbopack", + "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint", diff --git a/apps/nextjs-no-rn/src/components/ui/accordion.tsx b/apps/nextjs-no-rn/src/components/ui/accordion.tsx index 7aad55f2..ed351125 100644 --- a/apps/nextjs-no-rn/src/components/ui/accordion.tsx +++ b/apps/nextjs-no-rn/src/components/ui/accordion.tsx @@ -4,22 +4,9 @@ import * as AccordionPrimitive from '@rn-primitives/accordion'; import { renderPressableChildren } from '@rn-primitives/utils'; import * as React from 'react'; import { Platform, View } from '@rn-primitives/core'; -// import Animated, { -// Extrapolation, -// FadeIn, -// FadeOutUp, -// LayoutAnimationConfig, -// LinearTransition, -// interpolate, -// useAnimatedStyle, -// useDerivedValue, -// withTiming, -// } from 'react-native-reanimated'; import { TextClassContext } from '~/components/ui/text'; import { cn } from '~/lib/utils'; -type AccordionTriggerRef = AccordionPrimitive.TriggerRef; - function Accordion(props: AccordionPrimitive.RootProps) { return ; } @@ -39,9 +26,7 @@ const AccordionTrigger = ({ className, children, ...props -}: AccordionPrimitive.TriggerProps & { - ref?: React.RefObject; -}) => { +}: AccordionPrimitive.TriggerProps) => { return ( @@ -65,9 +50,9 @@ const AccordionTrigger = ({ viewBox='0 0 24 24' fill='none' stroke='currentColor' - stroke-width='2' - stroke-linecap='round' - stroke-linejoin='round' + strokeWidth='2' + strokeLinecap='round' + strokeLinejoin='round' className='lucide lucide-chevron-down size-4 transition-transform' > @@ -104,5 +89,3 @@ function InnerContent({ children, className }: { children: React.ReactNode; clas } export { Accordion, AccordionContent, AccordionItem, AccordionTrigger }; - -export type { AccordionTriggerRef }; diff --git a/apps/nextjs-no-rn/src/components/ui/text.tsx b/apps/nextjs-no-rn/src/components/ui/text.tsx index 02c57f3d..bf333445 100644 --- a/apps/nextjs-no-rn/src/components/ui/text.tsx +++ b/apps/nextjs-no-rn/src/components/ui/text.tsx @@ -6,11 +6,7 @@ import { cn } from '~/lib/utils'; const TextClassContext = React.createContext(undefined); -function Text({ - className, - asChild = false, - ...props -}: React.ComponentPropsWithoutRef) { +function Text({ className, ...props }: React.ComponentProps) { const textClass = React.useContext(TextClassContext); return ( Date: Mon, 17 Mar 2025 15:05:10 -0400 Subject: [PATCH 052/106] feat: finish react 19 update --- apps/expo-nativewind/.gitignore | 3 + apps/expo-nativewind/app.json | 11 +- .../app/(components)/accordion.tsx | 23 +- .../app/(components)/alert-dialog.tsx | 3 +- .../components/ui/accordion.tsx | 28 +- .../components/ui/alert-dialog.tsx | 103 +- apps/expo-nativewind/components/ui/button.tsx | 14 +- apps/expo-nativewind/lib/merge-props.ts | 19 + package.json | 3 + packages/alert-dialog/src/universal/types.ts | 1 - packages/core/src/native/animatable/types.ts | 12 +- packages/core/src/universal/types.ts | 2 +- packages/slot/src/slot.tsx | 70 +- packages/types/src/index.ts | 8 +- pnpm-lock.yaml | 5455 +++++++---------- 15 files changed, 2311 insertions(+), 3444 deletions(-) create mode 100644 apps/expo-nativewind/lib/merge-props.ts diff --git a/apps/expo-nativewind/.gitignore b/apps/expo-nativewind/.gitignore index 0b37b6eb..42e1570e 100644 --- a/apps/expo-nativewind/.gitignore +++ b/apps/expo-nativewind/.gitignore @@ -16,6 +16,9 @@ web-build/ *.key *.mobileprovision +ios +android + # Metro .metro-health-check* diff --git a/apps/expo-nativewind/app.json b/apps/expo-nativewind/app.json index d128f96d..cdbf479f 100644 --- a/apps/expo-nativewind/app.json +++ b/apps/expo-nativewind/app.json @@ -12,9 +12,12 @@ "resizeMode": "contain", "backgroundColor": "#ffffff" }, - "assetBundlePatterns": ["**/*"], + "assetBundlePatterns": [ + "**/*" + ], "ios": { - "supportsTablet": true + "supportsTablet": true, + "bundleIdentifier": "com.anonymous.starter-base" }, "android": { "adaptiveIcon": { @@ -27,7 +30,9 @@ "output": "static", "favicon": "./assets/images/favicon.png" }, - "plugins": ["expo-router"], + "plugins": [ + "expo-router" + ], "experiments": { "typedRoutes": true } diff --git a/apps/expo-nativewind/app/(components)/accordion.tsx b/apps/expo-nativewind/app/(components)/accordion.tsx index 5bc89926..03bd5a0b 100644 --- a/apps/expo-nativewind/app/(components)/accordion.tsx +++ b/apps/expo-nativewind/app/(components)/accordion.tsx @@ -1,28 +1,18 @@ -import { Pressable } from '@rn-primitives/core'; +import { Pressable, View } from '@rn-primitives/core'; import * as React from 'react'; -import { View } from 'react-native'; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, - AccordionTriggerRef, } from '~/components/ui/accordion'; import { Button } from '~/components/ui/button'; import { Text } from '~/components/ui/text'; export default function AccordionScreen() { - const ref = React.useRef(null); + const ref = React.useRef>(null); return ( - - + + ); } diff --git a/apps/expo-nativewind/app/(components)/alert-dialog.tsx b/apps/expo-nativewind/app/(components)/alert-dialog.tsx index afc0ca54..1777b1be 100644 --- a/apps/expo-nativewind/app/(components)/alert-dialog.tsx +++ b/apps/expo-nativewind/app/(components)/alert-dialog.tsx @@ -1,4 +1,3 @@ -import { PressableRef } from '@rn-primitives/core'; import * as React from 'react'; import { View } from 'react-native'; import { @@ -16,7 +15,7 @@ import { Button } from '~/components/ui/button'; import { Text } from '~/components/ui/text'; export default function AlertDialogScreen() { - const ref = React.useRef(null); + const ref = React.useRef>(null); return ( + + ); +} + +export default App; +``` + +One of the many nice features of TanStack Store is the ability to derive state from other state. That derived state will update when the base state updates. + +Let's check this out by doubling the count using derived state. + +```tsx +import { useStore } from "@tanstack/react-store"; +import { Store, Derived } from "@tanstack/store"; +import "./App.css"; + +const countStore = new Store(0); + +const doubledStore = new Derived({ + fn: () => countStore.state * 2, + deps: [countStore], +}); +doubledStore.mount(); + +function App() { + const count = useStore(countStore); + const doubledCount = useStore(doubledStore); + + return ( +
+ +
Doubled - {doubledCount}
+
+ ); +} + +export default App; +``` + +We use the `Derived` class to create a new store that is derived from another store. The `Derived` class has a `mount` method that will start the derived store updating. + +Once we've created the derived store we can use it in the `App` component just like we would any other store using the `useStore` hook. + +You can find out everything you need to know on how to use TanStack Store in the [TanStack Store documentation](https://tanstack.com/store/latest). + +# Demo files + +Files prefixed with `demo` can be safely deleted. They are there to provide a starting point for you to play around with the features you've installed. + +# Learn More + +You can learn more about all of the offerings from TanStack in the [TanStack documentation](https://tanstack.com). diff --git a/apps/vite-tanstack-router/app.json b/apps/vite-tanstack-router/app.json new file mode 100644 index 00000000..c19dcf39 --- /dev/null +++ b/apps/vite-tanstack-router/app.json @@ -0,0 +1,5 @@ +{ + "ios": { + "bundleIdentifier": "com.anonymous.vite-tanstack-router" + } +} diff --git a/apps/vite-tanstack-router/components.json b/apps/vite-tanstack-router/components.json new file mode 100644 index 00000000..6998bdfb --- /dev/null +++ b/apps/vite-tanstack-router/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/styles.css", + "baseColor": "zinc", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/apps/vite-tanstack-router/index.html b/apps/vite-tanstack-router/index.html new file mode 100644 index 00000000..8cdd26b9 --- /dev/null +++ b/apps/vite-tanstack-router/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + + Create TanStack App - vite-tanstack-router + + +
+ + + diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json new file mode 100644 index 00000000..a8aae912 --- /dev/null +++ b/apps/vite-tanstack-router/package.json @@ -0,0 +1,47 @@ +{ + "name": "vite-tanstack-router", + "private": true, + "type": "module", + "scripts": { + "dev": "vite --port 3000", + "build": "vite build && tsc", + "serve": "vite preview", + "test": "vitest run", + "android": "expo run:android", + "ios": "expo run:ios" + }, + "dependencies": { + "@rn-primitives/accordion": "workspace:*", + "@rn-primitives/core": "workspace:*", + "@rn-primitives/slot": "workspace:*", + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*", + "@tanstack/react-router": "^1.114.3", + "@tanstack/react-router-devtools": "^1.114.3", + "@tanstack/router-plugin": "^1.114.3", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.476.0", + "react": "19.0.0", + "react-dom": "19.0.0", + "tailwind-merge": "^3.0.2", + "tailwindcss": "^3.4.13", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@testing-library/dom": "^10.4.0", + "@testing-library/react": "^16.2.0", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "autoprefixer": "^10.4.21", + "jsdom": "^26.0.0", + "postcss": "^8", + "typescript": "^5.3.3", + "vite": "^6.1.0", + "vite-plugin-react-native-web": "^2.1.1", + "vitest": "^3.0.5", + "web-vitals": "^4.2.4" + }, + "version": "1.0.0" +} diff --git a/apps/vite-tanstack-router/postcss.config.js b/apps/vite-tanstack-router/postcss.config.js new file mode 100644 index 00000000..2e7af2b7 --- /dev/null +++ b/apps/vite-tanstack-router/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/apps/vite-tanstack-router/public/favicon.ico b/apps/vite-tanstack-router/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= z!sii`1giyH7EKL_+Wi0ab<)&E_0KD!3Rp2^HNB*K2@PHCs4PWSA32*-^7d{9nH2_E zmC{C*N*)(vEF1_aMamw2A{ZH5aIDqiabnFdJ|y0%aS|64E$`s2ccV~3lR!u<){eS` z#^Mx6o(iP1Ix%4dv`t@!&Za-K@mTm#vadc{0aWDV*_%EiGK7qMC_(`exc>-$Gb9~W!w_^{*pYRm~G zBN{nA;cm^w$VWg1O^^<6vY`1XCD|s_zv*g*5&V#wv&s#h$xlUilPe4U@I&UXZbL z0)%9Uj&@yd03n;!7do+bfixH^FeZ-Ema}s;DQX2gY+7g0s(9;`8GyvPY1*vxiF&|w z>!vA~GA<~JUqH}d;DfBSi^IT*#lrzXl$fNpq0_T1tA+`A$1?(gLb?e#0>UELvljtQ zK+*74m0jn&)5yk8mLBv;=@}c{t0ztT<v;Avck$S6D`Z)^c0(jiwKhQsn|LDRY&w(Fmi91I7H6S;b0XM{e zXp0~(T@k_r-!jkLwd1_Vre^v$G4|kh4}=Gi?$AaJ)3I+^m|Zyj#*?Kp@w(lQdJZf4 z#|IJW5z+S^e9@(6hW6N~{pj8|NO*>1)E=%?nNUAkmv~OY&ZV;m-%?pQ_11)hAr0oAwILrlsGawpxx4D43J&K=n+p3WLnlDsQ$b(9+4 z?mO^hmV^F8MV{4Lx>(Q=aHhQ1){0d*(e&s%G=i5rq3;t{JC zmgbn5Nkl)t@fPH$v;af26lyhH!k+#}_&aBK4baYPbZy$5aFx4}ka&qxl z$=Rh$W;U)>-=S-0=?7FH9dUAd2(q#4TCAHky!$^~;Dz^j|8_wuKc*YzfdAht@Q&ror?91Dm!N03=4=O!a)I*0q~p0g$Fm$pmr$ zb;wD;STDIi$@M%y1>p&_>%?UP($15gou_ue1u0!4(%81;qcIW8NyxFEvXpiJ|H4wz z*mFT(qVx1FKufG11hByuX%lPk4t#WZ{>8ka2efjY`~;AL6vWyQKpJun2nRiZYDij$ zP>4jQXPaP$UC$yIVgGa)jDV;F0l^n(V=HMRB5)20V7&r$jmk{UUIe zVjKroK}JAbD>B`2cwNQ&GDLx8{pg`7hbA~grk|W6LgiZ`8y`{Iq0i>t!3p2}MS6S+ zO_ruKyAElt)rdS>CtF7j{&6rP-#c=7evGMt7B6`7HG|-(WL`bDUAjyn+k$mx$CH;q2Dz4x;cPP$hW=`pFfLO)!jaCL@V2+F)So3}vg|%O*^T1j>C2lx zsURO-zIJC$^$g2byVbRIo^w>UxK}74^TqUiRR#7s_X$e)$6iYG1(PcW7un-va-S&u zHk9-6Zn&>T==A)lM^D~bk{&rFzCi35>UR!ZjQkdSiNX*-;l4z9j*7|q`TBl~Au`5& z+c)*8?#-tgUR$Zd%Q3bs96w6k7q@#tUn`5rj+r@_sAVVLqco|6O{ILX&U-&-cbVa3 zY?ngHR@%l{;`ri%H*0EhBWrGjv!LE4db?HEWb5mu*t@{kv|XwK8?npOshmzf=vZA@ zVSN9sL~!sn?r(AK)Q7Jk2(|M67Uy3I{eRy z_l&Y@A>;vjkWN5I2xvFFTLX0i+`{qz7C_@bo`ZUzDugfq4+>a3?1v%)O+YTd6@Ul7 zAfLfm=nhZ`)P~&v90$&UcF+yXm9sq!qCx3^9gzIcO|Y(js^Fj)Rvq>nQAHI92ap=P z10A4@prk+AGWCb`2)dQYFuR$|H6iDE8p}9a?#nV2}LBCoCf(Xi2@szia7#gY>b|l!-U`c}@ zLdhvQjc!BdLJvYvzzzngnw51yRYCqh4}$oRCy-z|v3Hc*d|?^Wj=l~18*E~*cR_kU z{XsxM1i{V*4GujHQ3DBpl2w4FgFR48Nma@HPgnyKoIEY-MqmMeY=I<%oG~l!f<+FN z1ZY^;10j4M4#HYXP zw5eJpA_y(>uLQ~OucgxDLuf}fVs272FaMxhn4xnDGIyLXnw>Xsd^J8XhcWIwIoQ9} z%FoSJTAGW(SRGwJwb=@pY7r$uQRK3Zd~XbxU)ts!4XsJrCycrWSI?e!IqwqIR8+Jh zlRjZ`UO1I!BtJR_2~7AbkbSm%XQqxEPkz6BTGWx8e}nQ=w7bZ|eVP4?*Tb!$(R)iC z9)&%bS*u(lXqzitAN)Oo=&Ytn>%Hzjc<5liuPi>zC_nw;Z0AE3Y$Jao_Q90R-gl~5 z_xAb2J%eArrC1CN4G$}-zVvCqF1;H;abAu6G*+PDHSYFx@Tdbfox*uEd3}BUyYY-l zTfEsOqsi#f9^FoLO;ChK<554qkri&Av~SIM*{fEYRE?vH7pTAOmu2pz3X?Wn*!ROX ztd54huAk&mFBemMooL33RV-*1f0Q3_(7hl$<#*|WF9P!;r;4_+X~k~uKEqdzZ$5Al zV63XN@)j$FN#cCD;ek1R#l zv%pGrhB~KWgoCj%GT?%{@@o(AJGt*PG#l3i>lhmb_twKH^EYvacVY-6bsCl5*^~L0 zonm@lk2UvvTKr2RS%}T>^~EYqdL1q4nD%0n&Xqr^cK^`J5W;lRRB^R-O8b&HENO||mo0xaD+S=I8RTlIfVgqN@SXDr2&-)we--K7w= zJVU8?Z+7k9dy;s;^gDkQa`0nz6N{T?(A&Iz)2!DEecLyRa&FI!id#5Z7B*O2=PsR0 zEvc|8{NS^)!d)MDX(97Xw}m&kEO@5jqRaDZ!+%`wYOI<23q|&js`&o4xvjP7D_xv@ z5hEwpsp{HezI9!~6O{~)lLR@oF7?J7i>1|5a~UuoN=q&6N}EJPV_GD`&M*v8Y`^2j zKII*d_@Fi$+i*YEW+Hbzn{iQk~yP z>7N{S4)r*!NwQ`(qcN#8SRQsNK6>{)X12nbF`*7#ecO7I)Q$uZsV+xS4E7aUn+U(K baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/apps/vite-tanstack-router/public/logo192.png b/apps/vite-tanstack-router/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 zcmZWtbyO6NvR-oO24RV%BvuJ&=?+<7=`LvyB&A_#M7mSDYw1v6DJkiYl9XjT!%$dLEBTQ8R9|wd3008in6lFF3GV-6mLi?MoP_y~}QUnaDCHI#t z7w^m$@6DI)|C8_jrT?q=f8D?0AM?L)Z}xAo^e^W>t$*Y0KlT5=@bBjT9kxb%-KNdk zeOS1tKO#ChhG7%{ApNBzE2ZVNcxbrin#E1TiAw#BlUhXllzhN$qWez5l;h+t^q#Eav8PhR2|T}y5kkflaK`ba-eoE+Z2q@o6P$)=&` z+(8}+-McnNO>e#$Rr{32ngsZIAX>GH??tqgwUuUz6kjns|LjsB37zUEWd|(&O!)DY zQLrq%Y>)Y8G`yYbYCx&aVHi@-vZ3|ebG!f$sTQqMgi0hWRJ^Wc+Ibv!udh_r%2|U) zPi|E^PK?UE!>_4`f`1k4hqqj_$+d!EB_#IYt;f9)fBOumGNyglU(ofY`yHq4Y?B%- zp&G!MRY<~ajTgIHErMe(Z8JG*;D-PJhd@RX@QatggM7+G(Lz8eZ;73)72Hfx5KDOE zkT(m}i2;@X2AT5fW?qVp?@WgN$aT+f_6eo?IsLh;jscNRp|8H}Z9p_UBO^SJXpZew zEK8fz|0Th%(Wr|KZBGTM4yxkA5CFdAj8=QSrT$fKW#tweUFqr0TZ9D~a5lF{)%-tTGMK^2tz(y2v$i%V8XAxIywrZCp=)83p(zIk6@S5AWl|Oa2hF`~~^W zI;KeOSkw1O#TiQ8;U7OPXjZM|KrnN}9arP)m0v$c|L)lF`j_rpG(zW1Qjv$=^|p*f z>)Na{D&>n`jOWMwB^TM}slgTEcjxTlUby89j1)|6ydRfWERn3|7Zd2&e7?!K&5G$x z`5U3uFtn4~SZq|LjFVrz$3iln-+ucY4q$BC{CSm7Xe5c1J<=%Oagztj{ifpaZk_bQ z9Sb-LaQMKp-qJA*bP6DzgE3`}*i1o3GKmo2pn@dj0;He}F=BgINo};6gQF8!n0ULZ zL>kC0nPSFzlcB7p41doao2F7%6IUTi_+!L`MM4o*#Y#0v~WiO8uSeAUNp=vA2KaR&=jNR2iVwG>7t%sG2x_~yXzY)7K& zk3p+O0AFZ1eu^T3s};B%6TpJ6h-Y%B^*zT&SN7C=N;g|#dGIVMSOru3iv^SvO>h4M=t-N1GSLLDqVTcgurco6)3&XpU!FP6Hlrmj}f$ zp95;b)>M~`kxuZF3r~a!rMf4|&1=uMG$;h^g=Kl;H&Np-(pFT9FF@++MMEx3RBsK?AU0fPk-#mdR)Wdkj)`>ZMl#^<80kM87VvsI3r_c@_vX=fdQ`_9-d(xiI z4K;1y1TiPj_RPh*SpDI7U~^QQ?%0&!$Sh#?x_@;ag)P}ZkAik{_WPB4rHyW#%>|Gs zdbhyt=qQPA7`?h2_8T;-E6HI#im9K>au*(j4;kzwMSLgo6u*}-K`$_Gzgu&XE)udQ zmQ72^eZd|vzI)~!20JV-v-T|<4@7ruqrj|o4=JJPlybwMg;M$Ud7>h6g()CT@wXm` zbq=A(t;RJ^{Xxi*Ff~!|3!-l_PS{AyNAU~t{h;(N(PXMEf^R(B+ZVX3 z8y0;0A8hJYp@g+c*`>eTA|3Tgv9U8#BDTO9@a@gVMDxr(fVaEqL1tl?md{v^j8aUv zm&%PX4^|rX|?E4^CkplWWNv*OKM>DxPa z!RJ)U^0-WJMi)Ksc!^ixOtw^egoAZZ2Cg;X7(5xZG7yL_;UJ#yp*ZD-;I^Z9qkP`} zwCTs0*%rIVF1sgLervtnUo&brwz?6?PXRuOCS*JI-WL6GKy7-~yi0giTEMmDs_-UX zo=+nFrW_EfTg>oY72_4Z0*uG>MnXP=c0VpT&*|rvv1iStW;*^={rP1y?Hv+6R6bxFMkxpWkJ>m7Ba{>zc_q zEefC3jsXdyS5??Mz7IET$Kft|EMNJIv7Ny8ZOcKnzf`K5Cd)&`-fTY#W&jnV0l2vt z?Gqhic}l}mCv1yUEy$%DP}4AN;36$=7aNI^*AzV(eYGeJ(Px-j<^gSDp5dBAv2#?; zcMXv#aj>%;MiG^q^$0MSg-(uTl!xm49dH!{X0){Ew7ThWV~Gtj7h%ZD zVN-R-^7Cf0VH!8O)uUHPL2mO2tmE*cecwQv_5CzWeh)ykX8r5Hi`ehYo)d{Jnh&3p z9ndXT$OW51#H5cFKa76c<%nNkP~FU93b5h-|Cb}ScHs@4Q#|}byWg;KDMJ#|l zE=MKD*F@HDBcX@~QJH%56eh~jfPO-uKm}~t7VkHxHT;)4sd+?Wc4* z>CyR*{w@4(gnYRdFq=^(#-ytb^5ESD?x<0Skhb%Pt?npNW1m+Nv`tr9+qN<3H1f<% zZvNEqyK5FgPsQ`QIu9P0x_}wJR~^CotL|n zk?dn;tLRw9jJTur4uWoX6iMm914f0AJfB@C74a;_qRrAP4E7l890P&{v<}>_&GLrW z)klculcg`?zJO~4;BBAa=POU%aN|pmZJn2{hA!d!*lwO%YSIzv8bTJ}=nhC^n}g(ld^rn#kq9Z3)z`k9lvV>y#!F4e{5c$tnr9M{V)0m(Z< z#88vX6-AW7T2UUwW`g<;8I$Jb!R%z@rCcGT)-2k7&x9kZZT66}Ztid~6t0jKb&9mm zpa}LCb`bz`{MzpZR#E*QuBiZXI#<`5qxx=&LMr-UUf~@dRk}YI2hbMsAMWOmDzYtm zjof16D=mc`^B$+_bCG$$@R0t;e?~UkF?7<(vkb70*EQB1rfUWXh$j)R2)+dNAH5%R zEBs^?N;UMdy}V};59Gu#0$q53$}|+q7CIGg_w_WlvE}AdqoS<7DY1LWS9?TrfmcvT zaypmplwn=P4;a8-%l^e?f`OpGb}%(_mFsL&GywhyN(-VROj`4~V~9bGv%UhcA|YW% zs{;nh@aDX11y^HOFXB$a7#Sr3cEtNd4eLm@Y#fc&j)TGvbbMwze zXtekX_wJqxe4NhuW$r}cNy|L{V=t#$%SuWEW)YZTH|!iT79k#?632OFse{+BT_gau zJwQcbH{b}dzKO?^dV&3nTILYlGw{27UJ72ZN){BILd_HV_s$WfI2DC<9LIHFmtyw? zQ;?MuK7g%Ym+4e^W#5}WDLpko%jPOC=aN)3!=8)s#Rnercak&b3ESRX3z{xfKBF8L z5%CGkFmGO@x?_mPGlpEej!3!AMddChabyf~nJNZxx!D&{@xEb!TDyvqSj%Y5@A{}9 zRzoBn0?x}=krh{ok3Nn%e)#~uh;6jpezhA)ySb^b#E>73e*frBFu6IZ^D7Ii&rsiU z%jzygxT-n*joJpY4o&8UXr2s%j^Q{?e-voloX`4DQyEK+DmrZh8A$)iWL#NO9+Y@!sO2f@rI!@jN@>HOA< z?q2l{^%mY*PNx2FoX+A7X3N}(RV$B`g&N=e0uvAvEN1W^{*W?zT1i#fxuw10%~))J zjx#gxoVlXREWZf4hRkgdHx5V_S*;p-y%JtGgQ4}lnA~MBz-AFdxUxU1RIT$`sal|X zPB6sEVRjGbXIP0U+?rT|y5+ev&OMX*5C$n2SBPZr`jqzrmpVrNciR0e*Wm?fK6DY& zl(XQZ60yWXV-|Ps!A{EF;=_z(YAF=T(-MkJXUoX zI{UMQDAV2}Ya?EisdEW;@pE6dt;j0fg5oT2dxCi{wqWJ<)|SR6fxX~5CzblPGr8cb zUBVJ2CQd~3L?7yfTpLNbt)He1D>*KXI^GK%<`bq^cUq$Q@uJifG>p3LU(!H=C)aEL zenk7pVg}0{dKU}&l)Y2Y2eFMdS(JS0}oZUuVaf2+K*YFNGHB`^YGcIpnBlMhO7d4@vV zv(@N}(k#REdul8~fP+^F@ky*wt@~&|(&&meNO>rKDEnB{ykAZ}k>e@lad7to>Ao$B zz<1(L=#J*u4_LB=8w+*{KFK^u00NAmeNN7pr+Pf+N*Zl^dO{LM-hMHyP6N!~`24jd zXYP|Ze;dRXKdF2iJG$U{k=S86l@pytLx}$JFFs8e)*Vi?aVBtGJ3JZUj!~c{(rw5>vuRF$`^p!P8w1B=O!skwkO5yd4_XuG^QVF z`-r5K7(IPSiKQ2|U9+`@Js!g6sfJwAHVd|s?|mnC*q zp|B|z)(8+mxXyxQ{8Pg3F4|tdpgZZSoU4P&9I8)nHo1@)9_9u&NcT^FI)6|hsAZFk zZ+arl&@*>RXBf-OZxhZerOr&dN5LW9@gV=oGFbK*J+m#R-|e6(Loz(;g@T^*oO)0R zN`N=X46b{7yk5FZGr#5&n1!-@j@g02g|X>MOpF3#IjZ_4wg{dX+G9eqS+Es9@6nC7 zD9$NuVJI}6ZlwtUm5cCAiYv0(Yi{%eH+}t)!E^>^KxB5^L~a`4%1~5q6h>d;paC9c zTj0wTCKrhWf+F#5>EgX`sl%POl?oyCq0(w0xoL?L%)|Q7d|Hl92rUYAU#lc**I&^6p=4lNQPa0 znQ|A~i0ip@`B=FW-Q;zh?-wF;Wl5!+q3GXDu-x&}$gUO)NoO7^$BeEIrd~1Dh{Tr` z8s<(Bn@gZ(mkIGnmYh_ehXnq78QL$pNDi)|QcT*|GtS%nz1uKE+E{7jdEBp%h0}%r zD2|KmYGiPa4;md-t_m5YDz#c*oV_FqXd85d@eub?9N61QuYcb3CnVWpM(D-^|CmkL z(F}L&N7qhL2PCq)fRh}XO@U`Yn<?TNGR4L(mF7#4u29{i~@k;pLsgl({YW5`Mo+p=zZn3L*4{JU;++dG9 X@eDJUQo;Ye2mwlRs?y0|+_a0zY+Zo%Dkae}+MySoIppb75o?vUW_?)>@g{U2`ERQIXV zeY$JrWnMZ$QC<=ii4X|@0H8`si75jB(ElJb00HAB%>SlLR{!zO|C9P3zxw_U8?1d8uRZ=({Ga4shyN}3 zAK}WA(ds|``G4jA)9}Bt2Hy0+f3rV1E6b|@?hpGA=PI&r8)ah|)I2s(P5Ic*Ndhn^ z*T&j@gbCTv7+8rpYbR^Ty}1AY)YH;p!m948r#%7x^Z@_-w{pDl|1S4`EM3n_PaXvK z1JF)E3qy$qTj5Xs{jU9k=y%SQ0>8E$;x?p9ayU0bZZeo{5Z@&FKX>}s!0+^>C^D#z z>xsCPvxD3Z=dP}TTOSJhNTPyVt14VCQ9MQFN`rn!c&_p?&4<5_PGm4a;WS&1(!qKE z_H$;dDdiPQ!F_gsN`2>`X}$I=B;={R8%L~`>RyKcS$72ai$!2>d(YkciA^J0@X%G4 z4cu!%Ps~2JuJ8ex`&;Fa0NQOq_nDZ&X;^A=oc1&f#3P1(!5il>6?uK4QpEG8z0Rhu zvBJ+A9RV?z%v?!$=(vcH?*;vRs*+PPbOQ3cdPr5=tOcLqmfx@#hOqX0iN)wTTO21jH<>jpmwRIAGw7`a|sl?9y9zRBh>(_%| zF?h|P7}~RKj?HR+q|4U`CjRmV-$mLW>MScKnNXiv{vD3&2@*u)-6P@h0A`eeZ7}71 zK(w%@R<4lLt`O7fs1E)$5iGb~fPfJ?WxhY7c3Q>T-w#wT&zW522pH-B%r5v#5y^CF zcC30Se|`D2mY$hAlIULL%-PNXgbbpRHgn<&X3N9W!@BUk@9g*P5mz-YnZBb*-$zMM z7Qq}ic0mR8n{^L|=+diODdV}Q!gwr?y+2m=3HWwMq4z)DqYVg0J~^}-%7rMR@S1;9 z7GFj6K}i32X;3*$SmzB&HW{PJ55kT+EI#SsZf}bD7nW^Haf}_gXciYKX{QBxIPSx2Ma? zHQqgzZq!_{&zg{yxqv3xq8YV+`S}F6A>Gtl39_m;K4dA{pP$BW0oIXJ>jEQ!2V3A2 zdpoTxG&V=(?^q?ZTj2ZUpDUdMb)T?E$}CI>r@}PFPWD9@*%V6;4Ag>D#h>!s)=$0R zRXvdkZ%|c}ubej`jl?cS$onl9Tw52rBKT)kgyw~Xy%z62Lr%V6Y=f?2)J|bZJ5(Wx zmji`O;_B+*X@qe-#~`HFP<{8$w@z4@&`q^Q-Zk8JG3>WalhnW1cvnoVw>*R@c&|o8 zZ%w!{Z+MHeZ*OE4v*otkZqz11*s!#s^Gq>+o`8Z5 z^i-qzJLJh9!W-;SmFkR8HEZJWiXk$40i6)7 zZpr=k2lp}SasbM*Nbn3j$sn0;rUI;%EDbi7T1ZI4qL6PNNM2Y%6{LMIKW+FY_yF3) zSKQ2QSujzNMSL2r&bYs`|i2Dnn z=>}c0>a}>|uT!IiMOA~pVT~R@bGlm}Edf}Kq0?*Af6#mW9f9!}RjW7om0c9Qlp;yK z)=XQs(|6GCadQbWIhYF=rf{Y)sj%^Id-ARO0=O^Ad;Ph+ z0?$eE1xhH?{T$QI>0JP75`r)U_$#%K1^BQ8z#uciKf(C701&RyLQWBUp*Q7eyn76} z6JHpC9}R$J#(R0cDCkXoFSp;j6{x{b&0yE@P7{;pCEpKjS(+1RQy38`=&Yxo%F=3y zCPeefABp34U-s?WmU#JJw23dcC{sPPFc2#J$ZgEN%zod}J~8dLm*fx9f6SpO zn^Ww3bt9-r0XaT2a@Wpw;C23XM}7_14#%QpubrIw5aZtP+CqIFmsG4`Cm6rfxl9n5 z7=r2C-+lM2AB9X0T_`?EW&Byv&K?HS4QLoylJ|OAF z`8atBNTzJ&AQ!>sOo$?^0xj~D(;kS$`9zbEGd>f6r`NC3X`tX)sWgWUUOQ7w=$TO&*j;=u%25ay-%>3@81tGe^_z*C7pb9y*Ed^H3t$BIKH2o+olp#$q;)_ zfpjCb_^VFg5fU~K)nf*d*r@BCC>UZ!0&b?AGk_jTPXaSnCuW110wjHPPe^9R^;jo3 zwvzTl)C`Zl5}O2}3lec=hZ*$JnkW#7enKKc)(pM${_$9Hc=Sr_A9Biwe*Y=T?~1CK z6eZ9uPICjy-sMGbZl$yQmpB&`ouS8v{58__t0$JP%i3R&%QR3ianbZqDs<2#5FdN@n5bCn^ZtH992~5k(eA|8|@G9u`wdn7bnpg|@{m z^d6Y`*$Zf2Xr&|g%sai#5}Syvv(>Jnx&EM7-|Jr7!M~zdAyjt*xl;OLhvW-a%H1m0 z*x5*nb=R5u><7lyVpNAR?q@1U59 zO+)QWwL8t zyip?u_nI+K$uh{y)~}qj?(w0&=SE^8`_WMM zTybjG=999h38Yes7}-4*LJ7H)UE8{mE(6;8voE+TYY%33A>S6`G_95^5QHNTo_;Ao ztIQIZ_}49%{8|=O;isBZ?=7kfdF8_@azfoTd+hEJKWE!)$)N%HIe2cplaK`ry#=pV z0q{9w-`i0h@!R8K3GC{ivt{70IWG`EP|(1g7i_Q<>aEAT{5(yD z=!O?kq61VegV+st@XCw475j6vS)_z@efuqQgHQR1T4;|-#OLZNQJPV4k$AX1Uk8Lm z{N*b*ia=I+MB}kWpupJ~>!C@xEN#Wa7V+7{m4j8c?)ChV=D?o~sjT?0C_AQ7B-vxqX30s0I_`2$in86#`mAsT-w?j{&AL@B3$;P z31G4(lV|b}uSDCIrjk+M1R!X7s4Aabn<)zpgT}#gE|mIvV38^ODy@<&yflpCwS#fRf9ZX3lPV_?8@C5)A;T zqmouFLFk;qIs4rA=hh=GL~sCFsXHsqO6_y~*AFt939UYVBSx1s(=Kb&5;j7cSowdE;7()CC2|-i9Zz+_BIw8#ll~-tyH?F3{%`QCsYa*b#s*9iCc`1P1oC26?`g<9))EJ3%xz+O!B3 zZ7$j~To)C@PquR>a1+Dh>-a%IvH_Y7^ys|4o?E%3`I&ADXfC8++hAdZfzIT#%C+Jz z1lU~K_vAm0m8Qk}K$F>|>RPK%<1SI0(G+8q~H zAsjezyP+u!Se4q3GW)`h`NPSRlMoBjCzNPesWJwVTY!o@G8=(6I%4XHGaSiS3MEBK zhgGFv6Jc>L$4jVE!I?TQuwvz_%CyO!bLh94nqK11C2W$*aa2ueGopG8DnBICVUORP zgytv#)49fVXDaR$SukloYC3u7#5H)}1K21=?DKj^U)8G;MS)&Op)g^zR2($<>C*zW z;X7`hLxiIO#J`ANdyAOJle4V%ppa*(+0i3w;8i*BA_;u8gOO6)MY`ueq7stBMJTB; z-a0R>hT*}>z|Gg}@^zDL1MrH+2hsR8 zHc}*9IvuQC^Ju)^#Y{fOr(96rQNPNhxc;mH@W*m206>Lo<*SaaH?~8zg&f&%YiOEG zGiz?*CP>Bci}!WiS=zj#K5I}>DtpregpP_tfZtPa(N<%vo^#WCQ5BTv0vr%Z{)0q+ z)RbfHktUm|lg&U3YM%lMUM(fu}i#kjX9h>GYctkx9Mt_8{@s%!K_EI zScgwy6%_fR?CGJQtmgNAj^h9B#zmaMDWgH55pGuY1Gv7D z;8Psm(vEPiwn#MgJYu4Ty9D|h!?Rj0ddE|&L3S{IP%H4^N!m`60ZwZw^;eg4sk6K{ ziA^`Sbl_4~f&Oo%n;8Ye(tiAdlZKI!Z=|j$5hS|D$bDJ}p{gh$KN&JZYLUjv4h{NY zBJ>X9z!xfDGY z+oh_Z&_e#Q(-}>ssZfm=j$D&4W4FNy&-kAO1~#3Im;F)Nwe{(*75(p=P^VI?X0GFakfh+X-px4a%Uw@fSbmp9hM1_~R>?Z8+ ziy|e9>8V*`OP}4x5JjdWp}7eX;lVxp5qS}0YZek;SNmm7tEeSF*-dI)6U-A%m6YvCgM(}_=k#a6o^%-K4{`B1+}O4x zztDT%hVb;v#?j`lTvlFQ3aV#zkX=7;YFLS$uIzb0E3lozs5`Xy zi~vF+%{z9uLjKvKPhP%x5f~7-Gj+%5N`%^=yk*Qn{`> z;xj&ROY6g`iy2a@{O)V(jk&8#hHACVDXey5a+KDod_Z&}kHM}xt7}Md@pil{2x7E~ zL$k^d2@Ec2XskjrN+IILw;#7((abu;OJii&v3?60x>d_Ma(onIPtcVnX@ELF0aL?T zSmWiL3(dOFkt!x=1O!_0n(cAzZW+3nHJ{2S>tgSK?~cFha^y(l@-Mr2W$%MN{#af8J;V*>hdq!gx=d0h$T7l}>91Wh07)9CTX zh2_ZdQCyFOQ)l(}gft0UZG`Sh2`x-w`5vC2UD}lZs*5 zG76$akzn}Xi))L3oGJ75#pcN=cX3!=57$Ha=hQ2^lwdyU#a}4JJOz6ddR%zae%#4& za)bFj)z=YQela(F#Y|Q#dp}PJghITwXouVaMq$BM?K%cXn9^Y@g43$=O)F&ZlOUom zJiad#dea;-eywBA@e&D6Pdso1?2^(pXiN91?jvcaUyYoKUmvl5G9e$W!okWe*@a<^ z8cQQ6cNSf+UPDx%?_G4aIiybZHHagF{;IcD(dPO!#=u zWfqLcPc^+7Uu#l(Bpxft{*4lv#*u7X9AOzDO z1D9?^jIo}?%iz(_dwLa{ex#T}76ZfN_Z-hwpus9y+4xaUu9cX}&P{XrZVWE{1^0yw zO;YhLEW!pJcbCt3L8~a7>jsaN{V3>tz6_7`&pi%GxZ=V3?3K^U+*ryLSb)8^IblJ0 zSRLNDvIxt)S}g30?s_3NX>F?NKIGrG_zB9@Z>uSW3k2es_H2kU;Rnn%j5qP)!XHKE zPB2mHP~tLCg4K_vH$xv`HbRsJwbZMUV(t=ez;Ec(vyHH)FbfLg`c61I$W_uBB>i^r z&{_P;369-&>23R%qNIULe=1~T$(DA`ev*EWZ6j(B$(te}x1WvmIll21zvygkS%vwG zzkR6Z#RKA2!z!C%M!O>!=Gr0(J0FP=-MN=5t-Ir)of50y10W}j`GtRCsXBakrKtG& zazmITDJMA0C51&BnLY)SY9r)NVTMs);1<=oosS9g31l{4ztjD3#+2H7u_|66b|_*O z;Qk6nalpqdHOjx|K&vUS_6ITgGll;TdaN*ta=M_YtyC)I9Tmr~VaPrH2qb6sd~=AcIxV+%z{E&0@y=DPArw zdV7z(G1hBx7hd{>(cr43^WF%4Y@PXZ?wPpj{OQ#tvc$pABJbvPGvdR`cAtHn)cSEV zrpu}1tJwQ3y!mSmH*uz*x0o|CS<^w%&KJzsj~DU0cLQUxk5B!hWE>aBkjJle8z~;s z-!A=($+}Jq_BTK5^B!`R>!MulZN)F=iXXeUd0w5lUsE5VP*H*oCy(;?S$p*TVvTxwAeWFB$jHyb0593)$zqalVlDX=GcCN1gU0 zlgU)I$LcXZ8Oyc2TZYTPu@-;7<4YYB-``Qa;IDcvydIA$%kHhJKV^m*-zxcvU4viy&Kr5GVM{IT>WRywKQ9;>SEiQD*NqplK-KK4YR`p0@JW)n_{TU3bt0 zim%;(m1=#v2}zTps=?fU5w^(*y)xT%1vtQH&}50ZF!9YxW=&7*W($2kgKyz1mUgfs zfV<*XVVIFnohW=|j+@Kfo!#liQR^x>2yQdrG;2o8WZR+XzU_nG=Ed2rK?ntA;K5B{ z>M8+*A4!Jm^Bg}aW?R?6;@QG@uQ8&oJ{hFixcfEnJ4QH?A4>P=q29oDGW;L;= z9-a0;g%c`C+Ai!UmK$NC*4#;Jp<1=TioL=t^YM)<<%u#hnnfSS`nq63QKGO1L8RzX z@MFDqs1z ztYmxDl@LU)5acvHk)~Z`RW7=aJ_nGD!mOSYD>5Odjn@TK#LY{jf?+piB5AM-CAoT_ z?S-*q7}wyLJzK>N%eMPuFgN)Q_otKP;aqy=D5f!7<=n(lNkYRXVpkB{TAYLYg{|(jtRqYmg$xH zjmq?B(RE4 zQx^~Pt}gxC2~l=K$$-sYy_r$CO(d=+b3H1MB*y_5g6WLaWTXn+TKQ|hNY^>Mp6k*$ zwkovomhu776vQATqT4blf~g;TY(MWCrf^^yfWJvSAB$p5l;jm@o#=!lqw+Lqfq>X= z$6~kxfm7`3q4zUEB;u4qa#BdJxO!;xGm)wwuisj{0y2x{R(IGMrsIzDY9LW>m!Y`= z04sx3IjnYvL<4JqxQ8f7qYd0s2Ig%`ytYPEMKI)s(LD}D@EY>x`VFtqvnADNBdeao zC96X+MxnwKmjpg{U&gP3HE}1=s!lv&D{6(g_lzyF3A`7Jn*&d_kL<;dAFx!UZ>hB8 z5A*%LsAn;VLp>3${0>M?PSQ)9s3}|h2e?TG4_F{}{Cs>#3Q*t$(CUc}M)I}8cPF6% z=+h(Kh^8)}gj(0}#e7O^FQ6`~fd1#8#!}LMuo3A0bN`o}PYsm!Y}sdOz$+Tegc=qT z8x`PH$7lvnhJp{kHWb22l;@7B7|4yL4UOOVM0MP_>P%S1Lnid)+k9{+3D+JFa#Pyf zhVc#&df87APl4W9X)F3pGS>@etfl=_E5tBcVoOfrD4hmVeTY-cj((pkn%n@EgN{0f zwb_^Rk0I#iZuHK!l*lN`ceJn(sI{$Fq6nN& zE<-=0_2WN}m+*ivmIOxB@#~Q-cZ>l136w{#TIJe478`KE7@=a{>SzPHsKLzYAyBQO zAtuuF$-JSDy_S@6GW0MOE~R)b;+0f%_NMrW(+V#c_d&U8Z9+ec4=HmOHw?gdjF(Lu zzra83M_BoO-1b3;9`%&DHfuUY)6YDV21P$C!Rc?mv&{lx#f8oc6?0?x zK08{WP65?#>(vPfA-c=MCY|%*1_<3D4NX zeVTi-JGl2uP_2@0F{G({pxQOXt_d{g_CV6b?jNpfUG9;8yle-^4KHRvZs-_2siata zt+d_T@U$&t*xaD22(fH(W1r$Mo?3dc%Tncm=C6{V9y{v&VT#^1L04vDrLM9qBoZ4@ z6DBN#m57hX7$C(=#$Y5$bJmwA$T8jKD8+6A!-IJwA{WOfs%s}yxUw^?MRZjF$n_KN z6`_bGXcmE#5e4Ym)aQJ)xg3Pg0@k`iGuHe?f(5LtuzSq=nS^5z>vqU0EuZ&75V%Z{ zYyhRLN^)$c6Ds{f7*FBpE;n5iglx5PkHfWrj3`x^j^t z7ntuV`g!9Xg#^3!x)l*}IW=(Tz3>Y5l4uGaB&lz{GDjm2D5S$CExLT`I1#n^lBH7Y zDgpMag@`iETKAI=p<5E#LTkwzVR@=yY|uBVI1HG|8h+d;G-qfuj}-ZR6fN>EfCCW z9~wRQoAPEa#aO?3h?x{YvV*d+NtPkf&4V0k4|L=uj!U{L+oLa(z#&iuhJr3-PjO3R z5s?=nn_5^*^Rawr>>Nr@K(jwkB#JK-=+HqwfdO<+P5byeim)wvqGlP-P|~Nse8=XF zz`?RYB|D6SwS}C+YQv+;}k6$-%D(@+t14BL@vM z2q%q?f6D-A5s$_WY3{^G0F131bbh|g!}#BKw=HQ7mx;Dzg4Z*bTLQSfo{ed{4}NZW zfrRm^Ca$rlE{Ue~uYv>R9{3smwATcdM_6+yWIO z*ZRH~uXE@#p$XTbCt5j7j2=86e{9>HIB6xDzV+vAo&B?KUiMP|ttOElepnl%|DPqL b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/apps/vite-tanstack-router/public/manifest.json b/apps/vite-tanstack-router/public/manifest.json new file mode 100644 index 00000000..078ef501 --- /dev/null +++ b/apps/vite-tanstack-router/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "TanStack App", + "name": "Create TanStack App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/apps/vite-tanstack-router/public/robots.txt b/apps/vite-tanstack-router/public/robots.txt new file mode 100644 index 00000000..e9e57dc4 --- /dev/null +++ b/apps/vite-tanstack-router/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/apps/vite-tanstack-router/src/components/Header.tsx b/apps/vite-tanstack-router/src/components/Header.tsx new file mode 100644 index 00000000..7efbeddf --- /dev/null +++ b/apps/vite-tanstack-router/src/components/Header.tsx @@ -0,0 +1,13 @@ +import { Link } from '@tanstack/react-router' + +export default function Header() { + return ( +
+ +
+ ) +} diff --git a/apps/vite-tanstack-router/src/components/core.tsx b/apps/vite-tanstack-router/src/components/core.tsx new file mode 100644 index 00000000..e7eb24ef --- /dev/null +++ b/apps/vite-tanstack-router/src/components/core.tsx @@ -0,0 +1,25 @@ +'use client'; +import { Image, Platform, Pressable, Text, View, type PressableRef } from '@rn-primitives/core'; +import * as React from 'react'; + +export function Core() { + const ref = React.useRef(null); + return ( + + + alert('Pressed')}> + + {Platform.select({ ios: 'iOS', web: 'Web' })} Pressable with Nested text{' '} + + + { + console.log('ref', ref.current); + ref.current?.press(); + }} + > + Press other Pressable + + + ); +} diff --git a/apps/vite-tanstack-router/src/components/ui/accordion.tsx b/apps/vite-tanstack-router/src/components/ui/accordion.tsx new file mode 100644 index 00000000..5c6c50e1 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/accordion.tsx @@ -0,0 +1,91 @@ +'use client'; + +import * as AccordionPrimitive from '@rn-primitives/accordion'; +import { renderPressableChildren } from '@rn-primitives/utils'; +import * as React from 'react'; +import { Platform, View } from '@rn-primitives/core'; +import { TextClassContext } from '@/components/ui/text'; +import { cn } from '@/lib/utils'; + +function Accordion(props: AccordionPrimitive.RootProps) { + return ; +} + +function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemProps) { + return ( + + ); +} + +const AccordionTrigger = ({ + ref, + className, + children, + ...props +}: AccordionPrimitive.TriggerProps) => { + return ( + + + svg]:rotate-180', + }), + className + )} + {...props} + > + {renderPressableChildren(children, (children) => { + return ( + <> + {children} + + + + + ); + })} + + + + ); +}; + +function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { + return ( + + + {children} + + + ); +} + +function InnerContent({ children, className }: { children: React.ReactNode; className?: string }) { + return {children}; +} + +export { Accordion, AccordionContent, AccordionItem, AccordionTrigger }; diff --git a/apps/vite-tanstack-router/src/components/ui/text.tsx b/apps/vite-tanstack-router/src/components/ui/text.tsx new file mode 100644 index 00000000..814e9de0 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/text.tsx @@ -0,0 +1,21 @@ +'use client'; + +import { Text as RNPText } from '@rn-primitives/core'; +import * as React from 'react'; +import { cn } from '@/lib/utils'; + +const TextClassContext = React.createContext(undefined); + +function Text({ className, ...props }: React.ComponentProps) { + const textClass = React.useContext(TextClassContext); + return ( + + ); +} + +Text.displayName = 'Text'; + +export { Text, TextClassContext }; diff --git a/apps/vite-tanstack-router/src/lib/utils.ts b/apps/vite-tanstack-router/src/lib/utils.ts new file mode 100644 index 00000000..bd0c391d --- /dev/null +++ b/apps/vite-tanstack-router/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/apps/vite-tanstack-router/src/logo.svg b/apps/vite-tanstack-router/src/logo.svg new file mode 100644 index 00000000..d6c2da20 --- /dev/null +++ b/apps/vite-tanstack-router/src/logo.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/vite-tanstack-router/src/main.tsx b/apps/vite-tanstack-router/src/main.tsx new file mode 100644 index 00000000..1b093697 --- /dev/null +++ b/apps/vite-tanstack-router/src/main.tsx @@ -0,0 +1,42 @@ +import { StrictMode } from 'react' +import ReactDOM from 'react-dom/client' +import { RouterProvider, createRouter } from '@tanstack/react-router' + +// Import the generated route tree +import { routeTree } from './routeTree.gen' + +import './styles.css' +import reportWebVitals from './reportWebVitals.ts' + +// Create a new router instance +const router = createRouter({ + routeTree, + context: {}, + defaultPreload: 'intent', + scrollRestoration: true, + defaultStructuralSharing: true, + defaultPreloadStaleTime: 0, +}) + +// Register the router instance for type safety +declare module '@tanstack/react-router' { + interface Register { + router: typeof router + } +} + +// Render the app +const rootElement = document.getElementById('app') +if (rootElement && !rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement) + root.render( + + + , + ) +} + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals() diff --git a/apps/vite-tanstack-router/src/reportWebVitals.ts b/apps/vite-tanstack-router/src/reportWebVitals.ts new file mode 100644 index 00000000..16b66b5f --- /dev/null +++ b/apps/vite-tanstack-router/src/reportWebVitals.ts @@ -0,0 +1,13 @@ +const reportWebVitals = (onPerfEntry?: () => void) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ onCLS, onINP, onFCP, onLCP, onTTFB }) => { + onCLS(onPerfEntry) + onINP(onPerfEntry) + onFCP(onPerfEntry) + onLCP(onPerfEntry) + onTTFB(onPerfEntry) + }) + } +} + +export default reportWebVitals diff --git a/apps/vite-tanstack-router/src/routeTree.gen.ts b/apps/vite-tanstack-router/src/routeTree.gen.ts new file mode 100644 index 00000000..5e682936 --- /dev/null +++ b/apps/vite-tanstack-router/src/routeTree.gen.ts @@ -0,0 +1,88 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +// Import Routes + +import { Route as rootRoute } from './routes/__root' +import { Route as IndexImport } from './routes/index' + +// Create/Update Routes + +const IndexRoute = IndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRoute, +} as any) + +// Populate the FileRoutesByPath interface + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexImport + parentRoute: typeof rootRoute + } + } +} + +// Create and export the route tree + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute +} + +export interface FileRoutesByTo { + '/': typeof IndexRoute +} + +export interface FileRoutesById { + __root__: typeof rootRoute + '/': typeof IndexRoute +} + +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '__root__' | '/' + fileRoutesById: FileRoutesById +} + +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} + +export const routeTree = rootRoute + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +/* ROUTE_MANIFEST_START +{ + "routes": { + "__root__": { + "filePath": "__root.tsx", + "children": [ + "/" + ] + }, + "/": { + "filePath": "index.tsx" + } + } +} +ROUTE_MANIFEST_END */ diff --git a/apps/vite-tanstack-router/src/routes/__root.tsx b/apps/vite-tanstack-router/src/routes/__root.tsx new file mode 100644 index 00000000..ec95b76c --- /dev/null +++ b/apps/vite-tanstack-router/src/routes/__root.tsx @@ -0,0 +1,15 @@ +import { Outlet, createRootRoute } from '@tanstack/react-router' +import { TanStackRouterDevtools } from '@tanstack/react-router-devtools' + +import Header from '../components/Header' + +export const Route = createRootRoute({ + component: () => ( + <> +
+ + + + + ), +}) diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx new file mode 100644 index 00000000..6111a2dd --- /dev/null +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -0,0 +1,65 @@ +import { createFileRoute } from '@tanstack/react-router'; +import { Text, View } from '@rn-primitives/core'; +import { Core } from '@/components/core'; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from '@/components/ui/accordion'; + +export const Route = createFileRoute('/')({ + component: App, +}); + +export function App() { + return ( +
+
+

@rn-primitives

+ +

Styled with Tailwind

+ + No react-native/react-native + +
+ + +
+
+ ); +} + +function AccordionExample() { + return ( + + + + {({ pressed }) => Is it accessible? {pressed ? 'pressed' : 'not pressed'}} + + + Yes. It adheres to the WAI-ARIA design pattern. + + + + + What are universal components? + + + + In the world of React Native, universal components are components that work on both web + and native platforms. + + + + + + Is this component universal? + + + Yes. Try it out on the web, iOS, and/or Android. + + + + ); +} diff --git a/apps/vite-tanstack-router/src/styles.css b/apps/vite-tanstack-router/src/styles.css new file mode 100644 index 00000000..862c5290 --- /dev/null +++ b/apps/vite-tanstack-router/src/styles.css @@ -0,0 +1,69 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + --ring: 240 5.9% 10%; + --radius: 0.5rem; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + } + + .dark { + --background: 240 10% 3.9%; + --foreground: 0 0% 98%; + --card: 240 10% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 240 10% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + --accent: 240 3.7% 15.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + --ring: 240 4.9% 83.9%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + } +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/apps/vite-tanstack-router/tailwind.config.js b/apps/vite-tanstack-router/tailwind.config.js new file mode 100644 index 00000000..30694049 --- /dev/null +++ b/apps/vite-tanstack-router/tailwind.config.js @@ -0,0 +1,60 @@ +const config = { + darkMode: 'class', + content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'], + important: 'html', + theme: { + extend: { + colors: { + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))', + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))', + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))', + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))', + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))', + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))', + }, + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))', + }, + }, + keyframes: { + 'accordion-down': { + from: { height: '0' }, + to: { height: 'var(--radix-accordion-content-height)' }, + }, + 'accordion-up': { + from: { height: 'var(--radix-accordion-content-height)' }, + to: { height: '0' }, + }, + }, + animation: { + 'accordion-down': 'accordion-down 0.2s ease-out', + 'accordion-up': 'accordion-up 0.2s ease-out', + }, + }, + }, + plugins: [require('tailwindcss-animate')], +}; +export default config; diff --git a/apps/vite-tanstack-router/tsconfig.json b/apps/vite-tanstack-router/tsconfig.json new file mode 100644 index 00000000..fcac0148 --- /dev/null +++ b/apps/vite-tanstack-router/tsconfig.json @@ -0,0 +1,36 @@ +{ + "include": [ + "**/*.ts", + "**/*.tsx" + ], + "compilerOptions": { + "target": "ES2022", + "jsx": "react-jsx", + "module": "ESNext", + "lib": [ + "ES2022", + "DOM", + "DOM.Iterable" + ], + "types": [ + "vite/client" + ], + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + "skipLibCheck": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + } + }, + "extends": "expo/tsconfig.base" +} \ No newline at end of file diff --git a/apps/vite-tanstack-router/vite.config.js b/apps/vite-tanstack-router/vite.config.js new file mode 100644 index 00000000..55bf27df --- /dev/null +++ b/apps/vite-tanstack-router/vite.config.js @@ -0,0 +1,48 @@ +import viteReact from '@vitejs/plugin-react'; +import esbuild from 'esbuild'; +import { defineConfig } from 'vite'; + +import { TanStackRouterVite } from '@tanstack/router-plugin/vite'; +import { resolve } from 'node:path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + { + name: 'treat-mjs-js-as-jsx', + async transform(code, id) { + if (id.endsWith('.mjs') || id.endsWith('.js')) { + const result = await esbuild.transform(code, { + loader: 'jsx', + jsx: 'automatic', + }); + return { + code: result.code, + map: result.map, + }; + } + return null; + }, + }, + TanStackRouterVite({ autoCodeSplitting: true }), + viteReact(), + ], + test: { + globals: true, + environment: 'jsdom', + }, + optimizeDeps: { + esbuildOptions: { + loader: { + '.js': 'jsx', + '.mjs': 'jsx', + }, + }, + }, + resolve: { + extensions: ['.web.mjs', '.mjs', '.web.js', '.js', '.jsx', '.ts', '.tsx'], + alias: { + '@': resolve(__dirname, './src'), + }, + }, +}); diff --git a/packages/slot/src/slot.web.ts b/packages/slot/src/slot.web.ts index 8b997d3e..0f8e608a 100644 --- a/packages/slot/src/slot.web.ts +++ b/packages/slot/src/slot.web.ts @@ -4,4 +4,14 @@ const Slot = Root as ( props: React.ComponentProps ) => React.JSX.Element | null; +const Text = Slot; + +const Pressable = Slot; + +const View = Slot; + +const Image = Slot; + export { Slot }; + +export { Text, Pressable, View, Image }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d248bb61..169b8891 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,22 +22,22 @@ importers: dependencies: '@astrojs/check': specifier: ^0.9.4 - version: 0.9.4(typescript@5.8.2) + version: 0.9.4(prettier@3.5.3)(typescript@5.8.2) '@astrojs/react': specifier: ^4.2.1 - version: 4.2.1(@types/node@20.17.24)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(yaml@2.7.0) + version: 4.2.1(@types/node@20.17.24)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) '@astrojs/starlight': specifier: ^0.32.2 - version: 0.32.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0)) + version: 0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) '@astrojs/starlight-tailwind': specifier: ^3.0.0 - version: 3.0.0(@astrojs/starlight@0.32.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0)))(@astrojs/tailwind@6.0.0(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17))(tailwindcss@3.4.17) + version: 3.0.0(@astrojs/starlight@0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)))(@astrojs/tailwind@6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17))(tailwindcss@3.4.17) '@astrojs/tailwind': specifier: ^6.0.0 - version: 6.0.0(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17) + version: 6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17) '@astrojs/vercel': specifier: ^8.1.2 - version: 8.1.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))(next@15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.36.0) + version: 8.1.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.36.0) '@radix-ui/react-collapsible': specifier: ^1.1.0 version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -151,10 +151,10 @@ importers: version: 19.0.4(@types/react@19.0.10) '@vercel/analytics': specifier: ^1.3.1 - version: 1.5.0(next@15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + version: 1.5.0(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) astro: specifier: ^5.5.2 - version: 5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0) + version: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -162,8 +162,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 lucide-react: - specifier: ^0.334.0 - version: 0.334.0(react@19.0.0) + specifier: ^0.476.0 + version: 0.476.0(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -687,7 +687,7 @@ importers: specifier: ^8 version: 8.5.3 tailwindcss: - specifier: ^3.4.1 + specifier: ^3.4.13 version: 3.4.17 typescript: specifier: ^5 @@ -748,12 +748,106 @@ importers: specifier: ^8 version: 8.5.3 tailwindcss: - specifier: ^3.4.1 + specifier: ^3.4.13 version: 3.4.17 typescript: specifier: ^5 version: 5.8.2 + apps/vite-tanstack-router: + dependencies: + '@rn-primitives/accordion': + specifier: workspace:* + version: link:../../packages/accordion + '@rn-primitives/core': + specifier: workspace:* + version: link:../../packages/core + '@rn-primitives/slot': + specifier: workspace:* + version: link:../../packages/slot + '@rn-primitives/types': + specifier: workspace:* + version: link:../../packages/types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../../packages/utils + '@tanstack/react-router': + specifier: ^1.114.3 + version: 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/react-router-devtools': + specifier: ^1.114.3 + version: 1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tiny-invariant@1.3.3) + '@tanstack/router-plugin': + specifier: ^1.114.3 + version: 1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + lucide-react: + specifier: ^0.476.0 + version: 0.476.0(react@19.0.0) + react: + specifier: 19.0.0 + version: 19.0.0 + react-dom: + specifier: 19.0.0 + version: 19.0.0(react@19.0.0) + tailwind-merge: + specifier: ^3.0.2 + version: 3.0.2 + tailwindcss: + specifier: ^3.4.13 + version: 3.4.17 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.17) + devDependencies: + '@testing-library/dom': + specifier: ^10.4.0 + version: 10.4.0 + '@testing-library/react': + specifier: ^16.2.0 + version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@types/react': + specifier: ^19.0.10 + version: 19.0.10 + '@types/react-dom': + specifier: ^19.0.4 + version: 19.0.4(@types/react@19.0.10) + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.3) + esbuild: + specifier: ^0.25.1 + version: 0.25.1 + jsdom: + specifier: ^26.0.0 + version: 26.0.0 + postcss: + specifier: ^8 + version: 8.5.3 + typescript: + specifier: ^5.3.3 + version: 5.8.2 + vite: + specifier: ^6.1.0 + version: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vite-plugin-react-native-web: + specifier: ^2.1.1 + version: 2.1.1 + vitest: + specifier: ^3.0.5 + version: 3.0.9(@types/debug@4.1.12)(@types/node@20.17.24)(jiti@1.21.7)(jsdom@26.0.0)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + web-vitals: + specifier: ^4.2.4 + version: 4.2.4 + packages/accordion: dependencies: '@radix-ui/react-accordion': @@ -792,7 +886,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/alert-dialog: dependencies: @@ -832,7 +926,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/aspect-ratio: dependencies: @@ -860,7 +954,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/avatar: dependencies: @@ -891,7 +985,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/checkbox: dependencies: @@ -925,7 +1019,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/collapsible: dependencies: @@ -959,7 +1053,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/context-menu: dependencies: @@ -999,7 +1093,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/core: dependencies: @@ -1036,7 +1130,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/dialog: dependencies: @@ -1073,7 +1167,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/dropdown-menu: dependencies: @@ -1113,7 +1207,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/hooks: dependencies: @@ -1138,7 +1232,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/hover-card: dependencies: @@ -1178,7 +1272,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/label: dependencies: @@ -1209,7 +1303,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/menubar: dependencies: @@ -1249,7 +1343,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/navigation-menu: dependencies: @@ -1289,7 +1383,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/popover: dependencies: @@ -1326,7 +1420,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/portal: dependencies: @@ -1351,7 +1445,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/progress: dependencies: @@ -1382,7 +1476,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/radio-group: dependencies: @@ -1413,7 +1507,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/select: dependencies: @@ -1450,7 +1544,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/separator: dependencies: @@ -1481,7 +1575,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/slider: dependencies: @@ -1512,7 +1606,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/slot: dependencies: @@ -1537,7 +1631,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/switch: dependencies: @@ -1568,7 +1662,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/table: dependencies: @@ -1596,7 +1690,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/tabs: dependencies: @@ -1627,7 +1721,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/toast: dependencies: @@ -1655,7 +1749,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/toggle: dependencies: @@ -1686,7 +1780,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/toggle-group: dependencies: @@ -1720,7 +1814,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/toolbar: dependencies: @@ -1754,7 +1848,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/tooltip: dependencies: @@ -1791,7 +1885,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/types: dependencies: @@ -1813,7 +1907,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages/utils: devDependencies: @@ -1831,7 +1925,7 @@ importers: version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) packages: @@ -1851,6 +1945,9 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@asamuzakjp/css-color@3.1.1': + resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} + '@astrojs/check@0.9.4': resolution: {integrity: sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==} hasBin: true @@ -1875,11 +1972,11 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@6.3.0': - resolution: {integrity: sha512-imInEojAbpeV9D/SRaSQBz3yUzvtg3UQC1euX70QHVf8X0kWAIAArmzBbgXl8LlyxSFe52f/++PXQ4t14V9b+A==} + '@astrojs/markdown-remark@6.3.1': + resolution: {integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==} - '@astrojs/mdx@4.2.0': - resolution: {integrity: sha512-MHiogYeb7XdzbqUktoMsrziph1vK10WfLgwDJVejGOieEsJ1eOUtNtQCl2vv85tnr/+IGBqZ0bOf6ydQGgJMYA==} + '@astrojs/mdx@4.2.1': + resolution: {integrity: sha512-huVIR6YNtdJ233swDwj4RWCjhpUtz8wTLybPPZi5tdBFxwahMRYcGtGVEHjyUE9z+Je2LUVgQTzrPgvJi53oOQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -1897,8 +1994,8 @@ packages: react: 19.0.0 react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0 - '@astrojs/sitemap@3.2.1': - resolution: {integrity: sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==} + '@astrojs/sitemap@3.3.0': + resolution: {integrity: sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==} '@astrojs/starlight-tailwind@3.0.0': resolution: {integrity: sha512-oYHG9RY+VaOSeAhheVZfm9HDA892qvcQA82VT86POYmg1OsgBuWwdf1ZbofV8iq/z5kO06ajcSdzhPE8lhEx8g==} @@ -1907,8 +2004,8 @@ packages: '@astrojs/tailwind': ^5.1.3 tailwindcss: ^3.3.3 - '@astrojs/starlight@0.32.2': - resolution: {integrity: sha512-FLz8Y8R+GsD0jD/G64bYijwwVsAq99Ugk2bJYRmH2k1reYMh83GRma2IaKGgSI2fLNEu7tdyG4cpkwrwP3W02A==} + '@astrojs/starlight@0.32.3': + resolution: {integrity: sha512-oss5RxvCpuO1FSQyTC0vti5FOjRY0fHiJbGLYbnRsBNVfTzRMKRYMTfNwiduZuVNXML7zhV6QLCFjYpHt0PKuw==} peerDependencies: astro: ^5.1.5 @@ -2620,6 +2717,34 @@ packages: resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} engines: {node: '>=6.9.0'} + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.2': + resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.8': + resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + '@ctrl/tinycolor@4.1.0': resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==} engines: {node: '>=14'} @@ -3979,21 +4104,39 @@ packages: '@shikijs/core@1.29.2': resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} + '@shikijs/core@3.2.1': + resolution: {integrity: sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==} + '@shikijs/engine-javascript@1.29.2': resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} + '@shikijs/engine-javascript@3.2.1': + resolution: {integrity: sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==} + '@shikijs/engine-oniguruma@1.29.2': resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} + '@shikijs/engine-oniguruma@3.2.1': + resolution: {integrity: sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==} + '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} + '@shikijs/langs@3.2.1': + resolution: {integrity: sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==} + '@shikijs/themes@1.29.2': resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} + '@shikijs/themes@3.2.1': + resolution: {integrity: sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==} + '@shikijs/types@1.29.2': resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} + '@shikijs/types@3.2.1': + resolution: {integrity: sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==} + '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -4012,12 +4155,116 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tanstack/history@1.114.22': + resolution: {integrity: sha512-CNwKraj/Xa8H7DUyzrFBQC3wL96JzIxT4i9CW0hxqFNNmLDyUcMJr8264iqqfxC0u1lFSG96URad08T2Qhadpw==} + engines: {node: '>=12'} + + '@tanstack/react-router-devtools@1.114.25': + resolution: {integrity: sha512-55W9Wde0D7ZW1FNa9aepk2xo0wPugWquF3fC6pVMALq4gVNP9QufNBc+TMX6TiErffGtGrJzPkkYJOkF6ZUGVg==} + engines: {node: '>=12'} + peerDependencies: + '@tanstack/react-router': ^1.114.25 + react: 19.0.0 + react-dom: '>=18.0.0 || >=19.0.0' + + '@tanstack/react-router@1.114.25': + resolution: {integrity: sha512-4vls9pz+AOLIeTLZWUKK5ZqENc1azuSQ/UATNzZChckZqkMqtEoUci0dgp1XVAX+ocPH9bU1WP+/eonuyaLvdA==} + engines: {node: '>=12'} + peerDependencies: + react: 19.0.0 + react-dom: '>=18.0.0 || >=19.0.0' + + '@tanstack/react-store@0.7.0': + resolution: {integrity: sha512-S/Rq17HaGOk+tQHV/yrePMnG1xbsKZIl/VsNWnNXt4XW+tTY8dTlvpJH2ZQ3GRALsusG5K6Q3unAGJ2pd9W/Ng==} + peerDependencies: + react: 19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/router-core@1.114.25': + resolution: {integrity: sha512-OyLCfs7r+0LEhmQGAdyJxfO+pqGBITlr4aUN0rdhXqDTpqBn0tyrO6Tu+U9B3LQF9Xnux3KqbjzRopTY9QZBog==} + engines: {node: '>=12'} + + '@tanstack/router-devtools-core@1.114.25': + resolution: {integrity: sha512-3KFAAytAV6nWcXLTe3nWNaiRPV8AyM3jx5aa2UpB+RLDgDbO+GkVMnv3C7fnGCM6j2nw2/1boAvTvHcoKKO5UA==} + engines: {node: '>=12'} + peerDependencies: + '@tanstack/router-core': ^1.114.25 + csstype: ^3.0.10 + solid-js: '>=1.9.5' + tiny-invariant: ^1.3.3 + peerDependenciesMeta: + csstype: + optional: true + + '@tanstack/router-generator@1.114.25': + resolution: {integrity: sha512-KfPdXm9+zGPrEjcdDkkSbZpDvx8rOSD9sS0cQn6y82jqoSeHlzC0K3bSVElsAmS1uh7WXR+PNDJra+nHUdPhaQ==} + engines: {node: '>=12'} + peerDependencies: + '@tanstack/react-router': ^1.114.25 + peerDependenciesMeta: + '@tanstack/react-router': + optional: true + + '@tanstack/router-plugin@1.114.25': + resolution: {integrity: sha512-4SIvBzgX6TzwgW5OO6Knx4/vX8AocXnfQhXW7dzsNBgzt5WnI4dzoPvp6p9p+Hqo0AjJ2WndpEYq7fMl5BhA4Q==} + engines: {node: '>=12'} + peerDependencies: + '@rsbuild/core': '>=1.0.2' + '@tanstack/react-router': ^1.114.25 + vite: '>=5.0.0 || >=6.0.0' + vite-plugin-solid: ^2.11.2 + webpack: '>=5.92.0' + peerDependenciesMeta: + '@rsbuild/core': + optional: true + '@tanstack/react-router': + optional: true + vite: + optional: true + vite-plugin-solid: + optional: true + webpack: + optional: true + + '@tanstack/router-utils@1.114.12': + resolution: {integrity: sha512-W4tltvM9FQuDEJejz/JJD3q/pVHBXBb8VmA77pZlj4IBW97RnUNy8CUwZUgSYcb9OReoO4i/VjjQCUq9ZdiDmg==} + engines: {node: '>=12'} + + '@tanstack/store@0.7.0': + resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==} + + '@tanstack/virtual-file-routes@1.114.12': + resolution: {integrity: sha512-aR13V1kSE/kUkP4a8snmqvj82OUlR5Q/rzxICmObLCsERGfzikUc4wquOy1d/RzJgsLb8o+FiOjSWynt4T7Jhg==} + engines: {node: '>=12'} + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/react@16.2.0': + resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: 19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@tsconfig/react-native@1.0.5': resolution: {integrity: sha512-hRGn7FKJQD5dCKaXm7xL0zMEYZvCw+lpGlnOYGtixQygPYnH8h6Vn8zaam0n2nxE2PkUMoJU852MO7ckc4JTpg==} '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -4164,6 +4411,35 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + '@vitest/expect@3.0.9': + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} + + '@vitest/mocker@3.0.9': + resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.0.9': + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + + '@vitest/runner@3.0.9': + resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} + + '@vitest/snapshot@3.0.9': + resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} + + '@vitest/spy@3.0.9': + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} + + '@vitest/utils@3.0.9': + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + '@volar/kit@2.4.12': resolution: {integrity: sha512-f9JE8oy9C2rBcCWxUYKUF23hOXz4mwgVXFjk7nHhxzplaoVjEOsKpBm8NI2nBH7Cwu8DRxDwBsbIxMl/8wlLxw==} peerDependencies: @@ -4282,6 +4558,10 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -4305,6 +4585,9 @@ packages: resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -4318,6 +4601,10 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -4331,8 +4618,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.5.2: - resolution: {integrity: sha512-SOTJxB8mqxe/KEYEJiLIot0YULiCffyfTEclwmdeaASitDJ7eLM/KYrJ9sx3U5hq9GVI17Z4Y0P/1T2aQ0ZN3A==} + astro@5.5.3: + resolution: {integrity: sha512-FvqIo5jkunP5R6FkY5vuFYElTOqjnazuiN0x/yf1F+nvedsGDemm5K7mS6RTmFVB291mE9WWn1AbuJsFWEcHgg==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -4342,6 +4629,9 @@ packages: async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -4356,6 +4646,9 @@ packages: b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + babel-dead-code-elimination@1.0.9: + resolution: {integrity: sha512-JLIhax/xullfInZjtu13UJjaLHDeTzt3vOeomaSUdO/nAMEL/pWC/laKrSvWylXMnVWyL5bpmG9njqBZlUQOdg==} + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4537,6 +4830,10 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} engines: {node: '>=4'} @@ -4565,12 +4862,16 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001705: - resolution: {integrity: sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg==} + caniuse-lite@1.0.30001706: + resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.2.0: + resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + engines: {node: '>=12'} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -4595,6 +4896,10 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -4686,6 +4991,10 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -4732,8 +5041,8 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} convert-source-map@2.0.0: @@ -4792,9 +5101,17 @@ packages: engines: {node: '>=4'} hasBin: true + cssstyle@4.3.0: + resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} + engines: {node: '>=18'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4820,6 +5137,9 @@ packages: supports-color: optional: true + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decode-named-character-reference@1.1.0: resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} @@ -4831,6 +5151,10 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -4853,6 +5177,10 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -4897,6 +5225,10 @@ packages: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} + engines: {node: '>=0.3.1'} + direction@2.0.1: resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} hasBin: true @@ -4904,6 +5236,9 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} @@ -4929,14 +5264,18 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.119: - resolution: {integrity: sha512-Ku4NMzUjz3e3Vweh7PhApPrZSS4fyiCIbcIrG9eKrriYVLmbMepETR/v6SU7xPm98QTqMSYiCwfO89QNjXLkbQ==} + electron-to-chromium@1.5.120: + resolution: {integrity: sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==} emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} @@ -4981,9 +5320,25 @@ packages: error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -5073,6 +5428,10 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + expect-type@1.2.0: + resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} + engines: {node: '>=12.0.0'} + expo-asset@12.0.0-canary-20250306-d9d3e02: resolution: {integrity: sha512-gOXnvbC5cr8jVeicZ51BAWR/Lfm5W+qCP89Di2VTPCDpmfKoIm2sepxnNcSWp4BmhWAVjDPewUsJYTvc2RqgCQ==} peerDependencies: @@ -5270,10 +5629,15 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.265.2: - resolution: {integrity: sha512-DX2mp5u3lNJHl5dH8R1KrcrDsiJC02zFcG95p4b0YcDCzZZW+v9za2Csv5bQ0cq4jNzGx0gFU9jFZyM7FOyNFw==} + flow-parser@0.265.3: + resolution: {integrity: sha512-YH50TTYgnzDnuaZlAxLYQ0UZtXSbbizMO3OCpoY8obvLReJmvQ5UUW22efsC3SZJmze/tATfQ0PtkKul2XwWBw==} engines: {node: '>=0.4.0'} + flow-remove-types@2.265.3: + resolution: {integrity: sha512-u3rr9waOGI00b/93lG8TfOdCrpqwQRK+YUtnwPPVxOSk+mc2ZXZfZdmx4zxGjdfBhgqc7gbAbUxDCtFciGe99g==} + engines: {node: '>=4'} + hasBin: true + fontfaceobserver@2.3.0: resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} @@ -5281,6 +5645,10 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -5318,6 +5686,10 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -5330,10 +5702,17 @@ packages: resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} engines: {node: '>=4'} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + getenv@1.0.0: resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} engines: {node: '>=6'} @@ -5364,6 +5743,15 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + goober@2.1.16: + resolution: {integrity: sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==} + peerDependencies: + csstype: ^3.0.10 + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -5382,6 +5770,14 @@ packages: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} engines: {node: '>=8'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -5456,6 +5852,10 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} @@ -5472,6 +5872,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -5486,6 +5890,10 @@ packages: i18next@23.16.8: resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -5608,6 +6016,9 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -5709,6 +6120,15 @@ packages: '@babel/preset-env': optional: true + jsdom@26.0.0: + resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -5936,6 +6356,9 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + loupe@3.1.3: + resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -5949,11 +6372,15 @@ packages: react-native: '*' react-native-svg: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 - lucide-react@0.334.0: - resolution: {integrity: sha512-y0Rv/Xx6qAq4FutZ3L/efl3O9vl6NC/1p0YOg6mBfRbQ4k1JCE2rz0rnV7WC8Moxq1RY99vLATvjcqUegGJTvA==} + lucide-react@0.476.0: + resolution: {integrity: sha512-x6cLTk8gahdUPje0hSgLN1/MgiJH+Xl90Xoxy9bkPAsMPOUiyRSKR4JCDPGVCEpyqnZXH3exFWNItcvra9WzUQ==} peerDependencies: react: 19.0.0 + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -5977,6 +6404,10 @@ packages: marky@1.2.5: resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} @@ -6225,8 +6656,8 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} mime-types@2.1.35: @@ -6301,8 +6732,8 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.10: - resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -6395,6 +6826,10 @@ packages: node-mock-http@1.0.0: resolution: {integrity: sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==} + node-modules-regexp@1.0.0: + resolution: {integrity: sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ==} + engines: {node: '>=0.10.0'} + node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} @@ -6425,6 +6860,9 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + nwsapi@2.2.19: + resolution: {integrity: sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==} + ob1@0.81.3: resolution: {integrity: sha512-wd8zdH0DWsn2iDVn2zT/QURihcqoc73K8FhNCmQ16qkJaoYJLNb/N+huOwdCgsbNP8Lk/s1+dPnDETx+RzsrWA==} engines: {node: '>=18.18'} @@ -6463,9 +6901,15 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + oniguruma-parser@0.5.4: + resolution: {integrity: sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==} + oniguruma-to-es@2.3.0: resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} + oniguruma-to-es@4.1.0: + resolution: {integrity: sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==} + open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} engines: {node: '>=8'} @@ -6584,6 +7028,13 @@ packages: path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -6607,6 +7058,10 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + pirates@3.0.2: + resolution: {integrity: sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==} + engines: {node: '>= 4'} + pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -6700,10 +7155,19 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + pretty-bytes@5.6.0: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6797,6 +7261,9 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -6960,12 +7427,18 @@ packages: regex-recursion@5.1.1: resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} regex@5.1.1: resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexpu-core@6.2.0: resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} engines: {node: '>=4'} @@ -7050,6 +7523,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-workspace-root@2.0.0: resolution: {integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==} @@ -7099,15 +7575,25 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + scheduler@0.25.0: resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} @@ -7149,6 +7635,16 @@ packages: resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} engines: {node: '>=0.10.0'} + seroval-plugins@1.2.1: + resolution: {integrity: sha512-H5vs53+39+x4Udwp4J5rNZfgFuA+Lt+uU+09w1gYBVWomtAl98B+E9w7yC05Xc81/HgLvJdlyqJbU0fJCKCmdw==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.2.1: + resolution: {integrity: sha512-yBxFFs3zmkvKNmR0pFSU//rIsYjuX418TnlDmc2weaq5XFDqDIV/NOMPBoLrbxjLH42p4UzRuXHryXh9dYcKcw==} + engines: {node: '>=10'} + serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -7192,6 +7688,12 @@ packages: shiki@1.29.2: resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} + shiki@3.2.1: + resolution: {integrity: sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -7231,6 +7733,9 @@ packages: resolution: {integrity: sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==} engines: {node: '>= 18'} + solid-js@1.9.5: + resolution: {integrity: sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -7268,6 +7773,9 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -7283,6 +7791,9 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + std-env@3.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + stream-buffers@2.2.0: resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} engines: {node: '>= 0.10.0'} @@ -7393,6 +7904,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + tailwind-merge@3.0.2: resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} @@ -7456,6 +7970,12 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} @@ -7463,6 +7983,25 @@ packages: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + tldts-core@6.1.84: + resolution: {integrity: sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==} + + tldts@6.1.84: + resolution: {integrity: sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==} + hasBin: true + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -7482,12 +8021,20 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@5.1.0: + resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} + engines: {node: '>=18'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -7533,6 +8080,11 @@ packages: typescript: optional: true + tsx@4.19.3: + resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} + engines: {node: '>=18.0.0'} + hasBin: true + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -7678,6 +8230,10 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unplugin@2.2.0: + resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==} + engines: {node: '>=18.12.0'} + unstorage@1.15.0: resolution: {integrity: sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==} peerDependencies: @@ -7804,6 +8360,15 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite-node@3.0.9: + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite-plugin-react-native-web@2.1.1: + resolution: {integrity: sha512-1Dsuf/p2muYwAqjyDC3LpcO8gTI+Ab2SjUZA7GzlMq1ZMnypUGQyFslIHJ7v3kpz30CLJFfPu2eqTDXDcRfGqQ==} + engines: {node: '>=14.0.0'} + vite@6.2.2: resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -7852,6 +8417,37 @@ packages: vite: optional: true + vitest@3.0.9: + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vlq@0.2.3: + resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} + vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} @@ -7961,6 +8557,10 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -7977,6 +8577,9 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} + web-vitals@4.2.4: + resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -7987,13 +8590,32 @@ packages: resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} engines: {node: '>=8'} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + whatwg-url-without-unicode@8.0.0-3: resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} engines: {node: '>=10'} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -8009,6 +8631,11 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + widest-line@5.0.0: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} @@ -8081,6 +8708,10 @@ packages: resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} engines: {node: '>=10.0.0'} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + xml2js@0.6.0: resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} engines: {node: '>=4.0.0'} @@ -8093,6 +8724,9 @@ packages: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + xxhash-wasm@1.1.0: resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} @@ -8190,9 +8824,17 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@astrojs/check@0.9.4(typescript@5.8.2)': + '@asamuzakjp/css-color@3.1.1': dependencies: - '@astrojs/language-server': 2.15.4(typescript@5.8.2) + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + lru-cache: 10.4.3 + + '@astrojs/check@0.9.4(prettier@3.5.3)(typescript@5.8.2)': + dependencies: + '@astrojs/language-server': 2.15.4(prettier@3.5.3)(typescript@5.8.2) chokidar: 4.0.3 kleur: 4.1.5 typescript: 5.8.2 @@ -8205,7 +8847,7 @@ snapshots: '@astrojs/internal-helpers@0.6.1': {} - '@astrojs/language-server@2.15.4(typescript@5.8.2)': + '@astrojs/language-server@2.15.4(prettier@3.5.3)(typescript@5.8.2)': dependencies: '@astrojs/compiler': 2.11.0 '@astrojs/yaml2ts': 0.2.2 @@ -8219,16 +8861,18 @@ snapshots: volar-service-css: 0.0.62(@volar/language-service@2.4.12) volar-service-emmet: 0.0.62(@volar/language-service@2.4.12) volar-service-html: 0.0.62(@volar/language-service@2.4.12) - volar-service-prettier: 0.0.62(@volar/language-service@2.4.12) + volar-service-prettier: 0.0.62(@volar/language-service@2.4.12)(prettier@3.5.3) volar-service-typescript: 0.0.62(@volar/language-service@2.4.12) volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.12) volar-service-yaml: 0.0.62(@volar/language-service@2.4.12) vscode-html-languageservice: 5.3.1 vscode-uri: 3.1.0 + optionalDependencies: + prettier: 3.5.3 transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@6.3.0': + '@astrojs/markdown-remark@6.3.1': dependencies: '@astrojs/internal-helpers': 0.6.1 '@astrojs/prism': 3.2.0 @@ -8244,7 +8888,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.29.2 + shiki: 3.2.1 smol-toml: 1.3.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 @@ -8254,12 +8898,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.2.0(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))': + '@astrojs/mdx@4.2.1(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))': dependencies: - '@astrojs/markdown-remark': 6.3.0 + '@astrojs/markdown-remark': 6.3.1 '@mdx-js/mdx': 3.1.0(acorn@8.14.1) acorn: 8.14.1 - astro: 5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0) + astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -8277,15 +8921,15 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/react@4.2.1(@types/node@20.17.24)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(yaml@2.7.0)': + '@astrojs/react@4.2.1(@types/node@20.17.24)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)': dependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@vitejs/plugin-react': 4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0)) + '@vitejs/plugin-react': 4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) ultrahtml: 1.5.3 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -8300,28 +8944,28 @@ snapshots: - tsx - yaml - '@astrojs/sitemap@3.2.1': + '@astrojs/sitemap@3.3.0': dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 zod: 3.24.2 - '@astrojs/starlight-tailwind@3.0.0(@astrojs/starlight@0.32.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0)))(@astrojs/tailwind@6.0.0(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17))(tailwindcss@3.4.17)': + '@astrojs/starlight-tailwind@3.0.0(@astrojs/starlight@0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)))(@astrojs/tailwind@6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17))(tailwindcss@3.4.17)': dependencies: - '@astrojs/starlight': 0.32.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0)) - '@astrojs/tailwind': 6.0.0(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17) + '@astrojs/starlight': 0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) + '@astrojs/tailwind': 6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17) tailwindcss: 3.4.17 - '@astrojs/starlight@0.32.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))': + '@astrojs/starlight@0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))': dependencies: - '@astrojs/mdx': 4.2.0(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0)) - '@astrojs/sitemap': 3.2.1 + '@astrojs/mdx': 4.2.1(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) + '@astrojs/sitemap': 3.3.0 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0) - astro-expressive-code: 0.40.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0)) + astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + astro-expressive-code: 0.40.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -8343,9 +8987,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/tailwind@6.0.0(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17)': + '@astrojs/tailwind@6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17)': dependencies: - astro: 5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0) + astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) autoprefixer: 10.4.21(postcss@8.5.3) postcss: 8.5.3 postcss-load-config: 4.0.2(postcss@8.5.3) @@ -8365,14 +9009,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vercel@8.1.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0))(next@15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.36.0)': + '@astrojs/vercel@8.1.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.36.0)': dependencies: '@astrojs/internal-helpers': 0.6.1 - '@vercel/analytics': 1.5.0(next@15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + '@vercel/analytics': 1.5.0(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) '@vercel/edge': 1.2.1 '@vercel/nft': 0.29.2(rollup@4.36.0) '@vercel/routing-utils': 5.0.4 - astro: 5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0) + astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) esbuild: 0.25.1 tinyglobby: 0.2.12 transitivePeerDependencies: @@ -9262,6 +9906,26 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + '@ctrl/tinycolor@4.1.0': {} '@emmetio/abbreviation@2.3.3': @@ -9848,7 +10512,7 @@ snapshots: '@mapbox/node-pre-gyp@2.0.0': dependencies: - consola: 3.4.0 + consola: 3.4.2 detect-libc: 2.0.3 https-proxy-agent: 7.0.6 node-fetch: 2.7.0 @@ -10853,30 +11517,61 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 + '@shikijs/core@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + '@shikijs/engine-javascript@1.29.2': dependencies: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 2.3.0 + '@shikijs/engine-javascript@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.1.0 + '@shikijs/engine-oniguruma@1.29.2': dependencies: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/engine-oniguruma@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 + '@shikijs/langs@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/themes@1.29.2': dependencies: '@shikijs/types': 1.29.2 + '@shikijs/themes@3.2.1': + dependencies: + '@shikijs/types': 3.2.1 + '@shikijs/types@1.29.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + '@shikijs/types@3.2.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@10.0.2': {} '@sinclair/typebox@0.27.8': {} @@ -10895,12 +11590,128 @@ snapshots: dependencies: tslib: 2.8.1 + '@tanstack/history@1.114.22': {} + + '@tanstack/react-router-devtools@1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tiny-invariant@1.3.3)': + dependencies: + '@tanstack/react-router': 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/router-devtools-core': 1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + solid-js: 1.9.5 + transitivePeerDependencies: + - '@tanstack/router-core' + - csstype + - tiny-invariant + + '@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@tanstack/history': 1.114.22 + '@tanstack/react-store': 0.7.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/router-core': 1.114.25 + jsesc: 3.1.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + '@tanstack/react-store@0.7.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@tanstack/store': 0.7.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + use-sync-external-store: 1.4.0(react@19.0.0) + + '@tanstack/router-core@1.114.25': + dependencies: + '@tanstack/history': 1.114.22 + '@tanstack/store': 0.7.0 + tiny-invariant: 1.3.3 + + '@tanstack/router-devtools-core@1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + dependencies: + '@tanstack/router-core': 1.114.25 + clsx: 2.1.1 + goober: 2.1.16(csstype@3.1.3) + solid-js: 1.9.5 + tiny-invariant: 1.3.3 + optionalDependencies: + csstype: 3.1.3 + + '@tanstack/router-generator@1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': + dependencies: + '@tanstack/virtual-file-routes': 1.114.12 + prettier: 3.5.3 + tsx: 4.19.3 + zod: 3.24.2 + optionalDependencies: + '@tanstack/react-router': 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + + '@tanstack/router-plugin@1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + '@babel/template': 7.26.9 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + '@tanstack/router-core': 1.114.25 + '@tanstack/router-generator': 1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + '@tanstack/router-utils': 1.114.12 + '@tanstack/virtual-file-routes': 1.114.12 + '@types/babel__core': 7.20.5 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + babel-dead-code-elimination: 1.0.9 + chokidar: 3.6.0 + unplugin: 2.2.0 + zod: 3.24.2 + optionalDependencies: + '@tanstack/react-router': 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + transitivePeerDependencies: + - supports-color + + '@tanstack/router-utils@1.114.12': + dependencies: + '@babel/generator': 7.26.10 + '@babel/parser': 7.26.10 + ansis: 3.17.0 + diff: 7.0.0 + + '@tanstack/store@0.7.0': {} + + '@tanstack/virtual-file-routes@1.114.12': {} + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.26.10 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.10 + '@testing-library/dom': 10.4.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@tsconfig/react-native@1.0.5': {} '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.6 + '@types/aria-query@5.0.4': {} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.26.10 @@ -11016,7 +11827,7 @@ snapshots: '@urql/core': 5.1.1 wonka: 6.3.5 - '@vercel/analytics@1.5.0(next@15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': + '@vercel/analytics@1.5.0(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': optionalDependencies: next: 15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 @@ -11049,17 +11860,57 @@ snapshots: optionalDependencies: ajv: 6.12.6 - '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) transitivePeerDependencies: - supports-color + '@vitest/expect@3.0.9': + dependencies: + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.0.9(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': + dependencies: + '@vitest/spy': 3.0.9 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + + '@vitest/pretty-format@3.0.9': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.0.9': + dependencies: + '@vitest/utils': 3.0.9 + pathe: 2.0.3 + + '@vitest/snapshot@3.0.9': + dependencies: + '@vitest/pretty-format': 3.0.9 + magic-string: 0.30.17 + pathe: 2.0.3 + + '@vitest/spy@3.0.9': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@3.0.9': + dependencies: + '@vitest/pretty-format': 3.0.9 + loupe: 3.1.3 + tinyrainbow: 2.0.0 + '@volar/kit@2.4.12(typescript@5.8.2)': dependencies: '@volar/language-service': 2.4.12 @@ -11187,6 +12038,8 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.17.0: {} + any-promise@1.3.0: {} anymatch@3.1.3: @@ -11208,6 +12061,10 @@ snapshots: dependencies: tslib: 2.8.1 + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + aria-query@5.3.2: {} array-iterate@2.0.1: {} @@ -11216,22 +12073,24 @@ snapshots: asap@2.0.6: {} + assertion-error@2.0.1: {} + ast-types@0.16.1: dependencies: tslib: 2.8.1 astring@1.9.0: {} - astro-expressive-code@0.40.2(astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0)): + astro-expressive-code@0.40.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)): dependencies: - astro: 5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0) + astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) rehype-expressive-code: 0.40.2 - astro@5.5.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(typescript@5.8.2)(yaml@2.7.0): + astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0): dependencies: '@astrojs/compiler': 2.11.0 '@astrojs/internal-helpers': 0.6.1 - '@astrojs/markdown-remark': 6.3.0 + '@astrojs/markdown-remark': 6.3.1 '@astrojs/telemetry': 3.2.0 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.4(rollup@4.36.0) @@ -11271,7 +12130,7 @@ snapshots: prompts: 2.4.2 rehype: 13.0.2 semver: 7.7.1 - shiki: 1.29.2 + shiki: 3.2.1 tinyexec: 0.3.2 tinyglobby: 0.2.12 tsconfck: 3.1.5(typescript@5.8.2) @@ -11279,8 +12138,8 @@ snapshots: unist-util-visit: 5.0.0 unstorage: 1.15.0 vfile: 6.0.3 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0) - vitefu: 1.0.6(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0)) + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vitefu: 1.0.6(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.1 @@ -11327,10 +12186,12 @@ snapshots: async-sema@3.1.1: {} + asynckit@0.4.0: {} + autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001705 + caniuse-lite: 1.0.30001706 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -11341,6 +12202,15 @@ snapshots: b4a@1.6.7: {} + babel-dead-code-elimination@1.0.9: + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.26.10 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + transitivePeerDependencies: + - supports-color + babel-jest@29.7.0(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 @@ -11561,8 +12431,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001705 - electron-to-chromium: 1.5.119 + caniuse-lite: 1.0.30001706 + electron-to-chromium: 1.5.120 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -11590,6 +12460,11 @@ snapshots: cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + caller-callsite@2.0.0: dependencies: callsites: 2.0.0 @@ -11608,10 +12483,18 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001705: {} + caniuse-lite@1.0.30001706: {} ccount@2.0.1: {} + chai@5.2.0: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.3 + pathval: 2.0.0 + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -11633,6 +12516,8 @@ snapshots: character-reference-invalid@2.0.1: {} + check-error@2.1.1: {} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -11733,6 +12618,10 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} command-exists@1.2.9: {} @@ -11759,7 +12648,7 @@ snapshots: compressible@2.0.18: dependencies: - mime-db: 1.53.0 + mime-db: 1.54.0 compression@1.8.0: dependencies: @@ -11784,7 +12673,7 @@ snapshots: transitivePeerDependencies: - supports-color - consola@3.4.0: {} + consola@3.4.2: {} convert-source-map@2.0.0: {} @@ -11846,8 +12735,18 @@ snapshots: cssesc@3.0.0: {} + cssstyle@4.3.0: + dependencies: + '@asamuzakjp/css-color': 3.1.1 + rrweb-cssom: 0.8.0 + csstype@3.1.3: {} + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + debug@2.6.9: dependencies: ms: 2.0.0 @@ -11860,6 +12759,8 @@ snapshots: dependencies: ms: 2.1.3 + decimal.js@10.5.0: {} + decode-named-character-reference@1.1.0: dependencies: character-entities: 2.0.2 @@ -11870,6 +12771,8 @@ snapshots: dependencies: mimic-response: 3.1.0 + deep-eql@5.0.2: {} + deep-extend@0.6.0: {} deepmerge@4.3.1: {} @@ -11886,6 +12789,8 @@ snapshots: defu@6.1.4: {} + delayed-stream@1.0.0: {} + depd@2.0.0: {} dequal@2.0.3: {} @@ -11914,10 +12819,14 @@ snapshots: diff@5.2.0: {} + diff@7.0.0: {} + direction@2.0.1: {} dlv@1.1.3: {} + dom-accessibility-api@0.5.16: {} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -11944,11 +12853,17 @@ snapshots: dset@3.1.4: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + eastasianwidth@0.2.0: {} ee-first@1.1.1: {} - electron-to-chromium@1.5.119: {} + electron-to-chromium@1.5.120: {} emmet@2.4.11: dependencies: @@ -11985,8 +12900,23 @@ snapshots: dependencies: stackframe: 1.3.4 + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + es-module-lexer@1.6.0: {} + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + esast-util-from-estree@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -12102,6 +13032,8 @@ snapshots: expand-template@2.0.3: {} + expect-type@1.2.0: {} + expo-asset@12.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@expo/image-utils': 0.6.6-canary-20250306-d9d3e02 @@ -12366,7 +13298,13 @@ snapshots: flow-enums-runtime@0.0.6: {} - flow-parser@0.265.2: {} + flow-parser@0.265.3: {} + + flow-remove-types@2.265.3: + dependencies: + hermes-parser: 0.25.1 + pirates: 3.0.2 + vlq: 0.2.3 fontfaceobserver@2.3.0: {} @@ -12375,6 +13313,13 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + fraction.js@4.3.7: {} freeport-async@2.0.0: {} @@ -12396,14 +13341,36 @@ snapshots: get-east-asian-width@1.3.0: {} + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} get-package-type@0.1.0: {} get-port@3.2.0: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@6.0.1: {} + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + getenv@1.0.0: {} github-from-package@0.0.0: {} @@ -12438,6 +13405,12 @@ snapshots: globals@11.12.0: {} + goober@2.1.16(csstype@3.1.3): + dependencies: + csstype: 3.1.3 + + gopd@1.2.0: {} + graceful-fs@4.2.11: {} h3@1.15.1: @@ -12458,6 +13431,12 @@ snapshots: has-own-prop@2.0.0: {} + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -12661,6 +13640,10 @@ snapshots: dependencies: lru-cache: 10.4.3 + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + html-escaper@3.0.3: {} html-void-elements@3.0.0: {} @@ -12677,6 +13660,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 @@ -12692,6 +13682,10 @@ snapshots: dependencies: '@babel/runtime': 7.26.10 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} image-size@1.2.0: @@ -12787,6 +13781,8 @@ snapshots: dependencies: isobject: 3.0.1 + is-potential-custom-element-name@1.0.1: {} + is-stream@2.0.1: {} is-wsl@2.2.0: @@ -12922,7 +13918,7 @@ snapshots: '@babel/preset-flow': 7.25.9(@babel/core@7.26.10) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) '@babel/register': 7.25.9(@babel/core@7.26.10) - flow-parser: 0.265.2 + flow-parser: 0.265.3 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -12935,6 +13931,34 @@ snapshots: transitivePeerDependencies: - supports-color + jsdom@26.0.0: + dependencies: + cssstyle: 4.3.0 + data-urls: 5.0.0 + decimal.js: 10.5.0 + form-data: 4.0.2 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.19 + parse5: 7.2.1 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jsesc@3.0.2: {} jsesc@3.1.0: {} @@ -13096,6 +14120,8 @@ snapshots: dependencies: js-tokens: 4.0.0 + loupe@3.1.3: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -13108,10 +14134,12 @@ snapshots: react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) react-native-svg: 15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - lucide-react@0.334.0(react@19.0.0): + lucide-react@0.476.0(react@19.0.0): dependencies: react: 19.0.0 + lz-string@1.5.0: {} + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -13137,6 +14165,8 @@ snapshots: marky@1.2.5: {} + math-intrinsics@1.1.0: {} + mdast-util-definitions@6.0.0: dependencies: '@types/mdast': 4.0.4 @@ -13789,7 +14819,7 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.53.0: {} + mime-db@1.54.0: {} mime-types@2.1.35: dependencies: @@ -13844,7 +14874,7 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.10: {} + nanoid@3.3.11: {} nanoid@3.3.8: {} @@ -13880,7 +14910,7 @@ snapshots: '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001705 + caniuse-lite: 1.0.30001706 postcss: 8.4.31 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -13923,6 +14953,8 @@ snapshots: node-mock-http@1.0.0: {} + node-modules-regexp@1.0.0: {} + node-releases@2.0.19: {} nopt@8.1.0: @@ -13950,6 +14982,8 @@ snapshots: nullthrows@1.1.1: {} + nwsapi@2.2.19: {} + ob1@0.81.3: dependencies: flow-enums-runtime: 0.0.6 @@ -13986,12 +15020,21 @@ snapshots: dependencies: mimic-fn: 2.1.0 + oniguruma-parser@0.5.4: {} + oniguruma-to-es@2.3.0: dependencies: emoji-regex-xs: 1.0.0 regex: 5.1.1 regex-recursion: 5.1.1 + oniguruma-to-es@4.1.0: + dependencies: + emoji-regex-xs: 1.0.0 + oniguruma-parser: 0.5.4 + regex: 6.0.1 + regex-recursion: 6.0.2 + open@7.4.2: dependencies: is-docker: 2.2.1 @@ -14119,6 +15162,10 @@ snapshots: path-to-regexp@6.3.0: {} + pathe@2.0.3: {} + + pathval@2.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -14131,6 +15178,10 @@ snapshots: pify@4.0.1: {} + pirates@3.0.2: + dependencies: + node-modules-regexp: 1.0.0 + pirates@4.0.6: {} pkg-dir@3.0.0: @@ -14164,12 +15215,13 @@ snapshots: optionalDependencies: postcss: 8.5.3 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.3)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.3 + tsx: 4.19.3 yaml: 2.7.0 postcss-nested@6.2.0(postcss@8.5.3): @@ -14186,19 +15238,19 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.10 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 postcss@8.4.49: dependencies: - nanoid: 3.3.10 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 postcss@8.5.3: dependencies: - nanoid: 3.3.10 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -14220,8 +15272,16 @@ snapshots: prettier@2.8.7: optional: true + prettier@3.5.3: {} + pretty-bytes@5.6.0: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -14321,6 +15381,8 @@ snapshots: react-is@16.13.1: {} + react-is@17.0.2: {} + react-is@18.3.1: {} react-native-css-interop@0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): @@ -14563,12 +15625,20 @@ snapshots: regex: 5.1.1 regex-utilities: 2.3.0 + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + regex-utilities@2.3.0: {} regex@5.1.1: dependencies: regex-utilities: 2.3.0 + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + regexpu-core@6.2.0: dependencies: regenerate: 1.4.2 @@ -14703,6 +15773,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve-workspace-root@2.0.0: {} resolve.exports@2.0.3: {} @@ -14782,14 +15854,22 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.36.0 fsevents: 2.3.3 + rrweb-cssom@0.8.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 safe-buffer@5.2.1: {} + safer-buffer@2.1.2: {} + sax@1.4.1: {} + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + scheduler@0.25.0: {} schema-utils@4.3.0: @@ -14850,6 +15930,12 @@ snapshots: serialize-error@2.1.0: {} + seroval-plugins@1.2.1(seroval@1.2.1): + dependencies: + seroval: 1.2.1 + + seroval@1.2.1: {} + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -14930,6 +16016,19 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 + shiki@3.2.1: + dependencies: + '@shikijs/core': 3.2.1 + '@shikijs/engine-javascript': 3.2.1 + '@shikijs/engine-oniguruma': 3.2.1 + '@shikijs/langs': 3.2.1 + '@shikijs/themes': 3.2.1 + '@shikijs/types': 3.2.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -14967,6 +16066,12 @@ snapshots: smol-toml@1.3.1: {} + solid-js@1.9.5: + dependencies: + csstype: 3.1.3 + seroval: 1.2.1 + seroval-plugins: 1.2.1(seroval@1.2.1) + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -14994,6 +16099,8 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 + stackback@0.0.2: {} + stackframe@1.3.4: {} stacktrace-parser@0.1.11: @@ -15004,6 +16111,8 @@ snapshots: statuses@2.0.1: {} + std-env@3.8.1: {} + stream-buffers@2.2.0: {} stream-replace-string@2.0.0: {} @@ -15112,6 +16221,8 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + symbol-tree@3.2.4: {} + tailwind-merge@3.0.2: {} tailwindcss-animate@1.0.7(tailwindcss@3.4.17): @@ -15221,6 +16332,10 @@ snapshots: tiny-invariant@1.3.3: {} + tiny-warning@1.0.3: {} + + tinybench@2.9.0: {} + tinyexec@0.3.2: {} tinyglobby@0.2.12: @@ -15228,6 +16343,18 @@ snapshots: fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 + tinypool@1.0.2: {} + + tinyrainbow@2.0.0: {} + + tinyspy@3.0.2: {} + + tldts-core@6.1.84: {} + + tldts@6.1.84: + dependencies: + tldts-core: 6.1.84 + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -15242,12 +16369,20 @@ snapshots: toidentifier@1.0.1: {} + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.84 + tr46@0.0.3: {} tr46@1.0.1: dependencies: punycode: 2.3.1 + tr46@5.1.0: + dependencies: + punycode: 2.3.1 + tree-kill@1.2.2: {} trim-lines@3.0.1: {} @@ -15262,17 +16397,17 @@ snapshots: tslib@2.8.1: {} - tsup@8.4.0(jiti@1.21.7)(postcss@8.5.3)(typescript@5.8.2)(yaml@2.7.0): + tsup@8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0): dependencies: bundle-require: 5.1.0(esbuild@0.25.1) cac: 6.7.14 chokidar: 4.0.3 - consola: 3.4.0 + consola: 3.4.2 debug: 4.4.0 esbuild: 0.25.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.3)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(yaml@2.7.0) resolve-from: 5.0.0 rollup: 4.36.0 source-map: 0.8.0-beta.0 @@ -15289,6 +16424,13 @@ snapshots: - tsx - yaml + tsx@4.19.3: + dependencies: + esbuild: 0.25.1 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -15423,6 +16565,11 @@ snapshots: unpipe@1.0.0: {} + unplugin@2.2.0: + dependencies: + acorn: 8.14.1 + webpack-virtual-modules: 0.6.2 + unstorage@1.15.0: dependencies: anymatch: 3.1.3 @@ -15493,7 +16640,32 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0): + vite-node@3.0.9(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-plugin-react-native-web@2.1.1: + dependencies: + flow-remove-types: 2.265.3 + + vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): dependencies: esbuild: 0.25.1 postcss: 8.5.3 @@ -15504,11 +16676,54 @@ snapshots: jiti: 1.21.7 lightningcss: 1.29.3 terser: 5.39.0 + tsx: 4.19.3 yaml: 2.7.0 - vitefu@1.0.6(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0)): + vitefu@1.0.6(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)): optionalDependencies: - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.0) + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + + vitest@3.0.9(@types/debug@4.1.12)(@types/node@20.17.24)(jiti@1.21.7)(jsdom@26.0.0)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): + dependencies: + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.9 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.0 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.1 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vite-node: 3.0.9(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 20.17.24 + jsdom: 26.0.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vlq@0.2.3: {} vlq@1.0.1: {} @@ -15537,11 +16752,12 @@ snapshots: optionalDependencies: '@volar/language-service': 2.4.12 - volar-service-prettier@0.0.62(@volar/language-service@2.4.12): + volar-service-prettier@0.0.62(@volar/language-service@2.4.12)(prettier@3.5.3): dependencies: vscode-uri: 3.1.0 optionalDependencies: '@volar/language-service': 2.4.12 + prettier: 3.5.3 volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.12): dependencies: @@ -15621,6 +16837,10 @@ snapshots: vscode-uri@3.1.0: {} + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -15635,20 +16855,37 @@ snapshots: web-streams-polyfill@3.3.3: {} + web-vitals@4.2.4: {} + webidl-conversions@3.0.1: {} webidl-conversions@4.0.2: {} webidl-conversions@5.0.0: {} + webidl-conversions@7.0.0: {} + + webpack-virtual-modules@0.6.2: {} + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-fetch@3.6.20: {} + whatwg-mimetype@4.0.0: {} + whatwg-url-without-unicode@8.0.0-3: dependencies: buffer: 5.7.1 punycode: 2.3.1 webidl-conversions: 5.0.0 + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.0 + webidl-conversions: 7.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -15666,6 +16903,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + widest-line@5.0.0: dependencies: string-width: 7.2.0 @@ -15721,6 +16963,8 @@ snapshots: simple-plist: 1.3.1 uuid: 7.0.3 + xml-name-validator@5.0.0: {} + xml2js@0.6.0: dependencies: sax: 1.4.1 @@ -15730,6 +16974,8 @@ snapshots: xmlbuilder@15.1.1: {} + xmlchars@2.2.0: {} + xxhash-wasm@1.1.0: {} y18n@5.0.8: {} From 106761f1b5aea1b8a1f335da6237881d3f03a535 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 19 Mar 2025 14:56:46 -0400 Subject: [PATCH 054/106] feat: vite build command also working --- apps/vite-tanstack-router/vite.config.js | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/apps/vite-tanstack-router/vite.config.js b/apps/vite-tanstack-router/vite.config.js index 55bf27df..c839c83e 100644 --- a/apps/vite-tanstack-router/vite.config.js +++ b/apps/vite-tanstack-router/vite.config.js @@ -10,6 +10,7 @@ export default defineConfig({ plugins: [ { name: 'treat-mjs-js-as-jsx', + apply: 'serve', async transform(code, id) { if (id.endsWith('.mjs') || id.endsWith('.js')) { const result = await esbuild.transform(code, { @@ -24,6 +25,36 @@ export default defineConfig({ return null; }, }, + { + name: 'treat-mjs-js-as-jsx-build', + apply: 'build', // Only runs in build mode + enforce: 'pre', // Runs before other plugins + async load(id) { + // Ignore virtual modules + if (id.startsWith('\x00')) { + return null; + } + + if (id.endsWith('.mjs') || id.endsWith('.js')) { + const fs = await import('fs/promises'); + try { + const code = await fs.readFile(id, 'utf8'); + const result = await esbuild.transform(code, { + loader: 'jsx', + jsx: 'automatic', + }); + return { + code: result.code, + map: result.map, + }; + } catch (err) { + console.error(`Error processing ${id}:`, err); + return null; + } + } + return null; + }, + }, TanStackRouterVite({ autoCodeSplitting: true }), viteReact(), ], From c8e2baa14d7ae784bffbf2330b7aaae4c8cb7c10 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 19 Mar 2025 17:04:14 -0400 Subject: [PATCH 055/106] feat(accordion): export trigger ref type --- packages/accordion/src/native/index.ts | 9 +++- packages/accordion/src/native/types.ts | 3 ++ .../accordion/src/universal/accordion.tsx | 4 +- .../accordion/src/universal/accordion.web.tsx | 52 ++++++++++++------- packages/accordion/src/universal/index.ts | 9 +++- packages/accordion/src/universal/types.ts | 4 +- packages/accordion/src/web/types.ts | 10 ++-- 7 files changed, 61 insertions(+), 30 deletions(-) diff --git a/packages/accordion/src/native/index.ts b/packages/accordion/src/native/index.ts index e620d9fe..efeb5e04 100644 --- a/packages/accordion/src/native/index.ts +++ b/packages/accordion/src/native/index.ts @@ -8,4 +8,11 @@ export { useRootContext, } from './accordion-native'; -export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; +export type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types'; diff --git a/packages/accordion/src/native/types.ts b/packages/accordion/src/native/types.ts index 3eb02f84..e40ca11d 100644 --- a/packages/accordion/src/native/types.ts +++ b/packages/accordion/src/native/types.ts @@ -23,6 +23,8 @@ type TriggerPropsNativeOnly = PressableProps; type ContentProps = Prettify; type ContentPropsNativeOnly = ViewProps; +type TriggerRef = TriggerProps['ref']; + export type { ContentProps, ContentPropsNativeOnly, @@ -34,4 +36,5 @@ export type { RootPropsNativeOnly, TriggerProps, TriggerPropsNativeOnly, + TriggerRef, }; diff --git a/packages/accordion/src/universal/accordion.tsx b/packages/accordion/src/universal/accordion.tsx index 8fadbb86..c6328505 100644 --- a/packages/accordion/src/universal/accordion.tsx +++ b/packages/accordion/src/universal/accordion.tsx @@ -5,7 +5,7 @@ import { Item as ItemNative, Root as RootNative, Trigger as TriggerNative, - type TriggerProps as TriggerPropsNative, + type TriggerRef as TriggerRefNative, useItemContext, useRootContext, } from '../native'; @@ -28,7 +28,7 @@ function Item({ web: _web, native, ...props }: ItemProps) { } function Trigger({ ref, web: _web, native, ...props }: TriggerProps) { - return ; + return ; } export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion/src/universal/accordion.web.tsx b/packages/accordion/src/universal/accordion.web.tsx index 70ab03b7..2a082e61 100644 --- a/packages/accordion/src/universal/accordion.web.tsx +++ b/packages/accordion/src/universal/accordion.web.tsx @@ -12,35 +12,47 @@ import { import type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; function Root({ native: _native, web, style, ...props }: RootProps) { - return ( - - - - ); + if (style) { + return ( + + + + ); + } + return ; } function Content({ native: _native, style, web, ...props }: ContentProps) { - return ( - - - - ); + if (style) { + return ( + + + + ); + } + return ; } function Header({ native: _native, style, web, ...props }: HeaderProps) { - return ( - - - - ); + if (style) { + return ( + + + + ); + } + return ; } function Item({ native: _native, style, web, ...props }: ItemProps) { - return ( - - - - ); + if (style) { + return ( + + + + ); + } + return ; } function Trigger({ native: _native, web, ...props }: TriggerProps) { diff --git a/packages/accordion/src/universal/index.ts b/packages/accordion/src/universal/index.ts index 3fb8ae56..09726939 100644 --- a/packages/accordion/src/universal/index.ts +++ b/packages/accordion/src/universal/index.ts @@ -1,3 +1,10 @@ export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext } from './accordion'; -export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps } from './types'; +export type { + ContentProps, + HeaderProps, + ItemProps, + RootProps, + TriggerProps, + TriggerRef, +} from './types'; diff --git a/packages/accordion/src/universal/types.ts b/packages/accordion/src/universal/types.ts index cba8ac1f..62f026ad 100644 --- a/packages/accordion/src/universal/types.ts +++ b/packages/accordion/src/universal/types.ts @@ -56,4 +56,6 @@ type TriggerProps = BaseWithPlatformProps< > & PressablePropsUniversal; -export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps }; +type TriggerRef = TriggerProps['ref']; + +export type { ContentProps, HeaderProps, ItemProps, RootProps, TriggerProps, TriggerRef }; diff --git a/packages/accordion/src/web/types.ts b/packages/accordion/src/web/types.ts index 679b4a36..0ee7b075 100644 --- a/packages/accordion/src/web/types.ts +++ b/packages/accordion/src/web/types.ts @@ -12,20 +12,20 @@ type RootProps = React.ComponentProps & { collapsible?: boolean; }; -type RootPropsWebOnly = React.ComponentPropsWithRef<'div'>; +type RootPropsWebOnly = React.ComponentProps<'div'>; type ItemProps = React.ComponentProps; -type ItemPropsWebOnly = React.ComponentPropsWithRef<'div'>; +type ItemPropsWebOnly = React.ComponentProps<'div'>; type HeaderProps = React.ComponentProps; -type HeaderPropsWebOnly = React.ComponentPropsWithRef<'h1'>; +type HeaderPropsWebOnly = React.ComponentProps<'h1'>; -type TriggerPropsWebOnly = React.ComponentPropsWithRef<'button'>; +type TriggerPropsWebOnly = React.ComponentProps<'button'>; type TriggerRef = React.ComponentRef & { press: () => void }; type TriggerProps = Omit, 'ref'> & { ref?: TriggerRef }; type ContentProps = React.ComponentProps; -type ContentPropsWebOnly = React.ComponentPropsWithRef<'div'>; +type ContentPropsWebOnly = React.ComponentProps<'div'>; export type { ContentProps, From 5b6bca38ce1f6ccf1ac838783c2c21c0d7ba53ae Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 26 Mar 2025 11:54:26 -0400 Subject: [PATCH 056/106] chore: add radix-ui aspect-ratio + make react peer version 19+ --- packages/accordion/package.json | 5 ++--- packages/alert-dialog/package.json | 2 +- packages/aspect-ratio/package.json | 3 ++- packages/avatar/package.json | 2 +- packages/checkbox/package.json | 2 +- packages/collapsible/package.json | 2 +- packages/context-menu/package.json | 2 +- packages/core/package.json | 2 +- packages/dialog/package.json | 2 +- packages/dropdown-menu/package.json | 2 +- packages/hooks/package.json | 2 +- packages/hover-card/package.json | 2 +- packages/label/package.json | 2 +- packages/menubar/package.json | 2 +- packages/navigation-menu/package.json | 2 +- packages/popover/package.json | 2 +- packages/portal/package.json | 2 +- packages/progress/package.json | 2 +- packages/radio-group/package.json | 2 +- packages/select/package.json | 2 +- packages/separator/package.json | 2 +- packages/slider/package.json | 2 +- packages/slot/package.json | 2 +- packages/switch/package.json | 2 +- packages/table/package.json | 2 +- packages/tabs/package.json | 2 +- packages/toast/package.json | 2 +- packages/toggle-group/package.json | 2 +- packages/toggle/package.json | 2 +- packages/toolbar/package.json | 2 +- packages/tooltip/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- pnpm-lock.yaml | 31 +++++++++++++++++++++------ 34 files changed, 60 insertions(+), 41 deletions(-) diff --git a/packages/accordion/package.json b/packages/accordion/package.json index c296b123..a754e398 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -53,9 +53,8 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", - "react-native": "*", - "react-native-reanimated": "*" + "react": ">=19.0.0", + "react-native": "*" }, "peerDependenciesMeta": { "react-native": { diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index 17c69f49..2c57202f 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -54,7 +54,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*" }, "peerDependenciesMeta": { diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index a62ea7b7..8505b2e8 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -32,6 +32,7 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { + "@radix-ui/react-aspect-ratio": "^1.1.2", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*" }, @@ -43,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/avatar/package.json b/packages/avatar/package.json index 2dc7840c..438bc2ac 100644 --- a/packages/avatar/package.json +++ b/packages/avatar/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json index 52f18f15..95e8cfd9 100644 --- a/packages/checkbox/package.json +++ b/packages/checkbox/package.json @@ -45,7 +45,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/collapsible/package.json b/packages/collapsible/package.json index b34236d5..e5f0e447 100644 --- a/packages/collapsible/package.json +++ b/packages/collapsible/package.json @@ -45,7 +45,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/context-menu/package.json b/packages/context-menu/package.json index 9b5e4a5e..12ffaeb9 100644 --- a/packages/context-menu/package.json +++ b/packages/context-menu/package.json @@ -48,7 +48,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/core/package.json b/packages/core/package.json index df0c55ae..6bd520e2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -58,7 +58,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-reanimated": "*" }, diff --git a/packages/dialog/package.json b/packages/dialog/package.json index 19ae1e19..ad094267 100644 --- a/packages/dialog/package.json +++ b/packages/dialog/package.json @@ -47,7 +47,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/dropdown-menu/package.json b/packages/dropdown-menu/package.json index 90d95426..af09fd89 100644 --- a/packages/dropdown-menu/package.json +++ b/packages/dropdown-menu/package.json @@ -48,7 +48,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/hooks/package.json b/packages/hooks/package.json index d9bb5f56..462a9bbe 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -36,7 +36,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/hover-card/package.json b/packages/hover-card/package.json index f78b11bd..8d6464de 100644 --- a/packages/hover-card/package.json +++ b/packages/hover-card/package.json @@ -48,7 +48,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/label/package.json b/packages/label/package.json index 6c734057..75954731 100644 --- a/packages/label/package.json +++ b/packages/label/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/menubar/package.json b/packages/menubar/package.json index 6603d705..0ed625a7 100644 --- a/packages/menubar/package.json +++ b/packages/menubar/package.json @@ -48,7 +48,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/navigation-menu/package.json b/packages/navigation-menu/package.json index ec562521..fe96e233 100644 --- a/packages/navigation-menu/package.json +++ b/packages/navigation-menu/package.json @@ -48,7 +48,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/popover/package.json b/packages/popover/package.json index b77776c5..71f229c8 100644 --- a/packages/popover/package.json +++ b/packages/popover/package.json @@ -47,7 +47,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/portal/package.json b/packages/portal/package.json index 5c65d423..e5eaa127 100644 --- a/packages/portal/package.json +++ b/packages/portal/package.json @@ -36,7 +36,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/progress/package.json b/packages/progress/package.json index 9f6e7def..533c3052 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/radio-group/package.json b/packages/radio-group/package.json index 6d8c8007..6e6e8dfc 100644 --- a/packages/radio-group/package.json +++ b/packages/radio-group/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/select/package.json b/packages/select/package.json index 23c7d591..a4c578fd 100644 --- a/packages/select/package.json +++ b/packages/select/package.json @@ -47,7 +47,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/separator/package.json b/packages/separator/package.json index 365a19ca..4b075c8b 100644 --- a/packages/separator/package.json +++ b/packages/separator/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/slider/package.json b/packages/slider/package.json index d346b043..597ecf1c 100644 --- a/packages/slider/package.json +++ b/packages/slider/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/slot/package.json b/packages/slot/package.json index 62e89810..f0522dde 100644 --- a/packages/slot/package.json +++ b/packages/slot/package.json @@ -33,7 +33,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/switch/package.json b/packages/switch/package.json index c12bfe34..5b3858d4 100644 --- a/packages/switch/package.json +++ b/packages/switch/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/table/package.json b/packages/table/package.json index b880632e..77c90e0a 100644 --- a/packages/table/package.json +++ b/packages/table/package.json @@ -43,7 +43,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/tabs/package.json b/packages/tabs/package.json index 235f9915..3ffe79e7 100644 --- a/packages/tabs/package.json +++ b/packages/tabs/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/toast/package.json b/packages/toast/package.json index ee5924fe..c16bb0e0 100644 --- a/packages/toast/package.json +++ b/packages/toast/package.json @@ -43,7 +43,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index eeaee803..b88a3864 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -45,7 +45,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 2041bd6b..1060b228 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -44,7 +44,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/toolbar/package.json b/packages/toolbar/package.json index 7a31b4f6..d00ad0cc 100644 --- a/packages/toolbar/package.json +++ b/packages/toolbar/package.json @@ -45,7 +45,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json index bf890bc4..831fed43 100644 --- a/packages/tooltip/package.json +++ b/packages/tooltip/package.json @@ -47,7 +47,7 @@ }, "peerDependencies": { "@rn-primitives/portal": "*", - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/types/package.json b/packages/types/package.json index a026ceb7..c617b2ec 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -33,7 +33,7 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*", + "react": ">=19.0.0", "react-native": "*", "react-native-web": "*" }, diff --git a/packages/utils/package.json b/packages/utils/package.json index cf280da4..96378ac5 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -33,6 +33,6 @@ "tsup": "^8.1.0" }, "peerDependencies": { - "react": "*" + "react": ">=19.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 169b8891..e8334e5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -823,9 +823,6 @@ importers: autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.3) - esbuild: - specifier: ^0.25.1 - version: 0.25.1 jsdom: specifier: ^26.0.0 version: 26.0.0 @@ -868,9 +865,6 @@ importers: '@rn-primitives/utils': specifier: workspace:* version: link:../utils - react-native-reanimated: - specifier: '*' - version: 3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -930,6 +924,9 @@ importers: packages/aspect-ratio: dependencies: + '@radix-ui/react-aspect-ratio': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -3344,6 +3341,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-aspect-ratio@1.1.2': + resolution: {integrity: sha512-TaJxYoCpxJ7vfEkv2PTNox/6zzmpKXT6ewvCuf2tTOIVN45/Jahhlld29Yw4pciOXS2Xq91/rSGEdmEnUWZCqA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-checkbox@1.1.4': resolution: {integrity: sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==} peerDependencies: @@ -10657,6 +10667,15 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-aspect-ratio@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-checkbox@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 From c890a48b3591a67f28dee1d0c70a7aab76255b77 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 26 Mar 2025 13:05:53 -0400 Subject: [PATCH 057/106] chore: clean up accordion and alert-dialog --- packages/accordion/package.json | 4 +- packages/accordion/src/base-types.ts | 12 ++--- .../src/native/accordion-native.native.tsx | 22 +++------ .../accordion/src/web/accordion-web.web.tsx | 14 ++---- packages/alert-dialog/package.json | 4 +- .../src/native/alert-dialog-native.native.tsx | 46 +++++++------------ .../src/universal/alert-dialog.tsx | 12 ++--- .../src/universal/alert-dialog.web.tsx | 22 ++++----- 8 files changed, 46 insertions(+), 90 deletions(-) diff --git a/packages/accordion/package.json b/packages/accordion/package.json index a754e398..51d859c2 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -41,9 +41,7 @@ "@radix-ui/react-accordion": "^1.2.3", "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*", - "@rn-primitives/utils": "workspace:*" + "@rn-primitives/types": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/accordion/src/base-types.ts b/packages/accordion/src/base-types.ts index 6e51478f..4e994cc8 100644 --- a/packages/accordion/src/base-types.ts +++ b/packages/accordion/src/base-types.ts @@ -19,23 +19,23 @@ type BaseRootProps = Pick< | 'asChild' >; -type BaseContentProps = Pick; +type BaseContentProps = Pick; -type BaseHeaderProps = Pick; +type BaseHeaderProps = {}; -type BaseItemProps = Pick; +type BaseItemProps = Pick; -type BaseTriggerProps = Pick; +type BaseTriggerProps = {}; type BaseRootContext = Prettify< - Omit & { + Pick & { rootValue: BaseRootProps['value']; onRootValueChange: BaseRootProps['onValueChange']; } > | null; type BaseItemContext = Prettify< - Omit & { + Pick & { itemValue: BaseItemProps['value']; isExpanded: boolean; } diff --git a/packages/accordion/src/native/accordion-native.native.tsx b/packages/accordion/src/native/accordion-native.native.tsx index 64918268..19054eea 100644 --- a/packages/accordion/src/native/accordion-native.native.tsx +++ b/packages/accordion/src/native/accordion-native.native.tsx @@ -38,8 +38,6 @@ function Root({ ); } -Root.displayName = 'AccordionRootNative'; - const ItemInternalContext = React.createContext<{ nativeID: string } | null>(null); function Item({ value: itemValue, disabled, ...viewProps }: ItemProps) { @@ -61,8 +59,6 @@ function Item({ value: itemValue, disabled, ...viewProps }: ItemProps) { ); } -Item.displayName = 'AccordionItemNative'; - function useItemInternalContext() { const context = React.useContext(ItemInternalContext); if (!context) { @@ -73,7 +69,7 @@ function useItemInternalContext() { return context; } -const Header = (props: HeaderProps) => { +function Header(props: HeaderProps) { const { disabled: rootDisabled } = useRootContext(); const { disabled: itemDisabled, isExpanded } = useItemContext(); @@ -85,11 +81,9 @@ const Header = (props: HeaderProps) => { {...props} /> ); -}; - -Header.displayName = 'AccordionHeaderNative'; +} -const Trigger = ({ onPress: onPressProp, disabled: disabledProp, ...props }: TriggerProps) => { +function Trigger({ onPress: onPressProp, disabled: disabledProp, ...props }: TriggerProps) { const { disabled: rootDisabled, type, @@ -139,11 +133,9 @@ const Trigger = ({ onPress: onPressProp, disabled: disabledProp, ...props }: Tri {...props} /> ); -}; - -Trigger.displayName = 'AccordionTriggerNative'; +} -const Content = ({ forceMount, ...props }: ContentProps) => { +function Content({ forceMount, ...props }: ContentProps) { const { type } = useRootContext(); const { isExpanded } = useItemContext(); const { nativeID } = useItemInternalContext(); @@ -162,9 +154,7 @@ const Content = ({ forceMount, ...props }: ContentProps) => { {...props} /> ); -}; - -Content.displayName = 'AccordionContentNative'; +} export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/accordion/src/web/accordion-web.web.tsx b/packages/accordion/src/web/accordion-web.web.tsx index ca8a2112..dfe3c32d 100644 --- a/packages/accordion/src/web/accordion-web.web.tsx +++ b/packages/accordion/src/web/accordion-web.web.tsx @@ -49,9 +49,7 @@ function Root({ ); } -Root.displayName = 'AccordionRootWeb'; - -const Item = (props: ItemProps) => { +function Item(props: ItemProps) { const { rootValue } = useRootContext(); return ( @@ -65,14 +63,10 @@ const Item = (props: ItemProps) => { ); -}; - -Item.displayName = 'AccordionItemWeb'; +} -const Trigger = ({ ref, ...props }: TriggerProps) => { +function Trigger({ ref, ...props }: TriggerProps) { return | undefined} {...props} />; -}; - -Trigger.displayName = 'AccordionTriggerWeb'; +} export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index 2c57202f..db620ca7 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -42,9 +42,7 @@ "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/portal": "workspace:*", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*", - "@rn-primitives/utils": "workspace:*" + "@rn-primitives/types": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/alert-dialog/src/native/alert-dialog-native.native.tsx b/packages/alert-dialog/src/native/alert-dialog-native.native.tsx index 138f48e9..022d3839 100644 --- a/packages/alert-dialog/src/native/alert-dialog-native.native.tsx +++ b/packages/alert-dialog/src/native/alert-dialog-native.native.tsx @@ -49,7 +49,7 @@ function useRootInternalContext() { return context; } -const Trigger = ({ onPress: onPressProp, disabled, ...props }: TriggerProps) => { +function Trigger({ onPress: onPressProp, disabled, ...props }: TriggerProps) { const { open: value, onOpenChange } = useRootContext(); const onPress = React.useCallback( @@ -71,9 +71,7 @@ const Trigger = ({ onPress: onPressProp, disabled, ...props }: TriggerProps) => {...props} /> ); -}; - -Trigger.displayName = 'AlertDialogTriggerNative'; +} function Portal({ forceMount, hostName, children }: PortalProps) { const internalValue = useRootInternalContext(); @@ -94,11 +92,11 @@ function Portal({ forceMount, hostName, children }: PortalProps) { ); } -const Overlay = ({ +function Overlay({ forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props -}: OverlayProps) => { +}: OverlayProps) { const { open: value, onOpenChange } = useRootContext(); const onAccessibilityEscape = React.useCallback(() => { @@ -115,15 +113,13 @@ const Overlay = ({ } return ; -}; - -Overlay.displayName = 'AlertDialogOverlayNative'; +} -const Content = ({ +function Content({ forceMount, onAccessibilityEscape: onAccessibilityEscapeProp, ...props -}: ContentProps) => { +}: ContentProps) { const { open: value, onOpenChange } = useRootContext(); const { nativeID } = useRootInternalContext(); @@ -162,11 +158,9 @@ const Content = ({ {...props} /> ); -}; - -Content.displayName = 'AlertDialogContentNative'; +} -const Cancel = ({ onPress: onPressProp, disabled, ...props }: CancelProps) => { +function Cancel({ onPress: onPressProp, disabled, ...props }: CancelProps) { const { onOpenChange } = useRootContext(); const onPress = React.useCallback( @@ -188,11 +182,9 @@ const Cancel = ({ onPress: onPressProp, disabled, ...props }: CancelProps) => { {...props} /> ); -}; - -Cancel.displayName = 'AlertDialogCloseNative'; +} -const Action = ({ onPress: onPressProp, disabled, ...props }: ActionProps) => { +function Action({ onPress: onPressProp, disabled, ...props }: ActionProps) { const { onOpenChange } = useRootContext(); const onPress = React.useCallback( @@ -214,23 +206,17 @@ const Action = ({ onPress: onPressProp, disabled, ...props }: ActionProps) => { {...props} /> ); -}; - -Action.displayName = 'AlertDialogActionNative'; +} -const Title = (props: TitleProps) => { +function Title(props: TitleProps) { const { nativeID } = useRootInternalContext(); return ; -}; - -Title.displayName = 'AlertDialogTitleNative'; +} -const Description = ({ ...props }: DescriptionProps) => { +function Description({ ...props }: DescriptionProps) { const { nativeID } = useRootInternalContext(); return ; -}; - -Description.displayName = 'AlertDialogDescriptionNative'; +} export { Action, diff --git a/packages/alert-dialog/src/universal/alert-dialog.tsx b/packages/alert-dialog/src/universal/alert-dialog.tsx index 2d883ef2..023de75c 100644 --- a/packages/alert-dialog/src/universal/alert-dialog.tsx +++ b/packages/alert-dialog/src/universal/alert-dialog.tsx @@ -29,9 +29,11 @@ import type { function Root(props: RootProps) { return ; } -const Content = ({ web: _web, native, ...props }: ContentProps) => { + +function Content({ web: _web, native, ...props }: ContentProps) { return ; -}; +} + function Description({ web: _web, native, ...props }: DescriptionProps) { return ; } @@ -52,20 +54,14 @@ function Trigger({ ref, web: _web, native, ...props }: TriggerProps) { return ; } -Trigger.displayName = 'AlertDialogTriggerUniversal'; - function Action({ ref, web: _web, native, ...props }: ActionProps) { return ; } -Action.displayName = 'AlertDialogActionUniversal'; - function Cancel({ ref, web: _web, native, ...props }: CancelProps) { return ; } -Cancel.displayName = 'AlertDialogCancelUniversal'; - export { Action, Cancel, diff --git a/packages/alert-dialog/src/universal/alert-dialog.web.tsx b/packages/alert-dialog/src/universal/alert-dialog.web.tsx index 1ff1783f..edcaa9fc 100644 --- a/packages/alert-dialog/src/universal/alert-dialog.web.tsx +++ b/packages/alert-dialog/src/universal/alert-dialog.web.tsx @@ -28,7 +28,7 @@ function Root(props: RootProps) { return ; } -const Content = ({ web, native: _native, style, ...props }: ContentProps) => { +function Content({ web, native: _native, style, ...props }: ContentProps) { if (style) { return ( @@ -37,9 +37,7 @@ const Content = ({ web, native: _native, style, ...props }: ContentProps) => { ); } return ; -}; - -Content.displayName = 'AlertDialogContentUniversal'; +} function Description({ web, native: _native, style, ...props }: DescriptionProps) { if (style) { @@ -79,33 +77,29 @@ function Title({ web, native: _native, style, ...props }: TitleProps) { return ; } -const Trigger = ({ native: _native, web, ...props }: TriggerProps) => { +function Trigger({ native: _native, web, ...props }: TriggerProps) { return ( ); -}; - -Trigger.displayName = 'AlertDialogTriggerUniversal'; +} -const Action = ({ native: _native, web, ...props }: ActionProps) => { +function Action({ native: _native, web, ...props }: ActionProps) { return ( ); -}; +} -const Cancel = ({ native: _native, web, ...props }: CancelProps) => { +function Cancel({ native: _native, web, ...props }: CancelProps) { return ( ); -}; - -Cancel.displayName = 'AlertDialogCancelUniversal'; +} export { Action, From 6c2d0363f165847259675b925e71f0a37bac5f5c Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 26 Mar 2025 13:43:06 -0400 Subject: [PATCH 058/106] temp: add _temp folder to kickstart bumping components to v2 --- packages/_temp/src/base-types.ts | 0 .../src/native/component-native.native.tsx | 0 .../_temp/src/native/component-native.tsx | 0 packages/_temp/src/native/index.ts | 0 packages/_temp/src/native/types.ts | 0 packages/_temp/src/universal/component.tsx | 0 .../_temp/src/universal/component.web.tsx | 0 packages/_temp/src/universal/index.ts | 0 packages/_temp/src/universal/types.ts | 0 packages/_temp/src/utils/contexts.ts | 0 packages/_temp/src/web/component-web.tsx | 0 packages/_temp/src/web/component-web.web.tsx | 0 packages/_temp/src/web/index.ts | 0 packages/_temp/src/web/types.ts | 0 packages/_temp/tsup.config.ts | 35 +++++++++++++++++++ packages/accordion/src/base-types.ts | 2 -- 16 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 packages/_temp/src/base-types.ts create mode 100644 packages/_temp/src/native/component-native.native.tsx create mode 100644 packages/_temp/src/native/component-native.tsx create mode 100644 packages/_temp/src/native/index.ts create mode 100644 packages/_temp/src/native/types.ts create mode 100644 packages/_temp/src/universal/component.tsx create mode 100644 packages/_temp/src/universal/component.web.tsx create mode 100644 packages/_temp/src/universal/index.ts create mode 100644 packages/_temp/src/universal/types.ts create mode 100644 packages/_temp/src/utils/contexts.ts create mode 100644 packages/_temp/src/web/component-web.tsx create mode 100644 packages/_temp/src/web/component-web.web.tsx create mode 100644 packages/_temp/src/web/index.ts create mode 100644 packages/_temp/src/web/types.ts create mode 100644 packages/_temp/tsup.config.ts diff --git a/packages/_temp/src/base-types.ts b/packages/_temp/src/base-types.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/native/component-native.native.tsx b/packages/_temp/src/native/component-native.native.tsx new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/native/component-native.tsx b/packages/_temp/src/native/component-native.tsx new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/native/index.ts b/packages/_temp/src/native/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/native/types.ts b/packages/_temp/src/native/types.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/universal/component.tsx b/packages/_temp/src/universal/component.tsx new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/universal/component.web.tsx b/packages/_temp/src/universal/component.web.tsx new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/universal/index.ts b/packages/_temp/src/universal/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/universal/types.ts b/packages/_temp/src/universal/types.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/utils/contexts.ts b/packages/_temp/src/utils/contexts.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/web/component-web.tsx b/packages/_temp/src/web/component-web.tsx new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/web/component-web.web.tsx b/packages/_temp/src/web/component-web.web.tsx new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/web/index.ts b/packages/_temp/src/web/index.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/src/web/types.ts b/packages/_temp/src/web/types.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/_temp/tsup.config.ts b/packages/_temp/tsup.config.ts new file mode 100644 index 00000000..63a9d8c1 --- /dev/null +++ b/packages/_temp/tsup.config.ts @@ -0,0 +1,35 @@ +import { defineConfig, Options } from 'tsup'; + +export default defineConfig((options: Options) => ({ + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/component.tsx', + 'src/universal/component.web.tsx', + 'src/native/index.ts', + 'src/native/component-native.tsx', + 'src/native/component-native.native.tsx', + 'src/web/index.ts', + 'src/web/component-web.tsx', + 'src/web/component-web.web.tsx', + ], + banner: { + js: "'use client'", + }, + clean: true, + format: ['cjs', 'esm'], + external: [ + 'react', + './universal', + './component', + '../native', + './component-native', + '../web', + './component-web', + ], + dts: true, + ...options, + esbuildOptions(options) { + options.jsx = 'preserve'; + }, +})); diff --git a/packages/accordion/src/base-types.ts b/packages/accordion/src/base-types.ts index 4e994cc8..80a0e755 100644 --- a/packages/accordion/src/base-types.ts +++ b/packages/accordion/src/base-types.ts @@ -1,10 +1,8 @@ import type { Prettify } from '@rn-primitives/types'; import type { ContentProps as ContentPropsWeb, - HeaderProps as HeaderPropsWeb, ItemProps as ItemPropsWeb, RootProps as RootPropsWeb, - TriggerProps as TriggerPropsWeb, } from './web/types'; type BaseRootProps = Pick< From 5f761041d475eb3963231b85ec24d45fe8103376 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Thu, 27 Mar 2025 11:48:17 -0400 Subject: [PATCH 059/106] feat: add with-rn-primitives to add data-rn-primitives attribute for web --- packages/accordion/package.json | 3 ++- .../accordion/src/web/accordion-web.web.tsx | 19 +++++++++++---- packages/alert-dialog/package.json | 3 ++- .../src/web/alert-dialog-web.web.tsx | 23 +++++++++++++------ packages/utils/src/index.ts | 1 + packages/utils/src/with-rn-primitives.tsx | 17 ++++++++++++++ pnpm-lock.yaml | 6 ----- 7 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 packages/utils/src/with-rn-primitives.tsx diff --git a/packages/accordion/package.json b/packages/accordion/package.json index 51d859c2..e993af82 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -41,7 +41,8 @@ "@radix-ui/react-accordion": "^1.2.3", "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/accordion/src/web/accordion-web.web.tsx b/packages/accordion/src/web/accordion-web.web.tsx index dfe3c32d..8472ca06 100644 --- a/packages/accordion/src/web/accordion-web.web.tsx +++ b/packages/accordion/src/web/accordion-web.web.tsx @@ -1,11 +1,12 @@ import { Accordion, + AccordionContent, + AccordionHeader, AccordionItem, AccordionTrigger, - Content, - Header, } from '@radix-ui/react-accordion'; import { useControllableState } from '@rn-primitives/hooks'; +import { withRNPrimitives } from '@rn-primitives/utils'; import * as React from 'react'; import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; @@ -37,6 +38,7 @@ function Root({ }} > - + ); } function Trigger({ ref, ...props }: TriggerProps) { - return | undefined} {...props} />; + return ( + | undefined} + data-rn-primitives='pressable' + {...props} + /> + ); } +const Content = withRNPrimitives(AccordionContent, 'view'); +const Header = withRNPrimitives(AccordionHeader, 'view'); + export { Content, Header, Item, Root, Trigger, useItemContext, useRootContext }; diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index db620ca7..9fc5893c 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -42,7 +42,8 @@ "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/portal": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/alert-dialog/src/web/alert-dialog-web.web.tsx b/packages/alert-dialog/src/web/alert-dialog-web.web.tsx index 979d6520..79efceed 100644 --- a/packages/alert-dialog/src/web/alert-dialog-web.web.tsx +++ b/packages/alert-dialog/src/web/alert-dialog-web.web.tsx @@ -1,15 +1,16 @@ import { AlertDialog, - Action, - Cancel, - Content, - Description, - Overlay, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogOverlay, + AlertDialogTitle, + AlertDialogTrigger, Portal, - Title, - Trigger, } from '@radix-ui/react-alert-dialog'; import { useControllableState } from '@rn-primitives/hooks'; +import { withRNPrimitives } from '@rn-primitives/utils'; import * as React from 'react'; import { RootContext, useRootContext } from '../utils/contexts'; import type { RootProps } from './types'; @@ -38,6 +39,14 @@ function Root({ ); } +const Action = withRNPrimitives(AlertDialogAction, 'pressable'); +const Cancel = withRNPrimitives(AlertDialogCancel, 'pressable'); +const Content = withRNPrimitives(AlertDialogContent, 'view'); +const Description = withRNPrimitives(AlertDialogDescription, 'text'); +const Overlay = withRNPrimitives(AlertDialogOverlay, 'view'); +const Title = withRNPrimitives(AlertDialogTitle, 'text'); +const Trigger = withRNPrimitives(AlertDialogTrigger, 'pressable'); + export { Action, Cancel, diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index f0cae5dd..73ccdd42 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -4,3 +4,4 @@ export { flattenStyle } from './style/flatten-style'; export { rnStyleToWebStyle } from './style/rn-style-to-web-style'; export { ToggleGroupUtils } from './toggle-group-utils'; export { useWebPressableProps } from './use-web-pressable-props'; +export { withRNPrimitives } from './with-rn-primitives'; diff --git a/packages/utils/src/with-rn-primitives.tsx b/packages/utils/src/with-rn-primitives.tsx new file mode 100644 index 00000000..dcb4f986 --- /dev/null +++ b/packages/utils/src/with-rn-primitives.tsx @@ -0,0 +1,17 @@ +/** + * Adds the `data-rn-primitives` attribute to the component. + * @param Component - The component to wrap. + * @param type { 'view' | 'text' | 'pressable' | 'image' } - The type of primitive to add. + * @returns The wrapped component. + */ +function withRNPrimitives( + Component: React.ComponentType, + type: 'view' | 'text' | 'pressable' | 'image' +) { + const RNPrimitiveComponent = (props: React.ComponentProps) => { + return ; + }; + return RNPrimitiveComponent; +} + +export { withRNPrimitives }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e8334e5f..24e2efce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -856,9 +856,6 @@ importers: '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot '@rn-primitives/types': specifier: workspace:* version: link:../types @@ -896,9 +893,6 @@ importers: '@rn-primitives/portal': specifier: workspace:* version: link:../portal - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot '@rn-primitives/types': specifier: workspace:* version: link:../types From 14deef16ba9e2d7423428d05a14de6fdc3ab17da Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 28 Mar 2025 14:53:53 -0400 Subject: [PATCH 060/106] feat: add merge props to utils --- packages/utils/src/index.ts | 1 + packages/utils/src/merge-props.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 packages/utils/src/merge-props.ts diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 73ccdd42..31aab6f1 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,4 +1,5 @@ export { EmptyGestureResponderEvent } from './empty-gesture-responder-event'; +export { mergeProps } from './merge-props'; export { renderPressableChildren } from './render-pressable-children'; export { flattenStyle } from './style/flatten-style'; export { rnStyleToWebStyle } from './style/rn-style-to-web-style'; diff --git a/packages/utils/src/merge-props.ts b/packages/utils/src/merge-props.ts new file mode 100644 index 00000000..04af3e91 --- /dev/null +++ b/packages/utils/src/merge-props.ts @@ -0,0 +1,19 @@ +type PropObject = Record | undefined; + +function mergeProps(...propsArray: T): T[number] { + let result: PropObject | undefined = undefined; + for (const props of propsArray) { + if (props && typeof props === 'object') { + if (!result) { + result = props; + } else { + for (const key of Object.keys(props)) { + result[key] = props[key]; + } + } + } + } + return result as T[number]; +} + +export { mergeProps }; From d5730253ad9f0ee600175b78c113e2e428415ee8 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 28 Mar 2025 14:55:18 -0400 Subject: [PATCH 061/106] feat(core): have text consider type of ancestor for adjusted as --- packages/core/src/web/components.web.tsx | 32 ++++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/packages/core/src/web/components.web.tsx b/packages/core/src/web/components.web.tsx index a14f249c..766c41ed 100644 --- a/packages/core/src/web/components.web.tsx +++ b/packages/core/src/web/components.web.tsx @@ -20,26 +20,48 @@ function createDivElement(type: 'pressable' | 'view') { return DivImpl; } -const HasAncestorContext = React.createContext(false); +const TextAncestorContext = React.createContext(null); + +const NON_NESTABLE_TEXT_ELEMENTS = [ + 'p', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'address', + 'pre', + 'blockquote', +]; function createTextElement() { function DivImpl({ asChild, as, ...props }: DivProps) { - const hasAncestor = React.useContext(HasAncestorContext); + const textAncestor = React.useContext(TextAncestorContext); if (asChild) { return ; } - const element = React.createElement(!as ? (hasAncestor ? 'span' : 'div') : as, { + const adjustedAs = + textAncestor && + NON_NESTABLE_TEXT_ELEMENTS.includes(textAncestor) && + NON_NESTABLE_TEXT_ELEMENTS.includes(as ?? '') + ? 'span' + : (as ?? (textAncestor ? 'span' : 'div')); + + const element = React.createElement(adjustedAs, { 'data-rn-primitives': 'text', ...props, }); - if (hasAncestor) { + if (textAncestor) { return element; } - return {element}; + return ( + {element} + ); } return DivImpl; From 60dbcdde77443fb44cad5d34ac9865911d619805 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 28 Mar 2025 14:55:58 -0400 Subject: [PATCH 062/106] feat: make aspect-ratio v2 --- packages/aspect-ratio/package.json | 10 ++----- packages/aspect-ratio/src/aspect-ratio.tsx | 29 ------------------- packages/aspect-ratio/src/base-types.ts | 5 ++++ packages/aspect-ratio/src/index.ts | 3 +- .../src/native/aspect-ratio-native.native.tsx | 29 +++++++++++++++++++ .../src/native/aspect-ratio-native.tsx | 10 +++++++ packages/aspect-ratio/src/native/index.ts | 2 ++ packages/aspect-ratio/src/native/types.ts | 6 ++++ .../src/universal/aspect-ratio.tsx | 8 +++++ .../src/universal/aspect-ratio.web.tsx | 16 ++++++++++ packages/aspect-ratio/src/universal/index.ts | 2 ++ packages/aspect-ratio/src/universal/types.ts | 12 ++++++++ .../aspect-ratio/src/web/aspect-ratio-web.tsx | 10 +++++++ .../src/web/aspect-ratio-web.web.tsx | 6 ++++ packages/aspect-ratio/src/web/index.ts | 2 ++ packages/aspect-ratio/src/web/types.ts | 7 +++++ packages/aspect-ratio/tsup.config.ts | 23 +++++++++++++-- 17 files changed, 141 insertions(+), 39 deletions(-) delete mode 100644 packages/aspect-ratio/src/aspect-ratio.tsx create mode 100644 packages/aspect-ratio/src/base-types.ts create mode 100644 packages/aspect-ratio/src/native/aspect-ratio-native.native.tsx create mode 100644 packages/aspect-ratio/src/native/aspect-ratio-native.tsx create mode 100644 packages/aspect-ratio/src/native/index.ts create mode 100644 packages/aspect-ratio/src/native/types.ts create mode 100644 packages/aspect-ratio/src/universal/aspect-ratio.tsx create mode 100644 packages/aspect-ratio/src/universal/aspect-ratio.web.tsx create mode 100644 packages/aspect-ratio/src/universal/index.ts create mode 100644 packages/aspect-ratio/src/universal/types.ts create mode 100644 packages/aspect-ratio/src/web/aspect-ratio-web.tsx create mode 100644 packages/aspect-ratio/src/web/aspect-ratio-web.web.tsx create mode 100644 packages/aspect-ratio/src/web/index.ts create mode 100644 packages/aspect-ratio/src/web/types.ts diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index 8505b2e8..1f28e6b5 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -33,8 +33,8 @@ }, "dependencies": { "@radix-ui/react-aspect-ratio": "^1.1.2", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/core": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", @@ -45,15 +45,11 @@ }, "peerDependencies": { "react": ">=19.0.0", - "react-native": "*", - "react-native-web": "*" + "react-native": "*" }, "peerDependenciesMeta": { "react-native": { "optional": true - }, - "react-native-web": { - "optional": true } } } diff --git a/packages/aspect-ratio/src/aspect-ratio.tsx b/packages/aspect-ratio/src/aspect-ratio.tsx deleted file mode 100644 index 50b98e39..00000000 --- a/packages/aspect-ratio/src/aspect-ratio.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import type { SlottableViewProps, ViewRef } from '@rn-primitives/types'; -import * as React from 'react'; -import { View, type ViewStyle } from 'react-native'; - -type RootProps = Omit & { - ratio?: number; - style?: ViewStyle; -}; - -type RootRef = ViewRef; - -const Root = ({ - ref, - asChild, - ratio = 1, - style, - ...props -}: RootProps & { - ref?: React.RefObject; -}) => { - const Component = asChild ? Slot : View; - return ; -}; - -Root.displayName = 'RootAspectRatio'; - -export { Root }; -export type { RootProps, RootRef }; diff --git a/packages/aspect-ratio/src/base-types.ts b/packages/aspect-ratio/src/base-types.ts new file mode 100644 index 00000000..3452a6da --- /dev/null +++ b/packages/aspect-ratio/src/base-types.ts @@ -0,0 +1,5 @@ +import type { AspectRatioProps } from '@radix-ui/react-aspect-ratio'; + +type BaseAspectRatioRootProps = Pick; + +export type { BaseAspectRatioRootProps }; diff --git a/packages/aspect-ratio/src/index.ts b/packages/aspect-ratio/src/index.ts index 6d1cd137..ce33d8af 100644 --- a/packages/aspect-ratio/src/index.ts +++ b/packages/aspect-ratio/src/index.ts @@ -1 +1,2 @@ -export * from './aspect-ratio'; +export { Root } from './universal'; +export type { RootProps } from './universal'; diff --git a/packages/aspect-ratio/src/native/aspect-ratio-native.native.tsx b/packages/aspect-ratio/src/native/aspect-ratio-native.native.tsx new file mode 100644 index 00000000..fc9a66c9 --- /dev/null +++ b/packages/aspect-ratio/src/native/aspect-ratio-native.native.tsx @@ -0,0 +1,29 @@ +import { View } from '@rn-primitives/core/dist/native'; +import * as React from 'react'; +import type { RootProps } from './types'; + +function Root({ style, ratio, ...props }: RootProps) { + return ; +} + +function getStyle(style: RootProps['style'], aspectRatio: RootProps['ratio']) { + if (aspectRatio == null && !style) { + return undefined; + } + if (!style) { + return { aspectRatio }; + } + if (aspectRatio == null) { + return style; + } + if (Array.isArray(style)) { + return [...style, { aspectRatio }]; + } + if (typeof style === 'object') { + return { ...style, aspectRatio }; + } + // If made it here, style overrides aspectRatio + return style; +} + +export { Root }; diff --git a/packages/aspect-ratio/src/native/aspect-ratio-native.tsx b/packages/aspect-ratio/src/native/aspect-ratio-native.tsx new file mode 100644 index 00000000..816eed83 --- /dev/null +++ b/packages/aspect-ratio/src/native/aspect-ratio-native.tsx @@ -0,0 +1,10 @@ +import type { RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/aspect-ratio/native is only supported on native.'); + } + return null; +} + +export { Root }; diff --git a/packages/aspect-ratio/src/native/index.ts b/packages/aspect-ratio/src/native/index.ts new file mode 100644 index 00000000..ec07b865 --- /dev/null +++ b/packages/aspect-ratio/src/native/index.ts @@ -0,0 +1,2 @@ +export { Root } from './aspect-ratio-native'; +export type { RootProps } from './types'; diff --git a/packages/aspect-ratio/src/native/types.ts b/packages/aspect-ratio/src/native/types.ts new file mode 100644 index 00000000..7350eb5e --- /dev/null +++ b/packages/aspect-ratio/src/native/types.ts @@ -0,0 +1,6 @@ +import type { ViewProps } from '@rn-primitives/core/dist/native'; +import { BaseAspectRatioRootProps } from '../base-types'; + +type RootProps = BaseAspectRatioRootProps & ViewProps; + +export type { RootProps }; diff --git a/packages/aspect-ratio/src/universal/aspect-ratio.tsx b/packages/aspect-ratio/src/universal/aspect-ratio.tsx new file mode 100644 index 00000000..e7338f08 --- /dev/null +++ b/packages/aspect-ratio/src/universal/aspect-ratio.tsx @@ -0,0 +1,8 @@ +import { Root as RootNative } from '../native'; +import type { RootProps } from './types'; + +function Root({ web: _web, native, ...props }: RootProps) { + return ; +} + +export { Root }; diff --git a/packages/aspect-ratio/src/universal/aspect-ratio.web.tsx b/packages/aspect-ratio/src/universal/aspect-ratio.web.tsx new file mode 100644 index 00000000..f1f73584 --- /dev/null +++ b/packages/aspect-ratio/src/universal/aspect-ratio.web.tsx @@ -0,0 +1,16 @@ +import { View } from '@rn-primitives/core'; +import { Root as RootWeb } from '../web'; +import type { RootProps } from './types'; + +function Root({ web, native: _native, style, ...props }: RootProps) { + if (style) { + return ( + + + + ); + } + return ; +} + +export { Root }; diff --git a/packages/aspect-ratio/src/universal/index.ts b/packages/aspect-ratio/src/universal/index.ts new file mode 100644 index 00000000..b1426104 --- /dev/null +++ b/packages/aspect-ratio/src/universal/index.ts @@ -0,0 +1,2 @@ +export { Root } from './aspect-ratio'; +export type { RootProps } from './types'; diff --git a/packages/aspect-ratio/src/universal/types.ts b/packages/aspect-ratio/src/universal/types.ts new file mode 100644 index 00000000..4b1e5113 --- /dev/null +++ b/packages/aspect-ratio/src/universal/types.ts @@ -0,0 +1,12 @@ +import type { ViewPropsUniversal } from '@rn-primitives/core'; +import type { BaseAspectRatioRootProps } from '../base-types'; +import type { RootProps as RootPropsNative } from '../native'; +import type { RootProps as RootPropsWeb } from '../web'; + +type RootProps = BaseAspectRatioRootProps & + ViewPropsUniversal & { + native?: RootPropsNative; + web?: RootPropsWeb; + }; + +export type { RootProps }; diff --git a/packages/aspect-ratio/src/web/aspect-ratio-web.tsx b/packages/aspect-ratio/src/web/aspect-ratio-web.tsx new file mode 100644 index 00000000..ff34558f --- /dev/null +++ b/packages/aspect-ratio/src/web/aspect-ratio-web.tsx @@ -0,0 +1,10 @@ +import type { AspectRatio } from '@radix-ui/react-aspect-ratio'; + +const Root = (() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/aspect-ratio/web is only supported on web.'); + } + return null; +}) as unknown as typeof AspectRatio; + +export { Root }; diff --git a/packages/aspect-ratio/src/web/aspect-ratio-web.web.tsx b/packages/aspect-ratio/src/web/aspect-ratio-web.web.tsx new file mode 100644 index 00000000..2d6b2dec --- /dev/null +++ b/packages/aspect-ratio/src/web/aspect-ratio-web.web.tsx @@ -0,0 +1,6 @@ +import { AspectRatio } from '@radix-ui/react-aspect-ratio'; +import { withRNPrimitives } from '@rn-primitives/utils'; + +const Root = withRNPrimitives(AspectRatio, 'view'); + +export { Root }; diff --git a/packages/aspect-ratio/src/web/index.ts b/packages/aspect-ratio/src/web/index.ts new file mode 100644 index 00000000..5512a2a5 --- /dev/null +++ b/packages/aspect-ratio/src/web/index.ts @@ -0,0 +1,2 @@ +export { Root } from './aspect-ratio-web'; +export type { RootProps } from './types'; diff --git a/packages/aspect-ratio/src/web/types.ts b/packages/aspect-ratio/src/web/types.ts new file mode 100644 index 00000000..542b74d3 --- /dev/null +++ b/packages/aspect-ratio/src/web/types.ts @@ -0,0 +1,7 @@ +import type { AspectRatioProps } from '@radix-ui/react-aspect-ratio'; + +type RootPropsWebOnly = Omit; + +type RootProps = AspectRatioProps; + +export type { RootProps, RootPropsWebOnly }; diff --git a/packages/aspect-ratio/tsup.config.ts b/packages/aspect-ratio/tsup.config.ts index fed45591..7e551853 100644 --- a/packages/aspect-ratio/tsup.config.ts +++ b/packages/aspect-ratio/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/aspect-ratio.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/aspect-ratio.tsx', + 'src/universal/aspect-ratio.web.tsx', + 'src/native/index.ts', + 'src/native/aspect-ratio-native.tsx', + 'src/native/aspect-ratio-native.native.tsx', + 'src/web/index.ts', + 'src/web/aspect-ratio-web.tsx', + 'src/web/aspect-ratio-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './aspect-ratio'], + external: [ + 'react', + './universal', + './aspect-ratio', + '../native', + './aspect-ratio-native', + '../web', + './aspect-ratio-web', + ], dts: true, ...options, esbuildOptions(options) { From a39833b111f813c71fcbf2d3ed7600f91e612ea6 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 28 Mar 2025 14:56:59 -0400 Subject: [PATCH 063/106] feat: add alert-dialog aspect ratio to nextjs no rn + make adjustments --- .../components/ui/alert-dialog.tsx | 2 +- apps/expo-nativewind/lib/merge-props.ts | 19 --- apps/nextjs-nativewind/src/app/page.tsx | 9 +- .../src/components/ui/alert-dialog.tsx | 104 +++++-------- apps/nextjs-no-rn/package.json | 2 + apps/nextjs-no-rn/src/app/page.tsx | 62 +++++++- apps/nextjs-no-rn/src/components/core.tsx | 6 +- .../src/components/ui/accordion.tsx | 95 ++++++++---- .../src/components/ui/alert-dialog.tsx | 137 ++++++++++++++++++ .../src/components/ui/aspect-ratio.tsx | 7 + .../nextjs-no-rn/src/components/ui/button.tsx | 117 +++++++++++++++ apps/nextjs-no-rn/src/components/ui/text.tsx | 10 +- pnpm-lock.yaml | 17 ++- 13 files changed, 450 insertions(+), 137 deletions(-) delete mode 100644 apps/expo-nativewind/lib/merge-props.ts create mode 100644 apps/nextjs-no-rn/src/components/ui/alert-dialog.tsx create mode 100644 apps/nextjs-no-rn/src/components/ui/aspect-ratio.tsx create mode 100644 apps/nextjs-no-rn/src/components/ui/button.tsx diff --git a/apps/expo-nativewind/components/ui/alert-dialog.tsx b/apps/expo-nativewind/components/ui/alert-dialog.tsx index e8b9e35c..b05cf30f 100644 --- a/apps/expo-nativewind/components/ui/alert-dialog.tsx +++ b/apps/expo-nativewind/components/ui/alert-dialog.tsx @@ -1,10 +1,10 @@ import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog'; import { Platform, View } from '@rn-primitives/core'; import { FadeIn, FadeOut, ZoomIn, ZoomOut } from '@rn-primitives/core/dist/native/reanimated'; +import { mergeProps } from '@rn-primitives/utils'; import * as React from 'react'; import { buttonTextVariants, buttonVariants } from '~/components/ui/button'; import { TextClassContext } from '~/components/ui/text'; -import { mergeProps } from '~/lib/merge-props'; import { cn } from '~/lib/utils'; const AlertDialog = AlertDialogPrimitive.Root; diff --git a/apps/expo-nativewind/lib/merge-props.ts b/apps/expo-nativewind/lib/merge-props.ts deleted file mode 100644 index 04af3e91..00000000 --- a/apps/expo-nativewind/lib/merge-props.ts +++ /dev/null @@ -1,19 +0,0 @@ -type PropObject = Record | undefined; - -function mergeProps(...propsArray: T): T[number] { - let result: PropObject | undefined = undefined; - for (const props of propsArray) { - if (props && typeof props === 'object') { - if (!result) { - result = props; - } else { - for (const key of Object.keys(props)) { - result[key] = props[key]; - } - } - } - } - return result as T[number]; -} - -export { mergeProps }; diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 6b364fe4..71ccf822 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -1,3 +1,4 @@ +import { View } from '@rn-primitives/core'; import { CheckboxExample } from '~/components/CheckboxExample'; import { CollapsibleExample } from '~/components/CollapsibleExample'; import { ContextMenuExample } from '~/components/ContextMenuExample'; @@ -106,8 +107,8 @@ export default function Home() { - {/* - + + {/* @@ -210,10 +211,10 @@ function AlertDialogExample() { function AspectRatioExample() { return ( -
+ 16:9 Aspect-ratio -
+
); } diff --git a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx index 2c045d2c..e34efc39 100644 --- a/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx +++ b/apps/nextjs-nativewind/src/components/ui/alert-dialog.tsx @@ -2,10 +2,10 @@ import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog'; import { Platform, View } from '@rn-primitives/core'; -import { FadeIn, FadeOut } from '@rn-primitives/core/native-only-reanimated'; +import { FadeIn, FadeOut, ZoomIn, ZoomOut } from '@rn-primitives/core/native-only-reanimated'; import * as React from 'react'; -import { buttonTextVariants, buttonVariants } from '~/components/ui/button'; -import { TextClassContext } from '~/components/ui/text'; +import { Button } from '~/components/ui/button'; +import { mergeProps } from '@rn-primitives/utils'; import { cn } from '~/lib/utils'; const AlertDialog = AlertDialogPrimitive.Root; @@ -14,24 +14,22 @@ const AlertDialogTrigger = AlertDialogPrimitive.Trigger; const AlertDialogPortal = AlertDialogPrimitive.Portal; -function AlertDialogOverlay({ - className, - native: { isAnimated = true, ...restNative } = {}, - ...props -}: AlertDialogPrimitive.OverlayProps) { +const OVERLAY_NATIVE_PROPS = { + isAnimated: true, + entering: FadeIn, + exiting: FadeOut.duration(150), +}; + +function AlertDialogOverlay({ className, native, ...props }: AlertDialogPrimitive.OverlayProps) { return ( & { native?: AlertDialogPrimitive.ContentProps['native'] & { portalHost?: string }; -} & { - ref?: React.RefObject>; -}) => { +}) { return ( - {/* {Platform.OS === 'web' ? ( */} - {/* <> */} - - - {/* - ) : ( - )} */} ); -}; +} const AlertDialogHeader = ({ className, @@ -93,7 +77,6 @@ const AlertDialogHeader = ({ }: React.ComponentPropsWithoutRef) => ( ); -AlertDialogHeader.displayName = 'AlertDialogHeader'; const AlertDialogFooter = ({ className, @@ -104,7 +87,6 @@ const AlertDialogFooter = ({ {...props} /> ); -AlertDialogFooter.displayName = 'AlertDialogFooter'; function AlertDialogTitle({ className, ...props }: AlertDialogPrimitive.TitleProps) { return ( @@ -128,35 +110,17 @@ function AlertDialogDescription({ className, ...props }: AlertDialogPrimitive.De ); } -const AlertDialogAction = ({ - ref, - className, - ...props -}: AlertDialogPrimitive.ActionProps & { - ref: React.RefObject; -}) => ( - - - +const AlertDialogAction = (props: AlertDialogPrimitive.ActionProps) => ( + ); -AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; -const AlertDialogCancel = ({ - ref, - className, - ...props -}: AlertDialogPrimitive.CancelProps & { - ref: React.RefObject; -}) => ( - - - +const AlertDialogCancel = (props: AlertDialogPrimitive.CancelProps) => ( + ); -AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; export { AlertDialog, diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index f3d02703..a786da72 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -15,6 +15,8 @@ "@rn-primitives/utils": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/core": "workspace:*", + "@rn-primitives/alert-dialog": "workspace:*", + "@rn-primitives/aspect-ratio": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "next": "15.2.2", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index ad4582a5..0934c165 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -1,4 +1,5 @@ -import { Text, View } from '@rn-primitives/core'; +import { Text } from '~/components/ui/text'; +import { View } from '@rn-primitives/core'; import { Core } from '~/components/core'; import { Accordion, @@ -6,6 +7,19 @@ import { AccordionItem, AccordionTrigger, } from '~/components/ui/accordion'; +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, +} from '~/components/ui/alert-dialog'; +import { AspectRatio } from '~/components/ui/aspect-ratio'; +import { Button } from '~/components/ui/button'; export default function Home() { return ( @@ -14,12 +28,12 @@ export default function Home() {

@rn-primitives

Styled with Tailwind

- - No react-native/react-native - + No react-native/react-native
+ + ); @@ -62,3 +76,43 @@ function AccordionExample() {
); } + +function AlertDialogExample() { + return ( + + + + + + + Are you absolutely sure? + + This action cannot be undone. This will permanently delete your account and remove your + data from our servers. + + + + + Cancel + + + Continue + + + + + ); +} + +function AspectRatioExample() { + return ( + + + 16 / 9 + Aspect-ratio + + + ); +} diff --git a/apps/nextjs-no-rn/src/components/core.tsx b/apps/nextjs-no-rn/src/components/core.tsx index e7eb24ef..76fa84e0 100644 --- a/apps/nextjs-no-rn/src/components/core.tsx +++ b/apps/nextjs-no-rn/src/components/core.tsx @@ -1,14 +1,14 @@ 'use client'; -import { Image, Platform, Pressable, Text, View, type PressableRef } from '@rn-primitives/core'; +import { Image, Platform, Pressable, View, type PressableRef } from '@rn-primitives/core'; import * as React from 'react'; - +import { Text } from '~/components/ui/text'; export function Core() { const ref = React.useRef(null); return ( alert('Pressed')}> - + {Platform.select({ ios: 'iOS', web: 'Web' })} Pressable with Nested text{' '} diff --git a/apps/nextjs-no-rn/src/components/ui/accordion.tsx b/apps/nextjs-no-rn/src/components/ui/accordion.tsx index ed351125..97e2dc75 100644 --- a/apps/nextjs-no-rn/src/components/ui/accordion.tsx +++ b/apps/nextjs-no-rn/src/components/ui/accordion.tsx @@ -1,41 +1,70 @@ 'use client'; import * as AccordionPrimitive from '@rn-primitives/accordion'; +import { Platform, View } from '@rn-primitives/core'; +import { + FadeIn, + FadeOutUp, + LayoutAnimationConfig, + LinearTransition, +} from '@rn-primitives/core/native-only-reanimated'; import { renderPressableChildren } from '@rn-primitives/utils'; import * as React from 'react'; -import { Platform, View } from '@rn-primitives/core'; import { TextClassContext } from '~/components/ui/text'; import { cn } from '~/lib/utils'; -function Accordion(props: AccordionPrimitive.RootProps) { - return ; +const WEB_AS_CHILD_PROPS = { asChild: true }; + +const ROOT_NATIVE_PROPS = { + isAnimated: true, + layout: LinearTransition, +}; + +const ROOT_INNER_NATIVE_PROPS = { + isAnimated: true, + layout: LinearTransition.duration(200), +}; + +function Accordion({ children, ...props }: AccordionPrimitive.RootProps) { + return ( + + + + <>{children} + + + + ); } +const ITEM_NATIVE_PROPS = { + isAnimated: true, + layout: LinearTransition.duration(200), +}; + function AccordionItem({ className, value, ...props }: AccordionPrimitive.ItemProps) { return ( ); } -const AccordionTrigger = ({ - ref, - className, - children, - ...props -}: AccordionPrimitive.TriggerProps) => { +const AccordionTrigger = ({ className, children, ...props }: AccordionPrimitive.TriggerProps) => { + const { isExpanded } = AccordionPrimitive.useItemContext(); + return ( svg]:rotate-180', + web: 'flex-1 hover:underline transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-muted-foreground [&[data-state=open]>svg]:rotate-180', + native: 'active:opacity-50', }), className )} @@ -45,18 +74,26 @@ const AccordionTrigger = ({ return ( <> {children} - - - + + + + ); })} @@ -66,6 +103,12 @@ const AccordionTrigger = ({ ); }; +const CONTENT_NATIVE_PROPS = { + isAnimated: true, + entering: FadeIn, + exiting: FadeOutUp.duration(200), +}; + function AccordionContent({ className, children, ...props }: AccordionPrimitive.ContentProps) { return ( @@ -78,14 +121,12 @@ function AccordionContent({ className, children, ...props }: AccordionPrimitive. )} {...props} > - {children} + + {children} + ); } -function InnerContent({ children, className }: { children: React.ReactNode; className?: string }) { - return {children}; -} - export { Accordion, AccordionContent, AccordionItem, AccordionTrigger }; diff --git a/apps/nextjs-no-rn/src/components/ui/alert-dialog.tsx b/apps/nextjs-no-rn/src/components/ui/alert-dialog.tsx new file mode 100644 index 00000000..e34efc39 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/alert-dialog.tsx @@ -0,0 +1,137 @@ +'use client'; + +import * as AlertDialogPrimitive from '@rn-primitives/alert-dialog'; +import { Platform, View } from '@rn-primitives/core'; +import { FadeIn, FadeOut, ZoomIn, ZoomOut } from '@rn-primitives/core/native-only-reanimated'; +import * as React from 'react'; +import { Button } from '~/components/ui/button'; +import { mergeProps } from '@rn-primitives/utils'; +import { cn } from '~/lib/utils'; + +const AlertDialog = AlertDialogPrimitive.Root; + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger; + +const AlertDialogPortal = AlertDialogPrimitive.Portal; + +const OVERLAY_NATIVE_PROPS = { + isAnimated: true, + entering: FadeIn, + exiting: FadeOut.duration(150), +}; + +function AlertDialogOverlay({ className, native, ...props }: AlertDialogPrimitive.OverlayProps) { + return ( + + ); +} + +const CONTENT_NATIVE_PROPS = { + isAnimated: true, + entering: ZoomIn.duration(200).withInitialValues({ transform: [{ scale: 0.85 }] }), + exiting: ZoomOut.duration(400), +}; + +function AlertDialogContent({ + className, + native: { portalHost, ...nativeProp } = {}, + ...props +}: Omit & { + native?: AlertDialogPrimitive.ContentProps['native'] & { portalHost?: string }; +}) { + return ( + + + + + + ); +} + +const AlertDialogHeader = ({ + className, + ...props +}: React.ComponentPropsWithoutRef) => ( + +); + +const AlertDialogFooter = ({ + className, + ...props +}: React.ComponentPropsWithoutRef) => ( + +); + +function AlertDialogTitle({ className, ...props }: AlertDialogPrimitive.TitleProps) { + return ( + + ); +} + +function AlertDialogDescription({ className, ...props }: AlertDialogPrimitive.DescriptionProps) { + return ( + + ); +} + +const AlertDialogAction = (props: AlertDialogPrimitive.ActionProps) => ( + +); + +const AlertDialogCancel = (props: AlertDialogPrimitive.CancelProps) => ( + +); + +export { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogOverlay, + AlertDialogPortal, + AlertDialogTitle, + AlertDialogTrigger, +}; diff --git a/apps/nextjs-no-rn/src/components/ui/aspect-ratio.tsx b/apps/nextjs-no-rn/src/components/ui/aspect-ratio.tsx new file mode 100644 index 00000000..65a62d6f --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,7 @@ +'use client'; + +import * as AspectRatioPrimitive from '@rn-primitives/aspect-ratio'; + +const AspectRatio = AspectRatioPrimitive.Root; + +export { AspectRatio }; diff --git a/apps/nextjs-no-rn/src/components/ui/button.tsx b/apps/nextjs-no-rn/src/components/ui/button.tsx new file mode 100644 index 00000000..b6820fae --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/button.tsx @@ -0,0 +1,117 @@ +'use client'; + +import { Platform, Pressable } from '@rn-primitives/core'; +import { cva, type VariantProps } from 'class-variance-authority'; +import * as React from 'react'; +import { TextClassContext } from '~/components/ui/text'; +import { cn } from '~/lib/utils'; + +const baseButtonVariants = cva('group flex items-center justify-center rounded-md', { + variants: { + variant: { + default: 'bg-primary active:opacity-90', + destructive: 'bg-destructive active:opacity-90', + outline: 'border border-input bg-background active:bg-accent', + secondary: 'bg-secondary active:opacity-80', + ghost: 'active:bg-accent', + link: 'active:underline', + }, + size: { + default: 'h-10 px-4 py-2', + sm: 'h-9 rounded-md px-3', + lg: 'h-11 rounded-md px-8', + icon: 'h-10 w-10', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, +}); + +const webButtonVariants = cva( + 'ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', + { + variants: { + variant: { + default: 'hover:opacity-90', + destructive: 'hover:opacity-90', + outline: 'hover:bg-accent hover:text-accent-foreground', + secondary: 'hover:opacity-80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'underline-offset-4 hover:underline focus:underline', + }, + size: { + default: '', + sm: '', + lg: '', + icon: '', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + } +); + +const baseButtonTextVariants = cva('text-sm font-medium text-foreground', { + variants: { + variant: { + default: 'text-primary-foreground', + destructive: 'text-destructive-foreground', + outline: 'group-active:text-accent-foreground', + secondary: 'text-secondary-foreground group-active:text-secondary-foreground', + ghost: 'group-active:text-accent-foreground', + link: 'text-primary group-active:underline', + }, + size: { + default: '', + sm: '', + lg: '', + icon: '', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, +}); + +const WEB_ONLY_BUTTON_TEXT_CLASSNAME = 'whitespace-nowrap select-none transition-colors'; + +type ButtonProps = React.ComponentProps & VariantProps; + +const BUTTON_WEB_PROPS = { + as: 'button', +} as const; + +const Button = ({ className, variant, size, ...props }: ButtonProps) => { + return ( + + + + ); +}; + +export { Button }; +export type { ButtonProps }; diff --git a/apps/nextjs-no-rn/src/components/ui/text.tsx b/apps/nextjs-no-rn/src/components/ui/text.tsx index bf333445..f81aad31 100644 --- a/apps/nextjs-no-rn/src/components/ui/text.tsx +++ b/apps/nextjs-no-rn/src/components/ui/text.tsx @@ -1,16 +1,22 @@ 'use client'; import { Text as RNPText } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; import * as React from 'react'; import { cn } from '~/lib/utils'; const TextClassContext = React.createContext(undefined); -function Text({ className, ...props }: React.ComponentProps) { +const TEXT_WEB_PROPS = { + as: 'p', +} as const; + +function Text({ className, web, ...props }: React.ComponentProps) { const textClass = React.useContext(TextClassContext); return ( ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24e2efce..e5fa6dfc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -698,6 +698,12 @@ importers: '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion + '@rn-primitives/alert-dialog': + specifier: workspace:* + version: link:../../packages/alert-dialog + '@rn-primitives/aspect-ratio': + specifier: workspace:* + version: link:../../packages/aspect-ratio '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core @@ -921,15 +927,12 @@ importers: '@radix-ui/react-aspect-ratio': specifier: ^1.1.2 version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@rn-primitives/slot': + '@rn-primitives/core': specifier: workspace:* - version: link:../slot - '@rn-primitives/types': + version: link:../core + '@rn-primitives/utils': specifier: workspace:* - version: link:../types - react-native-web: - specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: link:../utils devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 From 9328d1266dfb2033ef0e4b2355a0d359830ac626 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 31 Mar 2025 11:46:51 -0400 Subject: [PATCH 064/106] feat(aspect-ratio): adjust package json exports --- packages/aspect-ratio/package.json | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index 1f28e6b5..eaadedf4 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/aspect-ratio": { - "import": "./dist/aspect-ratio.mjs", - "require": "./dist/aspect-ratio.js", - "types": "./dist/aspect-ratio.d.ts", - "default": "./dist/aspect-ratio.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ From 3726e520bf0f3e15af3f93a9d7116457f1157642 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Mon, 31 Mar 2025 13:18:08 -0400 Subject: [PATCH 065/106] feat: avatar v2 --- .../app/(components)/avatar.tsx | 2 +- apps/expo-nativewind/components/ui/avatar.tsx | 73 +++++--------- apps/nextjs-nativewind/src/app/page.tsx | 6 +- .../src/components/ui/avatar.tsx | 75 +++++--------- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 14 +++ .../nextjs-no-rn/src/components/ui/avatar.tsx | 34 +++++++ packages/alert-dialog/src/web/types.ts | 41 ++++---- packages/avatar/package.json | 12 +-- packages/avatar/src/base-types.ts | 14 +++ packages/avatar/src/index.ts | 4 +- .../avatar-native.native.tsx} | 98 +++++++++---------- packages/avatar/src/native/avatar-native.tsx | 24 +++++ packages/avatar/src/native/index.ts | 3 + packages/avatar/src/native/types.ts | 25 +++++ packages/avatar/src/types.ts | 18 ---- packages/avatar/src/universal/avatar.tsx | 16 +++ packages/avatar/src/universal/avatar.web.tsx | 41 ++++++++ packages/avatar/src/universal/index.ts | 3 + packages/avatar/src/universal/types.ts | 39 ++++++++ packages/avatar/src/web/avatar-web.tsx | 24 +++++ packages/avatar/src/web/avatar-web.web.tsx | 8 ++ packages/avatar/src/web/index.ts | 3 + packages/avatar/src/web/types.ts | 19 ++++ packages/avatar/tsup.config.ts | 23 ++++- packages/core/src/universal/types.ts | 7 +- pnpm-lock.yaml | 43 ++++++-- 27 files changed, 456 insertions(+), 214 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/avatar.tsx create mode 100644 packages/avatar/src/base-types.ts rename packages/avatar/src/{avatar.tsx => native/avatar-native.native.tsx} (55%) create mode 100644 packages/avatar/src/native/avatar-native.tsx create mode 100644 packages/avatar/src/native/index.ts create mode 100644 packages/avatar/src/native/types.ts delete mode 100644 packages/avatar/src/types.ts create mode 100644 packages/avatar/src/universal/avatar.tsx create mode 100644 packages/avatar/src/universal/avatar.web.tsx create mode 100644 packages/avatar/src/universal/index.ts create mode 100644 packages/avatar/src/universal/types.ts create mode 100644 packages/avatar/src/web/avatar-web.tsx create mode 100644 packages/avatar/src/web/avatar-web.web.tsx create mode 100644 packages/avatar/src/web/index.ts create mode 100644 packages/avatar/src/web/types.ts diff --git a/apps/expo-nativewind/app/(components)/avatar.tsx b/apps/expo-nativewind/app/(components)/avatar.tsx index b223be7e..fbd494c0 100644 --- a/apps/expo-nativewind/app/(components)/avatar.tsx +++ b/apps/expo-nativewind/app/(components)/avatar.tsx @@ -8,7 +8,7 @@ export default function AvatarScreen() { return ( - + ZN diff --git a/apps/expo-nativewind/components/ui/avatar.tsx b/apps/expo-nativewind/components/ui/avatar.tsx index 7810918b..b5b80fa6 100644 --- a/apps/expo-nativewind/components/ui/avatar.tsx +++ b/apps/expo-nativewind/components/ui/avatar.tsx @@ -1,57 +1,34 @@ import * as AvatarPrimitive from '@rn-primitives/avatar'; -import * as React from 'react'; import { cn } from '~/lib/utils'; -const AvatarPrimitiveRoot = AvatarPrimitive.Root; -const AvatarPrimitiveImage = AvatarPrimitive.Image; -const AvatarPrimitiveFallback = AvatarPrimitive.Fallback; +function Avatar({ className, ...props }: React.ComponentProps) { + return ( + + ); +} -const Avatar = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - -); -Avatar.displayName = AvatarPrimitiveRoot.displayName; - -const AvatarImage = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - -); -AvatarImage.displayName = AvatarPrimitiveImage.displayName; +function AvatarImage({ className, ...props }: React.ComponentProps) { + return ( + + ); +} -const AvatarFallback = ({ - ref, +function AvatarFallback({ className, ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - -); -AvatarFallback.displayName = AvatarPrimitiveFallback.displayName; +}: React.ComponentProps) { + return ( + + ); +} export { Avatar, AvatarFallback, AvatarImage }; diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 71ccf822..30aabd48 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -108,8 +108,8 @@ export default function Home() { - {/* - + + {/* @@ -224,7 +224,7 @@ const GITHUB_AVATAR_URI = 'https://github.com/mrzachnugent.png'; function AvatarExample() { return ( - + ZN diff --git a/apps/nextjs-nativewind/src/components/ui/avatar.tsx b/apps/nextjs-nativewind/src/components/ui/avatar.tsx index 245e1a28..b5b80fa6 100644 --- a/apps/nextjs-nativewind/src/components/ui/avatar.tsx +++ b/apps/nextjs-nativewind/src/components/ui/avatar.tsx @@ -1,59 +1,34 @@ -'use client'; - -import * as React from 'react'; import * as AvatarPrimitive from '@rn-primitives/avatar'; import { cn } from '~/lib/utils'; -const AvatarPrimitiveRoot = AvatarPrimitive.Root; -const AvatarPrimitiveImage = AvatarPrimitive.Image; -const AvatarPrimitiveFallback = AvatarPrimitive.Fallback; - -const Avatar = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - -); -Avatar.displayName = AvatarPrimitiveRoot.displayName; +function Avatar({ className, ...props }: React.ComponentProps) { + return ( + + ); +} -const AvatarImage = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - -); -AvatarImage.displayName = AvatarPrimitiveImage.displayName; +function AvatarImage({ className, ...props }: React.ComponentProps) { + return ( + + ); +} -const AvatarFallback = ({ - ref, +function AvatarFallback({ className, ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - -); -AvatarFallback.displayName = AvatarPrimitiveFallback.displayName; +}: React.ComponentProps) { + return ( + + ); +} export { Avatar, AvatarFallback, AvatarImage }; diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index a786da72..552963b2 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -17,6 +17,7 @@ "@rn-primitives/core": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", + "@rn-primitives/avatar": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "next": "15.2.2", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index 0934c165..097a5b2d 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -20,6 +20,7 @@ import { } from '~/components/ui/alert-dialog'; import { AspectRatio } from '~/components/ui/aspect-ratio'; import { Button } from '~/components/ui/button'; +import { Avatar, AvatarFallback, AvatarImage } from '~/components/ui/avatar'; export default function Home() { return ( @@ -34,6 +35,7 @@ export default function Home() { + ); @@ -116,3 +118,15 @@ function AspectRatioExample() { ); } + +const GITHUB_AVATAR_URI = 'https://github.com/mrzachnugent.png'; +function AvatarExample() { + return ( + + + + ZN + + + ); +} diff --git a/apps/nextjs-no-rn/src/components/ui/avatar.tsx b/apps/nextjs-no-rn/src/components/ui/avatar.tsx new file mode 100644 index 00000000..b5b80fa6 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/avatar.tsx @@ -0,0 +1,34 @@ +import * as AvatarPrimitive from '@rn-primitives/avatar'; +import { cn } from '~/lib/utils'; + +function Avatar({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function AvatarImage({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { Avatar, AvatarFallback, AvatarImage }; diff --git a/packages/alert-dialog/src/web/types.ts b/packages/alert-dialog/src/web/types.ts index 78d275f4..dfee9b57 100644 --- a/packages/alert-dialog/src/web/types.ts +++ b/packages/alert-dialog/src/web/types.ts @@ -1,16 +1,15 @@ -import type { Portal } from '@radix-ui/react-alert-dialog'; -import type { Slottable } from '@rn-primitives/types'; import type { - BaseAlertDialogActionProps, - BaseAlertDialogCancelProps, - BaseAlertDialogContentProps, - BaseAlertDialogDescriptionProps, - BaseAlertDialogOverlayProps, - BaseAlertDialogPortalProps, - BaseAlertDialogRootProps, - BaseAlertDialogTitleProps, - BaseAlertDialogTriggerProps, -} from '../base-types'; + AlertDialogActionProps, + AlertDialogCancelProps, + AlertDialogContentProps, + AlertDialogDescriptionProps, + AlertDialogOverlayProps, + AlertDialogPortalProps, + AlertDialogProps, + AlertDialogTitleProps, + AlertDialogTriggerProps, + Portal, +} from '@radix-ui/react-alert-dialog'; type ContentPropsWebOnly = React.ComponentProps<'div'>; @@ -28,23 +27,23 @@ type PortalPropsWebOnly = Pick, 'container'> type TitlePropsWebOnly = React.ComponentProps<'h1'>; -type RootProps = BaseAlertDialogRootProps & { children?: React.ReactNode }; +type RootProps = AlertDialogProps; -type ActionProps = Slottable; +type ActionProps = AlertDialogActionProps; -type CancelProps = Slottable; +type CancelProps = AlertDialogCancelProps; -type DescriptionProps = Slottable; +type DescriptionProps = AlertDialogDescriptionProps; -type OverlayProps = Slottable; +type OverlayProps = AlertDialogOverlayProps; -type PortalProps = BaseAlertDialogPortalProps & PortalPropsWebOnly; +type PortalProps = AlertDialogPortalProps; -type TitleProps = Slottable; +type TitleProps = AlertDialogTitleProps; -type TriggerProps = Slottable; +type TriggerProps = AlertDialogTriggerProps; -type ContentProps = Slottable; +type ContentProps = AlertDialogContentProps; export type { ActionProps, diff --git a/packages/avatar/package.json b/packages/avatar/package.json index 438bc2ac..c7a0f295 100644 --- a/packages/avatar/package.json +++ b/packages/avatar/package.json @@ -32,9 +32,11 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { + "@radix-ui/react-avatar": "^1.1.3", + "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", @@ -45,15 +47,11 @@ }, "peerDependencies": { "react": ">=19.0.0", - "react-native": "*", - "react-native-web": "*" + "react-native": "*" }, "peerDependenciesMeta": { "react-native": { "optional": true - }, - "react-native-web": { - "optional": true } } } diff --git a/packages/avatar/src/base-types.ts b/packages/avatar/src/base-types.ts new file mode 100644 index 00000000..7c5ebc34 --- /dev/null +++ b/packages/avatar/src/base-types.ts @@ -0,0 +1,14 @@ +import type { AvatarFallbackProps, AvatarImageProps } from '@radix-ui/react-avatar'; + +type BaseAvatarRootProps = { + alt: string; +}; + +type BaseAvatarImageProps = { + onLoadingStatusChange?: AvatarImageProps['onLoadingStatusChange']; + src: string; +}; + +type BaseAvatarFallbackProps = { delayMs?: AvatarFallbackProps['delayMs'] }; + +export type { BaseAvatarFallbackProps, BaseAvatarImageProps, BaseAvatarRootProps }; diff --git a/packages/avatar/src/index.ts b/packages/avatar/src/index.ts index 60ee76a6..295bc01e 100644 --- a/packages/avatar/src/index.ts +++ b/packages/avatar/src/index.ts @@ -1,2 +1,2 @@ -export * from './avatar'; -export * from './types'; +export { Fallback, Image, Root } from './universal'; +export type { FallbackProps, ImageProps, RootProps } from './universal/types'; diff --git a/packages/avatar/src/avatar.tsx b/packages/avatar/src/native/avatar-native.native.tsx similarity index 55% rename from packages/avatar/src/avatar.tsx rename to packages/avatar/src/native/avatar-native.native.tsx index ce569850..f77ae260 100644 --- a/packages/avatar/src/avatar.tsx +++ b/packages/avatar/src/native/avatar-native.native.tsx @@ -1,43 +1,30 @@ import { useIsomorphicLayoutEffect } from '@rn-primitives/hooks'; -import { Slot } from '@rn-primitives/slot'; +import { View, Image as RNPImage } from '@rn-primitives/core/dist/native'; import * as React from 'react'; import { type ImageErrorEventData, type ImageLoadEventData, - type ImageSourcePropType, type NativeSyntheticEvent, - Image as RNImage, - View, } from 'react-native'; -import type { FallbackProps, FallbackRef, ImageProps, ImageRef, RootProps, RootRef } from './types'; +import type { FallbackProps, ImageProps, RootProps } from './types'; -type AvatarState = 'loading' | 'error' | 'loaded'; +type AvatarState = 'idle' | 'loading' | 'error' | 'loaded'; -interface IRootContext extends RootProps { +type IRootContext = RootProps & { status: AvatarState; setStatus: (status: AvatarState) => void; -} +}; const RootContext = React.createContext(null); -const Root = ({ - ref, - asChild, - alt, - ...viewProps -}: RootProps & { - ref?: React.RefObject; -}) => { - const [status, setStatus] = React.useState('error'); - const Component = asChild ? Slot : View; +function Root({ alt, ...props }: RootProps) { + const [status, setStatus] = React.useState('idle'); return ( - + ); -}; - -Root.displayName = 'RootAvatar'; +} function useRootContext() { const context = React.useContext(RootContext); @@ -47,33 +34,30 @@ function useRootContext() { return context; } -const Image = ({ +function Image({ ref, asChild, onLoad: onLoadProps, onError: onErrorProps, onLoadingStatusChange, ...props -}: ImageProps & { - ref?: React.RefObject; -}) => { +}: ImageProps) { const { alt, setStatus, status } = useRootContext(); useIsomorphicLayoutEffect(() => { - if (isValidSource(props?.source)) { + if (status === 'idle' && isValidSource(props.src, props?.source)) { setStatus('loading'); + onLoadingStatusChange?.('loading'); } - - return () => { - setStatus('error'); - }; - }, [props?.source]); + }, [props?.source, status]); const onLoad = React.useCallback( (e: NativeSyntheticEvent) => { setStatus('loaded'); onLoadingStatusChange?.('loaded'); - onLoadProps?.(e); + if (typeof onLoadProps === 'function') { + onLoadProps(e); + } }, [onLoadProps] ); @@ -82,7 +66,9 @@ const Image = ({ (e: NativeSyntheticEvent) => { setStatus('error'); onLoadingStatusChange?.('error'); - onErrorProps?.(e); + if (typeof onErrorProps === 'function') { + onErrorProps(e); + } }, [onErrorProps] ); @@ -91,33 +77,39 @@ const Image = ({ return null; } - const Component = asChild ? Slot : RNImage; - return ; -}; - -Image.displayName = 'ImageAvatar'; + return ; +} -const Fallback = ({ - ref, - asChild, - ...props -}: FallbackProps & { - ref?: React.RefObject; -}) => { +function Fallback({ asChild, delayMs, ...props }: FallbackProps) { const { alt, status } = useRootContext(); + const [canShow, setCanShow] = React.useState(delayMs === undefined); - if (status !== 'error') { + React.useEffect(() => { + if (delayMs === undefined) { + return; + } + const timeout = setTimeout(() => { + setCanShow(true); + }, delayMs); + + return () => { + clearTimeout(timeout); + }; + }, [delayMs]); + + if (status === 'loaded' || !canShow) { return null; } - const Component = asChild ? Slot : View; - return ; -}; -Fallback.displayName = 'FallbackAvatar'; + return ; +} export { Fallback, Image, Root }; -function isValidSource(source?: ImageSourcePropType) { +function isValidSource(src?: ImageProps['src'], source?: ImageProps['source']) { + if (src) { + return true; + } if (!source) { return false; } @@ -128,5 +120,5 @@ function isValidSource(source?: ImageSourcePropType) { if (Array.isArray(source)) { return source.some((source) => !!source.uri); } - return !!source.uri; + return !!(source as any)?.uri; } diff --git a/packages/avatar/src/native/avatar-native.tsx b/packages/avatar/src/native/avatar-native.tsx new file mode 100644 index 00000000..f7c8434c --- /dev/null +++ b/packages/avatar/src/native/avatar-native.tsx @@ -0,0 +1,24 @@ +import type { FallbackProps, ImageProps, RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/avatar/native is only supported on native.'); + } + return null; +} + +function Image(props: ImageProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Image` from @rn-primitives/avatar/native is only supported on native.'); + } + return null; +} + +function Fallback(props: FallbackProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Fallback` from @rn-primitives/avatar/native is only supported on native.'); + } + return null; +} + +export { Root, Image, Fallback }; diff --git a/packages/avatar/src/native/index.ts b/packages/avatar/src/native/index.ts new file mode 100644 index 00000000..55b05613 --- /dev/null +++ b/packages/avatar/src/native/index.ts @@ -0,0 +1,3 @@ +export { Fallback, Image, Root } from './avatar-native'; + +export type { FallbackProps, ImageProps, RootProps } from './types'; diff --git a/packages/avatar/src/native/types.ts b/packages/avatar/src/native/types.ts new file mode 100644 index 00000000..dd34b2e2 --- /dev/null +++ b/packages/avatar/src/native/types.ts @@ -0,0 +1,25 @@ +import type { ImageProps as RNPImageProps, ViewProps } from '@rn-primitives/core/dist/native'; +import type { + BaseAvatarFallbackProps, + BaseAvatarImageProps, + BaseAvatarRootProps, +} from '../base-types'; + +type RootPropsNativeOnly = ViewProps; +type ImagePropsNativeOnly = RNPImageProps; +type FallbackPropsNativeOnly = ViewProps; + +type RootProps = RootPropsNativeOnly & BaseAvatarRootProps; +type ImageProps = ImagePropsNativeOnly & { + onLoadingStatusChange?: BaseAvatarImageProps['onLoadingStatusChange']; +}; +type FallbackProps = FallbackPropsNativeOnly & BaseAvatarFallbackProps; + +export type { + FallbackProps, + FallbackPropsNativeOnly, + ImageProps, + ImagePropsNativeOnly, + RootProps, + RootPropsNativeOnly, +}; diff --git a/packages/avatar/src/types.ts b/packages/avatar/src/types.ts deleted file mode 100644 index 78071019..00000000 --- a/packages/avatar/src/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { SlottableImageProps, SlottableViewProps, ViewRef } from '@rn-primitives/types'; -import type { Image } from 'react-native'; - -type RootProps = SlottableViewProps & { - alt: string; -}; - -type ImageProps = Omit & { - onLoadingStatusChange?: (status: 'error' | 'loaded') => void; -}; - -type FallbackProps = SlottableViewProps; - -type RootRef = ViewRef; -type ImageRef = React.ElementRef; -type FallbackRef = ViewRef; - -export type { FallbackProps, FallbackRef, ImageProps, ImageRef, RootProps, RootRef }; diff --git a/packages/avatar/src/universal/avatar.tsx b/packages/avatar/src/universal/avatar.tsx new file mode 100644 index 00000000..8e119a2d --- /dev/null +++ b/packages/avatar/src/universal/avatar.tsx @@ -0,0 +1,16 @@ +import { Fallback as FallbackNative, Image as ImageNative, Root as RootNative } from '../native'; +import type { FallbackProps, ImageProps, RootProps } from './types'; + +function Root({ web: _web, native, ...props }: RootProps) { + return ; +} + +function Image({ web: _web, native, ...props }: ImageProps) { + return ; +} + +function Fallback({ web: _web, native, ...props }: FallbackProps) { + return ; +} + +export { Fallback, Image, Root }; diff --git a/packages/avatar/src/universal/avatar.web.tsx b/packages/avatar/src/universal/avatar.web.tsx new file mode 100644 index 00000000..aa06f67d --- /dev/null +++ b/packages/avatar/src/universal/avatar.web.tsx @@ -0,0 +1,41 @@ +import { Image as RNPImage, View } from '@rn-primitives/core'; +import { Fallback as FallbackWeb, Image as ImageWeb, Root as RootWeb } from '../web'; +import type { FallbackProps, ImageProps, RootProps } from './types'; + +function Root({ web, native: _native, style, ...props }: RootProps) { + if (style) { + return ( + + + + ); + } + + return ; +} + +function Fallback({ web, native: _native, style, ...props }: FallbackProps) { + if (style) { + return ( + + + + ); + } + + return ; +} + +function Image({ web, native: _native, style, ...props }: ImageProps) { + if (style) { + return ( + + + + ); + } + + return ; +} + +export { Fallback, Image, Root }; diff --git a/packages/avatar/src/universal/index.ts b/packages/avatar/src/universal/index.ts new file mode 100644 index 00000000..7ca4c696 --- /dev/null +++ b/packages/avatar/src/universal/index.ts @@ -0,0 +1,3 @@ +export { Fallback, Image, Root } from './avatar'; + +export type { FallbackProps, ImageProps, RootProps } from './types'; diff --git a/packages/avatar/src/universal/types.ts b/packages/avatar/src/universal/types.ts new file mode 100644 index 00000000..10765ad4 --- /dev/null +++ b/packages/avatar/src/universal/types.ts @@ -0,0 +1,39 @@ +import type { ImagePropsUniversal, ViewPropsUniversal } from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { + BaseAvatarFallbackProps, + BaseAvatarImageProps, + BaseAvatarRootProps, +} from '../base-types'; +import type { + FallbackPropsNativeOnly, + ImagePropsNativeOnly, + RootPropsNativeOnly, +} from '../native/types'; +import type { FallbackPropsWebOnly, ImagePropsWebOnly, RootPropsWebOnly } from '../web/types'; + +type FallbackProps = Prettify< + BaseAvatarFallbackProps & + ViewPropsUniversal & { + native?: FallbackPropsNativeOnly; + web?: FallbackPropsWebOnly; + } +>; + +type RootProps = Prettify< + BaseAvatarRootProps & + ViewPropsUniversal & { + native?: RootPropsNativeOnly; + web?: RootPropsWebOnly; + } +>; + +type ImageProps = Prettify< + BaseAvatarImageProps & + ImagePropsUniversal & { + native?: ImagePropsNativeOnly; + web?: ImagePropsWebOnly; + } +>; + +export type { FallbackProps, ImageProps, RootProps }; diff --git a/packages/avatar/src/web/avatar-web.tsx b/packages/avatar/src/web/avatar-web.tsx new file mode 100644 index 00000000..0c2263b9 --- /dev/null +++ b/packages/avatar/src/web/avatar-web.tsx @@ -0,0 +1,24 @@ +import type { Avatar, AvatarFallback, AvatarImage } from '@radix-ui/react-avatar'; + +const Root = (() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/avatar/web is only supported on web.'); + } + return null; +}) as unknown as typeof Avatar; + +const Image = (() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Image` from @rn-primitives/avatar/web is only supported on web.'); + } + return null; +}) as unknown as typeof AvatarImage; + +const Fallback = (() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Fallback` from @rn-primitives/avatar/web is only supported on web.'); + } + return null; +}) as unknown as typeof AvatarFallback; + +export { Fallback, Image, Root }; diff --git a/packages/avatar/src/web/avatar-web.web.tsx b/packages/avatar/src/web/avatar-web.web.tsx new file mode 100644 index 00000000..a810aef3 --- /dev/null +++ b/packages/avatar/src/web/avatar-web.web.tsx @@ -0,0 +1,8 @@ +import { Avatar, AvatarFallback, AvatarImage } from '@radix-ui/react-avatar'; +import { withRNPrimitives } from '@rn-primitives/utils'; + +const Root = withRNPrimitives(Avatar, 'view'); +const Image = withRNPrimitives(AvatarImage, 'image'); +const Fallback = withRNPrimitives(AvatarFallback, 'view'); + +export { Fallback, Image, Root }; diff --git a/packages/avatar/src/web/index.ts b/packages/avatar/src/web/index.ts new file mode 100644 index 00000000..42ec91ce --- /dev/null +++ b/packages/avatar/src/web/index.ts @@ -0,0 +1,3 @@ +export { Fallback, Image, Root } from './avatar-web'; + +export type { FallbackProps, ImageProps, RootProps } from './types'; diff --git a/packages/avatar/src/web/types.ts b/packages/avatar/src/web/types.ts new file mode 100644 index 00000000..0b4faedc --- /dev/null +++ b/packages/avatar/src/web/types.ts @@ -0,0 +1,19 @@ +import type { AvatarFallbackProps, AvatarImageProps, AvatarProps } from '@radix-ui/react-avatar'; + +type RootProps = AvatarProps; +type RootPropsWebOnly = React.ComponentProps<'span'>; + +type FallbackProps = AvatarFallbackProps; +type FallbackPropsWebOnly = React.ComponentProps<'span'>; + +type ImageProps = AvatarImageProps; +type ImagePropsWebOnly = React.ComponentProps<'img'>; + +export type { + FallbackProps, + FallbackPropsWebOnly, + ImageProps, + ImagePropsWebOnly, + RootProps, + RootPropsWebOnly, +}; diff --git a/packages/avatar/tsup.config.ts b/packages/avatar/tsup.config.ts index dd69d909..5c9328ad 100644 --- a/packages/avatar/tsup.config.ts +++ b/packages/avatar/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/avatar.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/avatar.tsx', + 'src/universal/avatar.web.tsx', + 'src/native/index.ts', + 'src/native/avatar-native.tsx', + 'src/native/avatar-native.native.tsx', + 'src/web/index.ts', + 'src/web/avatar-web.tsx', + 'src/web/avatar-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './avatar'], + external: [ + 'react', + './universal', + './avatar', + '../native', + './avatar-native', + '../web', + './avatar-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/packages/core/src/universal/types.ts b/packages/core/src/universal/types.ts index ed5452f6..92db0088 100644 --- a/packages/core/src/universal/types.ts +++ b/packages/core/src/universal/types.ts @@ -38,10 +38,11 @@ type ImagePropsUniversal = Prettify< className?: string; } > & { - src: string; role?: RNRole; - asChild?: boolean | undefined; -}; +} & ( + | { asChild?: undefined | false; src: string } + | { asChild: true; children: React.ReactNode; src?: string } + ); type ImageProps = ImagePropsUniversal & { native?: ImagePropsNative; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5fa6dfc..5f7b7dc5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -704,6 +704,9 @@ importers: '@rn-primitives/aspect-ratio': specifier: workspace:* version: link:../../packages/aspect-ratio + '@rn-primitives/avatar': + specifier: workspace:* + version: link:../../packages/avatar '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core @@ -952,18 +955,21 @@ importers: packages/avatar: dependencies: + '@radix-ui/react-avatar': + specifier: ^1.1.3 + version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rn-primitives/core': + specifier: workspace:* + version: link:../core '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot '@rn-primitives/types': specifier: workspace:* version: link:../types - react-native-web: - specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -3351,6 +3357,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-avatar@1.1.3': + resolution: {integrity: sha512-Paen00T4P8L8gd9bNsRMw7Cbaz85oxiv+hzomsRZgFm2byltPFDtfcoqlWJ8GyZlIBWgLssJlzLCnKU0G0302g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-checkbox@1.1.4': resolution: {integrity: sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==} peerDependencies: @@ -10673,6 +10692,18 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-avatar@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-checkbox@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 From a720b3df4406f4fbb7b5f7e6673a530209060537 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 2 Apr 2025 14:28:12 -0400 Subject: [PATCH 066/106] chore: update deps for xcode compatibility --- apps/expo-nativewind/package.json | 22 +- apps/expo-stylesheet/package.json | 22 +- apps/nextjs-nativewind/package.json | 2 +- packages/accordion/package.json | 2 +- packages/alert-dialog/package.json | 2 +- packages/aspect-ratio/package.json | 2 +- packages/avatar/package.json | 2 +- packages/checkbox/package.json | 2 +- packages/collapsible/package.json | 2 +- packages/context-menu/package.json | 2 +- packages/core/package.json | 2 +- packages/dialog/package.json | 2 +- packages/dropdown-menu/package.json | 2 +- packages/hooks/package.json | 2 +- packages/hover-card/package.json | 2 +- packages/label/package.json | 2 +- packages/menubar/package.json | 2 +- packages/navigation-menu/package.json | 2 +- packages/popover/package.json | 2 +- packages/portal/package.json | 2 +- packages/progress/package.json | 2 +- packages/radio-group/package.json | 2 +- packages/select/package.json | 2 +- packages/separator/package.json | 2 +- packages/slider/package.json | 2 +- packages/slot/package.json | 2 +- packages/switch/package.json | 2 +- packages/table/package.json | 2 +- packages/tabs/package.json | 2 +- packages/toast/package.json | 2 +- packages/toggle-group/package.json | 2 +- packages/toggle/package.json | 2 +- packages/toolbar/package.json | 2 +- packages/tooltip/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- pnpm-lock.yaml | 1082 +++++++++++++------------ 37 files changed, 630 insertions(+), 564 deletions(-) diff --git a/apps/expo-nativewind/package.json b/apps/expo-nativewind/package.json index b0bfcd46..796a542f 100644 --- a/apps/expo-nativewind/package.json +++ b/apps/expo-nativewind/package.json @@ -12,7 +12,7 @@ "clean": "rm -rf .expo node_modules ios android" }, "dependencies": { - "@react-native-async-storage/async-storage": "1.23.1", + "@react-native-async-storage/async-storage": "2.1.2", "@react-navigation/native": "^7.0.0", "@rn-primitives/accordion": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", @@ -48,21 +48,21 @@ "@rn-primitives/utils": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "expo": "53.0.0-canary-20250306-d9d3e02", - "expo-linking": "7.1.0-canary-20250306-d9d3e02", - "expo-navigation-bar": "5.0.0-canary-20250306-d9d3e02", - "expo-router": "4.0.18-canary-20250306-d9d3e02", - "expo-splash-screen": "0.29.23-canary-20250306-d9d3e02", - "expo-status-bar": "2.0.2-canary-20250306-d9d3e02", - "expo-system-ui": "5.0.0-canary-20250306-d9d3e02", + "expo": "53.0.0-canary-20250402-161f57b", + "expo-linking": "7.1.0-canary-20250402-161f57b", + "expo-navigation-bar": "5.0.0-canary-20250402-161f57b", + "expo-router": "5.0.0-canary-20250402-161f57b", + "expo-splash-screen": "0.29.23-canary-20250402-161f57b", + "expo-status-bar": "2.0.2-canary-20250402-161f57b", + "expo-system-ui": "5.0.0-canary-20250402-161f57b", "lucide-react-native": "^0.482.0", "nativewind": "^4.1.23", "react": "19.0.0", "react-dom": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "react-native-reanimated": "~3.17.1", - "react-native-safe-area-context": "5.2.0", - "react-native-screens": "~4.9.2", + "react-native-safe-area-context": "5.3.0", + "react-native-screens": "~4.10.0", "react-native-svg": "15.11.2", "react-native-web": "~0.19.13", "tailwind-merge": "^3.0.2", diff --git a/apps/expo-stylesheet/package.json b/apps/expo-stylesheet/package.json index 478cba95..c5a98ff6 100644 --- a/apps/expo-stylesheet/package.json +++ b/apps/expo-stylesheet/package.json @@ -12,7 +12,7 @@ "clean": "rm -rf .expo node_modules" }, "dependencies": { - "@react-native-async-storage/async-storage": "1.23.1", + "@react-native-async-storage/async-storage": "2.1.2", "@react-navigation/native": "^7.0.0", "@rn-primitives/accordion": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", @@ -46,20 +46,20 @@ "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", - "expo": "53.0.0-canary-20250306-d9d3e02", - "expo-linking": "7.1.0-canary-20250306-d9d3e02", - "expo-navigation-bar": "5.0.0-canary-20250306-d9d3e02", - "expo-router": "4.0.18-canary-20250306-d9d3e02", - "expo-splash-screen": "0.29.23-canary-20250306-d9d3e02", - "expo-status-bar": "2.0.2-canary-20250306-d9d3e02", - "expo-system-ui": "5.0.0-canary-20250306-d9d3e02", + "expo": "53.0.0-canary-20250402-161f57b", + "expo-linking": "7.1.0-canary-20250402-161f57b", + "expo-navigation-bar": "5.0.0-canary-20250402-161f57b", + "expo-router": "5.0.0-canary-20250402-161f57b", + "expo-splash-screen": "0.29.23-canary-20250402-161f57b", + "expo-status-bar": "2.0.2-canary-20250402-161f57b", + "expo-system-ui": "5.0.0-canary-20250402-161f57b", "lucide-react-native": "^0.482.0", "react": "19.0.0", "react-dom": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "react-native-reanimated": "~3.17.1", - "react-native-safe-area-context": "5.2.0", - "react-native-screens": "~4.9.2", + "react-native-safe-area-context": "5.3.0", + "react-native-screens": "~4.10.0", "react-native-svg": "15.11.2", "react-native-web": "~0.19.13", "zustand": "^5.0.3" diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index d924ac5a..a36f8639 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -50,7 +50,7 @@ "next": "15.2.2", "react": "19.0.0", "react-dom": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "react-native-svg": "15.11.2", "react-native-web": "~0.19.13", "tailwind-merge": "^3.0.2", diff --git a/packages/accordion/package.json b/packages/accordion/package.json index e993af82..9508556a 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -48,7 +48,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index 9fc5893c..f9cecfed 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -49,7 +49,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index eaadedf4..9d2082d6 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -46,7 +46,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/avatar/package.json b/packages/avatar/package.json index c7a0f295..a9973430 100644 --- a/packages/avatar/package.json +++ b/packages/avatar/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json index 95e8cfd9..af032874 100644 --- a/packages/checkbox/package.json +++ b/packages/checkbox/package.json @@ -41,7 +41,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/collapsible/package.json b/packages/collapsible/package.json index e5f0e447..3319d304 100644 --- a/packages/collapsible/package.json +++ b/packages/collapsible/package.json @@ -41,7 +41,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/context-menu/package.json b/packages/context-menu/package.json index 12ffaeb9..7e348c57 100644 --- a/packages/context-menu/package.json +++ b/packages/context-menu/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 6bd520e2..51103feb 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -54,7 +54,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/dialog/package.json b/packages/dialog/package.json index ad094267..95bbd347 100644 --- a/packages/dialog/package.json +++ b/packages/dialog/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/dropdown-menu/package.json b/packages/dropdown-menu/package.json index af09fd89..c1f6598e 100644 --- a/packages/dropdown-menu/package.json +++ b/packages/dropdown-menu/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 462a9bbe..4e0c126f 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -32,7 +32,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/hover-card/package.json b/packages/hover-card/package.json index 8d6464de..9e908b13 100644 --- a/packages/hover-card/package.json +++ b/packages/hover-card/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/label/package.json b/packages/label/package.json index 75954731..9d8f304e 100644 --- a/packages/label/package.json +++ b/packages/label/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/menubar/package.json b/packages/menubar/package.json index 0ed625a7..52a2ab50 100644 --- a/packages/menubar/package.json +++ b/packages/menubar/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/navigation-menu/package.json b/packages/navigation-menu/package.json index fe96e233..0c717d66 100644 --- a/packages/navigation-menu/package.json +++ b/packages/navigation-menu/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/popover/package.json b/packages/popover/package.json index 71f229c8..15b8dc33 100644 --- a/packages/popover/package.json +++ b/packages/popover/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/portal/package.json b/packages/portal/package.json index e5eaa127..4f0b532b 100644 --- a/packages/portal/package.json +++ b/packages/portal/package.json @@ -32,7 +32,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/progress/package.json b/packages/progress/package.json index 533c3052..bb84d102 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/radio-group/package.json b/packages/radio-group/package.json index 6e6e8dfc..695fea47 100644 --- a/packages/radio-group/package.json +++ b/packages/radio-group/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/select/package.json b/packages/select/package.json index a4c578fd..612f0810 100644 --- a/packages/select/package.json +++ b/packages/select/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/separator/package.json b/packages/separator/package.json index 4b075c8b..7c774f45 100644 --- a/packages/separator/package.json +++ b/packages/separator/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/slider/package.json b/packages/slider/package.json index 597ecf1c..a89b3eb8 100644 --- a/packages/slider/package.json +++ b/packages/slider/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/slot/package.json b/packages/slot/package.json index f0522dde..6ccf414c 100644 --- a/packages/slot/package.json +++ b/packages/slot/package.json @@ -29,7 +29,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/switch/package.json b/packages/switch/package.json index 5b3858d4..ddabb53d 100644 --- a/packages/switch/package.json +++ b/packages/switch/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/table/package.json b/packages/table/package.json index 77c90e0a..a53b4e0f 100644 --- a/packages/table/package.json +++ b/packages/table/package.json @@ -39,7 +39,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/tabs/package.json b/packages/tabs/package.json index 3ffe79e7..3dfdcc15 100644 --- a/packages/tabs/package.json +++ b/packages/tabs/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toast/package.json b/packages/toast/package.json index c16bb0e0..63a60d99 100644 --- a/packages/toast/package.json +++ b/packages/toast/package.json @@ -39,7 +39,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index b88a3864..58d6b50c 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -41,7 +41,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 1060b228..8bb8349f 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toolbar/package.json b/packages/toolbar/package.json index d00ad0cc..ad7150d8 100644 --- a/packages/toolbar/package.json +++ b/packages/toolbar/package.json @@ -41,7 +41,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json index 831fed43..6a942c09 100644 --- a/packages/tooltip/package.json +++ b/packages/tooltip/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/types/package.json b/packages/types/package.json index c617b2ec..e72f64ac 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -29,7 +29,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/utils/package.json b/packages/utils/package.json index 96378ac5..bbdf5cd9 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -29,7 +29,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.78.0", + "react-native": "0.79.0-rc.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5f7b7dc5..3a4d8344 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -189,11 +189,11 @@ importers: apps/expo-nativewind: dependencies: '@react-native-async-storage/async-storage': - specifier: 1.23.1 - version: 1.23.1(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + specifier: 2.1.2 + version: 2.1.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) '@react-navigation/native': specifier: ^7.0.0 - version: 7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 7.0.15(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -297,32 +297,32 @@ importers: specifier: ^2.1.1 version: 2.1.1 expo: - specifier: 53.0.0-canary-20250306-d9d3e02 - version: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 53.0.0-canary-20250402-161f57b + version: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: - specifier: 7.1.0-canary-20250306-d9d3e02 - version: 7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 7.1.0-canary-20250402-161f57b + version: 7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: - specifier: 5.0.0-canary-20250306-d9d3e02 - version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.0.0-canary-20250402-161f57b + version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: - specifier: 4.0.18-canary-20250306-d9d3e02 - version: 4.0.18-canary-20250306-d9d3e02(expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.0.0-canary-20250402-161f57b + version: 5.0.0-canary-20250402-161f57b(expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: - specifier: 0.29.23-canary-20250306-d9d3e02 - version: 0.29.23-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) + specifier: 0.29.23-canary-20250402-161f57b + version: 0.29.23-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: - specifier: 2.0.2-canary-20250306-d9d3e02 - version: 2.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 2.0.2-canary-20250402-161f57b + version: 2.0.2-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: - specifier: 5.0.0-canary-20250306-d9d3e02 - version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + specifier: 5.0.0-canary-20250402-161f57b + version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: specifier: ^0.482.0 - version: 0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + version: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) react: specifier: 19.0.0 version: 19.0.0 @@ -330,20 +330,20 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) react-native-reanimated: specifier: ~3.17.1 - version: 3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-safe-area-context: - specifier: 5.2.0 - version: 5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.3.0 + version: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: - specifier: ~4.9.2 - version: 4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: ~4.10.0 + version: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: specifier: 15.11.2 - version: 15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: ~0.19.13 version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -373,11 +373,11 @@ importers: apps/expo-stylesheet: dependencies: '@react-native-async-storage/async-storage': - specifier: 1.23.1 - version: 1.23.1(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + specifier: 2.1.2 + version: 2.1.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) '@react-navigation/native': specifier: ^7.0.0 - version: 7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 7.0.15(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -475,29 +475,29 @@ importers: specifier: workspace:* version: link:../../packages/utils expo: - specifier: 53.0.0-canary-20250306-d9d3e02 - version: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 53.0.0-canary-20250402-161f57b + version: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: - specifier: 7.1.0-canary-20250306-d9d3e02 - version: 7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 7.1.0-canary-20250402-161f57b + version: 7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: - specifier: 5.0.0-canary-20250306-d9d3e02 - version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.0.0-canary-20250402-161f57b + version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: - specifier: 4.0.18-canary-20250306-d9d3e02 - version: 4.0.18-canary-20250306-d9d3e02(expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.0.0-canary-20250402-161f57b + version: 5.0.0-canary-20250402-161f57b(expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: - specifier: 0.29.23-canary-20250306-d9d3e02 - version: 0.29.23-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) + specifier: 0.29.23-canary-20250402-161f57b + version: 0.29.23-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: - specifier: 2.0.2-canary-20250306-d9d3e02 - version: 2.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 2.0.2-canary-20250402-161f57b + version: 2.0.2-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: - specifier: 5.0.0-canary-20250306-d9d3e02 - version: 5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + specifier: 5.0.0-canary-20250402-161f57b + version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: specifier: ^0.482.0 - version: 0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -505,20 +505,20 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) react-native-reanimated: specifier: ~3.17.1 - version: 3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-safe-area-context: - specifier: 5.2.0 - version: 5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.3.0 + version: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: - specifier: ~4.9.2 - version: 4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: ~4.10.0 + version: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: specifier: 15.11.2 - version: 15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: ~0.19.13 version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -645,10 +645,10 @@ importers: version: 2.1.1 lucide-react-native: specifier: ^0.482.0 - version: 0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + version: 4.1.23(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) next: specifier: 15.2.2 version: 15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -659,11 +659,11 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) react-native-svg: specifier: 15.11.2 - version: 15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: ~0.19.13 version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -882,8 +882,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -919,8 +919,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -947,8 +947,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -981,8 +981,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1015,8 +1015,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1049,8 +1049,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1089,8 +1089,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1114,7 +1114,7 @@ importers: version: link:../utils react-native-reanimated: specifier: '*' - version: 3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1126,8 +1126,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1163,8 +1163,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1203,8 +1203,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1228,8 +1228,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1268,8 +1268,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1299,8 +1299,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1339,8 +1339,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1379,8 +1379,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1416,8 +1416,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1441,8 +1441,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1472,8 +1472,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1503,8 +1503,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1540,8 +1540,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1571,8 +1571,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1602,8 +1602,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1627,8 +1627,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1658,8 +1658,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1686,8 +1686,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1717,8 +1717,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1745,8 +1745,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1776,8 +1776,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1810,8 +1810,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1844,8 +1844,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1881,8 +1881,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1903,8 +1903,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -1921,8 +1921,8 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.78.0 - version: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0-rc.0 + version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) @@ -2923,64 +2923,64 @@ packages: cpu: [x64] os: [win32] - '@expo/cli@1.0.0-canary-20250306-d9d3e02': - resolution: {integrity: sha512-Pp7PgZeG7O9Ou5d2W8vf3gwsUrIrFIw9VIycwJf37xplOFS/e/imenbR191N/FATxU9bzFThg0GN6p8fSYdeNA==} + '@expo/cli@1.0.0-canary-20250402-161f57b': + resolution: {integrity: sha512-PyEOmqhtSzPTuAUWSqix6ArhC2ndSejHKLCSfsHF1+3Wh7276J/3QtlNAZ5+7KLDEr4EK+GFhtLH4r9Pbc9fhQ==} hasBin: true '@expo/code-signing-certificates@0.0.5': resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} - '@expo/config-plugins@9.1.0-canary-20250306-d9d3e02': - resolution: {integrity: sha512-8v0v67OV6jcSBUOocyc0ELo66DkZks1wfT1FPHPLZz43J/oOrptAdm71ZKvHweSdHkbOgkS6DyciKdWnjcK6gg==} + '@expo/config-plugins@9.1.0-canary-20250402-161f57b': + resolution: {integrity: sha512-Sbnh2oZOoBI1TpCD7eFTczH903lFXRS4YM8q0wE03oyWRM//EM2kHTDnNtkSIsorjWdVT5yBM7MlSTwbS3/wxg==} - '@expo/config-types@53.0.0-canary-20250306-d9d3e02': - resolution: {integrity: sha512-Kna72gQozGDCeCnayyKksA8XDdGozvK7oL9Yp0/DdjCwZgut3uXE38aN9Agmi5dYK6XzbakpPUimSxNU/i083w==} + '@expo/config-types@53.0.0-canary-20250402-161f57b': + resolution: {integrity: sha512-nfHbNvJKzux66DoS/HzLpTbLbwnnxs6t9qdipVptpYhT86kaaiCzN78tT0E9PRZiJX9VZnWcADt1vdEWR+IlHw==} - '@expo/config@11.0.0-canary-20250306-d9d3e02': - resolution: {integrity: sha512-f/mkS3sYTYjo67MU3daDfH5JOYVXFcOg8gcfgbo+QsFiRJpKD72uTit/mAL+59bvPxsP38KKQJNAzJ1Yey9q4w==} + '@expo/config@11.0.0-canary-20250402-161f57b': + resolution: {integrity: sha512-86HcVliFFaisxzLzOEKy9wnnfgYXxy6JxKUaEnHgmnfv7PDmNBOBFXaVCHIiS4r0hEOHX4KpIJQu38/5/UTxdQ==} '@expo/devcert@1.1.4': resolution: {integrity: sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==} - '@expo/env@1.0.1-canary-20250306-d9d3e02': - resolution: {integrity: sha512-9+ZxeROpsPS/3K51uUfXyoXw8Y3pORT+u9K5rkhkOeeNRTE7FR8f4NFgDWOk7qle2NkG6/JTnE2QbJSWhqfyUQ==} + '@expo/env@1.0.1-canary-20250402-161f57b': + resolution: {integrity: sha512-ikeBNaSOK+ext31nHSMaz7olzIgmagk8CIMRDDLNUw8i27MDY6Erajl8SzKGZh2xDKooDqiqO1ZZ36Ep4fgu4A==} - '@expo/fingerprint@0.11.12-canary-20250306-d9d3e02': - resolution: {integrity: sha512-77hVUZqByM7bIMTYy4vf0canNEuPlp1mjKn9T8VnMMAkiJMJJGi6hMRyU0nsnJM8x5NtZD/L9DgoKhK8iYy9jw==} + '@expo/fingerprint@0.11.12-canary-20250402-161f57b': + resolution: {integrity: sha512-zwoVnzKssT5UVeDkHU/nUrxBBg8wUVOIEoG6035CY9f7ty0J95MS5ZuqpLGi6obL98GOvJp/l1GsAIvHy3fkYw==} hasBin: true - '@expo/image-utils@0.6.6-canary-20250306-d9d3e02': - resolution: {integrity: sha512-2Sqi+10F8uKNYWZMDxvWP1cXUmdpRq50NYTBTV0IgHDsBc+bcJ+fWYe/4NmF8aukY/MgB0BAycIiDBxXn5JZOg==} + '@expo/image-utils@0.6.6-canary-20250402-161f57b': + resolution: {integrity: sha512-jSep2nlDG1wpJQk1rcav3PBYWrdNzk55b9S4s22RIoqwFZqetNhvp85aUyasUgcmrAD5tW3nTibDrnkZVBhNpg==} - '@expo/json-file@9.0.3-canary-20250306-d9d3e02': - resolution: {integrity: sha512-9qrcHOEUqoesMRcjCxnxISvYT6XmKS0k30yBaVOMJ7UN021kgQbe5KT58Nf6kv8tkZ90AouAI1i/XqlBbbOayw==} + '@expo/json-file@9.0.3-canary-20250402-161f57b': + resolution: {integrity: sha512-7a9tHcd4R2Ie/sTwAD4n4QYSnb2QJAJrcMqtM6xaooYGwlQBJoE6PwEe9kIDt57TK9/jUW0M/qD7H8BF6p8x6Q==} - '@expo/metro-config@0.20.0-canary-20250306-d9d3e02': - resolution: {integrity: sha512-LRQroidJZCRsdmIQueCZJ9CeDeDsNGMrhB7NrrljmkMtQW2VKoBcugM+DDY+lLADr9S3a5JRl74new6HQDkWZQ==} + '@expo/metro-config@0.20.0-canary-20250402-161f57b': + resolution: {integrity: sha512-w35XVMWRPSPEXAoJsWqhUxG800Whgaaos2PYl+MePccU+Sg8CNL4KWekyJtPuKxYTYC1GDRABackOFHh31vqmQ==} - '@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02': - resolution: {integrity: sha512-38Z8BacXSNzHGW5FLd/2tcFzKiCS9k7gkCMP7OwibqzBKHEdGdG64NYO23sdMXpi/ijaqPxkrLxtGGUwMLEphg==} + '@expo/metro-runtime@5.0.0-canary-20250402-161f57b': + resolution: {integrity: sha512-CYtALRzjjflgOPjoZqgsRaGo7Jwp5queMSnLk5kzKz9M6qnZNuBqA3B51dS5KaDxcXxEuBkU5VQwzFwTMEpxqg==} peerDependencies: react-native: '*' - '@expo/osascript@2.1.7-canary-20250306-d9d3e02': - resolution: {integrity: sha512-84GY3VyI/KSSixjAVtQtZHTZ6qb6naGrv0CLFLOSxTIfYEUrdkutxMIAxxIPawsTWzZdTh3Ph8ZR8jSdrfTYjw==} + '@expo/osascript@2.1.7-canary-20250402-161f57b': + resolution: {integrity: sha512-TeuGclF0v3b1O8uWjFSUGpmhcIdKQRzplm7z4w/v7UUZrpQJMjO0t9YG+q+ouwyXsWXb0+YcpiCgEf0++a7Tcw==} engines: {node: '>=12'} - '@expo/package-manager@1.6.2-canary-20250306-d9d3e02': - resolution: {integrity: sha512-sF4tK3fHluqXJSzeF4tfJNLqCxLrLGigu8f9BDFZsUnlp0vjOViV0ymEJPBcx6//pgCPTuCWkDoGsj5UyYwbcQ==} + '@expo/package-manager@1.6.2-canary-20250402-161f57b': + resolution: {integrity: sha512-nAri+muAmeUBLk4JOnRwpiWfHvf6nA5C4rsJpTwvFfMKukF3RuaHUo+k4/Bw/183DJGVtc8U9ziyuxEoY0oRCg==} - '@expo/plist@0.2.3-canary-20250306-d9d3e02': - resolution: {integrity: sha512-2ImG5M36tAuKH5YQe7bvtzjQdkCakGmjsyj62RCWwrQ4TsZW7Z0DUHrjMl3GLt7hoy/tzYFGNWLQ7/sASDECyw==} + '@expo/plist@0.2.3-canary-20250402-161f57b': + resolution: {integrity: sha512-jKrpo/JsOqwYi/rzlxW0Q8r09/sOALzxpwzUKb7mLQYV1OiPunu9rv97p0tCGF+6TtsNu0BVSiFrkAO3gs0YfA==} - '@expo/prebuild-config@9.0.0-canary-20250306-d9d3e02': - resolution: {integrity: sha512-7K7NdT/t8GaYHC30EydZQV63jrFLSGYrCxtPIp9VHqjiqInXZlUOoe6x/TnCncWPTMOirXSW1S8OZw4t15gKAg==} + '@expo/prebuild-config@9.0.0-canary-20250402-161f57b': + resolution: {integrity: sha512-jlDARAkBWYS3Hpx4CBqptbQWNQb6jvwpgPwaz6ku6sSY4ylQTzlbe22rtc/gquViJDhB8HzGLPNH3lRYJRTk6A==} '@expo/sdk-runtime-versions@1.0.0': resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - '@expo/server@0.5.2-canary-20250306-d9d3e02': - resolution: {integrity: sha512-aSE62Tn7povD+Ija0EtiJ9zY6wC1DZBIu2ntvVsZHw6Rh5HBUVFrYoxfPl/jRVZn4u3kai1kF1u2Bkvkw9EXxw==} + '@expo/server@0.6.0-canary-20250402-161f57b': + resolution: {integrity: sha512-teB5rLoVS3vYUdDAZceLQxqjHPkIpuOVYkk8svE9oink4XT84098MTH6C1geTsz64wbGcnDtJkx2WdFIUE+hYQ==} '@expo/spawn-async@1.7.2': resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} @@ -3903,61 +3903,69 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@react-native-async-storage/async-storage@1.23.1': - resolution: {integrity: sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA==} + '@react-native-async-storage/async-storage@2.1.2': + resolution: {integrity: sha512-dvlNq4AlGWC+ehtH12p65+17V0Dx7IecOWl6WanF2ja38O1Dcjjvn7jVzkUHJ5oWkQBlyASurTPlTHgKXyYiow==} peerDependencies: - react-native: ^0.0.0-0 || >=0.60 <1.0 + react-native: ^0.0.0-0 || >=0.65 <1.0 - '@react-native/assets-registry@0.78.0': - resolution: {integrity: sha512-PPHlTRuP9litTYkbFNkwveQFto3I94QRWPBBARU0cH/4ks4EkfCfb/Pdb3AHgtJi58QthSHKFvKTQnAWyHPs7w==} + '@react-native/assets-registry@0.79.0-rc.0': + resolution: {integrity: sha512-c6Q4vIkrLx6sRvzr5kLaQlBRRDdUrIxl/FgDxywFLxUhy+z5gdpN2P66jwNpwXnODt7KC5fiwi0gB3Fr9KM/BA==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.78.0': - resolution: {integrity: sha512-+Sy9Uine0QAbQRxMl6kBlkzKW0qHQk8hghCoKswRWt1ZfxaMA3rezobD5mtSwt/Yhadds9cGbMFWfFJM3Tynsg==} + '@react-native/babel-plugin-codegen@0.79.0-rc.4': + resolution: {integrity: sha512-vhYfoFdzz1D/bDAuGThtNia9bUpjtCo73IWfndNoKj+84SOGTtrKaZ/jOpXs5uMskpe1D4xaHuOHHFbzp/0E8g==} engines: {node: '>=18'} - '@react-native/babel-preset@0.78.0': - resolution: {integrity: sha512-q44ZbR0JXdPvNrjNw75VmiVXXoJhZIx8dTUBVgnZx/UHBQuhPu0e8pAuo56E2mZVkF7FK0s087/Zji8n5OSxbQ==} + '@react-native/babel-preset@0.79.0-rc.4': + resolution: {integrity: sha512-0vyO3Ix2N0sI43w0XNJ2zzSWzX7no/JMrXnVzJEm9IhNHsuMmKaXQdRvijDZroepDINIbb6vaIWwzeWkqhiPAA==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.78.0': - resolution: {integrity: sha512-8iVT2VYhkalLFUWoQRGSluZZHEG93StfwQGwQ+wk1vOUlOfoT/Xqglt6DvGXIyM9gaMCr6fJBFQVrU+FrXEFYA==} + '@react-native/codegen@0.79.0-rc.0': + resolution: {integrity: sha512-BE64Nw4lqGLjBtdk8rTIKroe2AoXRHRPkjU70QmrHA0aSKh1VICA21fckhXe6hkujFIO45erWkSB35WqdkR+bQ==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/community-cli-plugin@0.78.0': - resolution: {integrity: sha512-LpfEU+F1hZGcxIf07aBrjlImA0hh8v76V4wTJOgxxqGDUjjQ/X6h9V+bMXne60G9gwccTtvs1G0xiKWNUPI0VQ==} + '@react-native/codegen@0.79.0-rc.4': + resolution: {integrity: sha512-62J5LVV0LBqyqSV1REin2+ciWamctlYMFyy216Gko/+aqMdoYVX/bM14pdPmqtPZRoMEgWQCgmfw+xc0yx9aPQ==} engines: {node: '>=18'} peerDependencies: - '@react-native-community/cli-server-api': '*' + '@babel/core': '*' + + '@react-native/community-cli-plugin@0.79.0-rc.0': + resolution: {integrity: sha512-OW92oyX8tmky1mc/ofEDgfuclzhANx/7GNa00SLkeJ1Fg6O2Leu8LoC0QgBIKa+GKzt6hTikojSKSFYCUXnJ6w==} + engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli': '*' peerDependenciesMeta: - '@react-native-community/cli-server-api': + '@react-native-community/cli': optional: true - '@react-native/debugger-frontend@0.78.0': - resolution: {integrity: sha512-KQYD9QlxES/VdmXh9EEvtZCJK1KAemLlszQq4dpLU1stnue5N8dnCY6A7PpStMf5UtAMk7tiniQhaicw0uVHgQ==} + '@react-native/debugger-frontend@0.79.0-rc.0': + resolution: {integrity: sha512-g/ewdWNPEn7okSo/tFS1XdjKbTCyrehEdoTRoO25c9lyuMQFnTgGU6UQ22wCqiVURh6NGP9Cb6FHs0MbMaGbUg==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.78.0': - resolution: {integrity: sha512-zEafAZdOz4s37Jh5Xcv4hJE5qZ6uNxgrTLcpjDOJnQG6dO34/BoZeXvDrjomQFNn6ogdysR51mKJStaQ3ixp5A==} + '@react-native/debugger-frontend@0.79.0-rc.4': + resolution: {integrity: sha512-C9B//PGcirQUxR062FIN9xO+CTYyjjZi0KYfiKZW19g8d7LF1336Omq5m01VXzPAka5USDy3SvLqYk5zs/3S1A==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.78.0': - resolution: {integrity: sha512-WvwgfmVs1QfFl1FOL514kz2Fs5Nkg2BGgpE8V0ild8b/UT6jCD8qh2dTI5kL0xdT0d2Xd2BxfuFN0xCLkMC+SA==} + '@react-native/dev-middleware@0.79.0-rc.0': + resolution: {integrity: sha512-1+nN0VTUkvIuea0MQC2uHwNQLrfpibosAhfSO7zz87VgJdmcHzJdbCziAl8I5CCsPdI2brmM4pl3eVx4G1ip4Q==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.78.0': - resolution: {integrity: sha512-YZ9XtS77s/df7548B6dszX89ReehnA7hiab/axc30j/Mgk7Wv2woOjBKnAA4+rZ0ITLtxNwyJIMaRAc9kGznXw==} + '@react-native/dev-middleware@0.79.0-rc.4': + resolution: {integrity: sha512-Y8bgH2ELqgfWKbWxCzDGFJ4dh0howNf5gqVLZWsDU//56+NgNnVkH9S3ZpdZZC2EK/hicd+t8P1RdsdwHmGIww==} engines: {node: '>=18'} - '@react-native/metro-babel-transformer@0.78.0': - resolution: {integrity: sha512-Hy/dl+zytLCRD9dp32ukcRS1Bn0gZH0h0i3AbriS6OGYgUgjAUFhXOKzZ15/G1SEq2sng91MNo/hMvo4uXoc5A==} + '@react-native/gradle-plugin@0.79.0-rc.0': + resolution: {integrity: sha512-b9JdvuM6p5GuLePpObXT4BR4AQzVSsAYR/4tj9g86r7g7m1gKUoe9rIAMqCXe6bRuCD7rzwfFJ6svONmNVW9zw==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.79.0-rc.0': + resolution: {integrity: sha512-wnIUuPSQmfHCxzRKnrO9srXtnTn23IkRBcO6XDWNqkAryZigtXTNhEeN6vzc2KS6Vyw/0spz7SznwKr3alXonQ==} engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' '@react-native/normalize-colors@0.74.89': resolution: {integrity: sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==} @@ -3965,11 +3973,14 @@ packages: '@react-native/normalize-colors@0.77.1': resolution: {integrity: sha512-sCmEs/Vpi14CtFYhmKXpPFZntKYGezFGgT9cJANRS2aFseAL4MOomb5Ms+TOQw82aFcwPPjDX6Hrl87WjTf73A==} - '@react-native/normalize-colors@0.78.0': - resolution: {integrity: sha512-FkeLvLLaMYlGsSntixTUvlNtc1OHij4TYRtymMNPWqBKFAMXJB/qe45VxXNzWP+jD0Ok6yXineQFtktKcHk9PA==} + '@react-native/normalize-colors@0.79.0-rc.0': + resolution: {integrity: sha512-TTJovmseCQ6hnkFGXw1wFdIfFjGiiojgtLf8UC0N3vERGjfJ5+tv4UAqMxd6ccjbscZqkQOlJgPMhguU6Z1bpw==} + + '@react-native/normalize-colors@0.79.0-rc.4': + resolution: {integrity: sha512-jjZHe/PUPK2XZXGB75Km50ykZ3F4Vwoj9RwQgfA0bn68USBFsWodKlvcKDN0cRlwBXwFHMX6xF9Gjrh/IAIceA==} - '@react-native/virtualized-lists@0.78.0': - resolution: {integrity: sha512-ibETs3AwpkkRcORRANvZeEFjzvN41W02X882sBzoxC5XdHiZ2DucXo4fjKF7i86MhYCFLfNSIYbwupx1D1iFmg==} + '@react-native/virtualized-lists@0.79.0-rc.0': + resolution: {integrity: sha512-nc6wr9khf7ZJtGyZIwFRaZqDTHwQA0qL7ClE4OcRZz72j0gDExLnaeVRf7gDewqW0fokVw/JMBYk7lJWHm7ang==} engines: {node: '>=18'} peerDependencies: '@types/react': ^19.0.0 @@ -3979,10 +3990,10 @@ packages: '@types/react': optional: true - '@react-navigation/bottom-tabs@7.2.1': - resolution: {integrity: sha512-UGC7csRD/1+SJKLbaEg8K44KvkdBaEBIro0PpIRawRmHS93emf4LNfDafd8y6pReJN93OVVnqLWqcYozx4lZ4A==} + '@react-navigation/bottom-tabs@7.3.5': + resolution: {integrity: sha512-Qq5auwawfXNOrKusq3QELvf2UlhTwb8spq/w4PfA3QIw9tqfd488jnikGU/1RhdUk4/G9P6pp1X/JiboYPXgBw==} peerDependencies: - '@react-navigation/native': ^7.0.15 + '@react-navigation/native': ^7.1.1 react: 19.0.0 react-native: '*' react-native-safe-area-context: '>= 4.0.0' @@ -3993,11 +4004,16 @@ packages: peerDependencies: react: 19.0.0 - '@react-navigation/elements@2.2.6': - resolution: {integrity: sha512-UPeaCcEDSDRaxjG+qEHbur6jmNW/f9QNCyPsUt6NMgPEdbB5Z8K8oSx2swIaiCnvUbs/K5G3MuWkqQxGj8QXXA==} + '@react-navigation/core@7.8.0': + resolution: {integrity: sha512-eKHe3ZEVsAHalMdugaCIhc2bUTYI7am9oT8CIhOQg2xiZ9OlT6eKYQacby6gVCHLJWNBOawrtENhuFJervkLRw==} + peerDependencies: + react: 19.0.0 + + '@react-navigation/elements@2.3.3': + resolution: {integrity: sha512-6OGnhSPsBs0ziOy3ADLUACQI4rpe1T/1xAot+e29ugUJrc/BLATJ9okiPb+j4OZzSLlIYxxkV/D++su0XgSEPA==} peerDependencies: '@react-native-masked-view/masked-view': '>= 0.2.0' - '@react-navigation/native': ^7.0.15 + '@react-navigation/native': ^7.1.1 react: 19.0.0 react-native: '*' react-native-safe-area-context: '>= 4.0.0' @@ -4005,10 +4021,10 @@ packages: '@react-native-masked-view/masked-view': optional: true - '@react-navigation/native-stack@7.2.1': - resolution: {integrity: sha512-zqC6DVpO4pFZrl+8JuIgV8qk+AGdTuv+hJ5EHePmzs9gYSUrDpw6LahFCiXshwBvi9LinIw9Do7mtnQK2Q8AGA==} + '@react-navigation/native-stack@7.3.5': + resolution: {integrity: sha512-yelx7PrC5JfTnOK6VG8QYqUhgDw/8qGluHYmDoZHYTvAQ4/igh5iV601e8DqDyh2hIxmFc3uSS7yvic49TQmQg==} peerDependencies: - '@react-navigation/native': ^7.0.15 + '@react-navigation/native': ^7.1.1 react: 19.0.0 react-native: '*' react-native-safe-area-context: '>= 4.0.0' @@ -4020,9 +4036,18 @@ packages: react: 19.0.0 react-native: '*' + '@react-navigation/native@7.1.1': + resolution: {integrity: sha512-pVIbC16HvdlNWmn36h5CjSim33w4SVrCutv93lmMQKbdt3fvqIIViuiNkRITCRjw80c5jz04hiuUGeaaBk9xpQ==} + peerDependencies: + react: 19.0.0 + react-native: '*' + '@react-navigation/routers@7.2.0': resolution: {integrity: sha512-lMyib39H4a//u+eiyt162U6TwCfI8zJbjl9ovjKtDddQ4/Vf7b8/OhyimnJH09N2CBfm4pv0gCV6Q0WnZcfaJg==} + '@react-navigation/routers@7.3.2': + resolution: {integrity: sha512-FZsMPbFP8FubdlA0oa+2bLhgwDNSk+ezIUETxIvMazoz715LTpXzPNBiQ29AMfZztADAWniTjotWSOREwKETkA==} + '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -4348,9 +4373,6 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -4718,8 +4740,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-expo@13.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-65eIaxpY2EmsBIpCcF+ZvC9vWQn/1PML2tnGiB5dPSAmkmNlSPiC69WuD4pDEDX4L4Sy1pfEuuGPNEVixxGasQ==} + babel-preset-expo@13.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-cnuFpMEtdXTCj225Z8jF24GYM4LQlF9DUdOFTWCY0GNhJDQ1+dEMaMtGfD06CGXb+uROdK3r1XYr6lW6YHSofQ==} peerDependencies: babel-plugin-react-compiler: ^19.0.0-beta-9ee70a1-20241017 react-compiler-runtime: ^19.0.0-beta-8a03594-20241020 @@ -5458,65 +5480,65 @@ packages: resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} engines: {node: '>=12.0.0'} - expo-asset@12.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-gOXnvbC5cr8jVeicZ51BAWR/Lfm5W+qCP89Di2VTPCDpmfKoIm2sepxnNcSWp4BmhWAVjDPewUsJYTvc2RqgCQ==} + expo-asset@12.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-bY2Inauaf/OHuuh19EyoUjyKCLI5JJ5Jxp28QBLhlGGZCPuQrUCd4fdseGKNgRlAuoo71MkM+eByPy/3RXmxIw==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b react: 19.0.0 react-native: '*' - expo-constants@18.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-bzreYC9p/m7ovgIWabGLYFjXwJgUVEnzNNCVuas62vMLaNulcGtpSKNjlleVMgHsgsbCqaDfFcYtRGWm1GPQlw==} + expo-constants@18.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-Oq0rlpGJW/4wS+k+/1ouK7Lgk70EB2yaRe5AuWiOK+6Ko4/4QUxT4Zc4QmP+TX9S8CqNbnflCrhN0RAR29JtQQ==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b react-native: '*' - expo-file-system@19.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-zP1ChBtf0z9UKqssxcYIKav3wv2h8vzUbdXA9GBfdKiLqkRfBb3HiG8B2IO8vVa6jv6bahbX1NernT2XAQ21lg==} + expo-file-system@19.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-XyiukW0GwZ8JXb15ukGiFGY8sVqOKJVOYQ7nBp+VofRbBmENslPb3ZAEMklqMpEJ7fThMkXIwkLiCh5GZfDVWw==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b react-native: '*' - expo-font@14.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-8VXoNfJcNLxfsV9Fz+rDK6G0Ufdwwndif0JlKwZmCjlB0mnpnMQS/HX7MfmYu4J0JyX+uYKWHM6aFolx6/7XDw==} + expo-font@14.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-97TykTK4mVawZaiLFnK8UCjBiZe8kqT19fk+22/B11aVJGP7+ycKNSSznZE0BxMfICSRWHR/RANVCu7lJnVu3A==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b react: 19.0.0 - expo-keep-awake@15.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-MNaZlQaWoC9F8sHWUhu+EWkwraP16Ba8gGlEDMlhe9bPp3PCCveQyfwFHu57vlJPO2DQ6+kThPLz67SWe2qHjw==} + expo-keep-awake@15.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-+PjlEKx/JAJJiV/xnpzTdsaSrE3hxZ9v/6UIfqpN7M0eNm6FCfootzMfvrIzXwJNkSFUm+csZMLRbJ2BuvLa9A==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b react: 19.0.0 - expo-linking@7.1.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-6XcAZ08Gn5IRB3WgVHU63fh1YuUQxzLRzizotpwAHnW0172JMlmrC4TP4SFEN7+c9kkR7sir2ZH/2eQhzeWaWQ==} + expo-linking@7.1.0-canary-20250402-161f57b: + resolution: {integrity: sha512-FCZrzfb1SMcy6D2DR8nk04+t8BqzFlx5dVfAUb66CLoYtBzbTFmkMmV6ijvOpZNKQDwY8eaGF64aD8X7tB+eLw==} peerDependencies: react: 19.0.0 react-native: '*' - expo-modules-autolinking@3.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-ZXVNf+cz3uaazWK8agQc9TG6RfMdcbBRwMZB7Gr5GlxG/3Ss6+duIeR/Ilc5testMm0nH16WCLn0BH1yj2Zf0g==} + expo-modules-autolinking@3.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-yRsvNJmFV0SlOTmEibWRHa0xbAlGGpWh0thRMuE9858B241o81/Y4MEXpX8oNlr1YRc5doj5x3p24309EJi3AQ==} hasBin: true - expo-modules-core@3.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-ArvZty2BYOTfxFqfjo49mpdiJNyn0G9cGSYOkoj/1cS03QHw6lFCKdTgf6I03JKHKpiGC5hPZe66PLW553V9mw==} + expo-modules-core@3.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-nUCVhv6vW0av0IVcYyq6XSYSSadN7QT3uPxmHQRTeuCeepMV8u1jw98Jiv4k6nMZvh88RUPrucEX2PkcqtclvA==} - expo-navigation-bar@5.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-K3xQ7DG2YbEhtm26eGC/RSrv+44oX2k/ES8isYr6T16tCHM5mb/xbHjY5f0Q+l+Qwh+2ZD05sI3DZDhkGlANqw==} + expo-navigation-bar@5.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-1a8AToz815Rc19mGnI3ADkBdjOYnMIcaGJcg89wblB+pIN11df4h2CMOnPflWEHFm5TkfX8Zs2llnIl2Wixq6w==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b react: 19.0.0 react-native: '*' - expo-router@4.0.18-canary-20250306-d9d3e02: - resolution: {integrity: sha512-9eQiHacxvPA1uiKHEsm31LIlWQj71PNDiSjpIBFBthbGPBOOJ9PqlDhyNxyXcz6K9t+t9dHltFr6CUAMGn0e4Q==} + expo-router@5.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-IHRuQ7s067f6cwtVgjR+KS+nicbtFyv1+p0h2oZrgSxEHnwc/KFpjphWoGnKlDy/8ZmnRzEahgGeskbZ68bBjA==} peerDependencies: - '@react-navigation/drawer': ^7.1.1 + '@react-navigation/drawer': ^7.2.1 '@testing-library/jest-native': '*' - expo: 53.0.0-canary-20250306-d9d3e02 - expo-constants: 18.0.0-canary-20250306-d9d3e02 - expo-linking: 7.1.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b + expo-constants: 18.0.0-canary-20250402-161f57b + expo-linking: 7.1.0-canary-20250402-161f57b react-native-reanimated: '*' react-native-safe-area-context: '*' react-native-screens: '*' @@ -5528,33 +5550,33 @@ packages: react-native-reanimated: optional: true - expo-splash-screen@0.29.23-canary-20250306-d9d3e02: - resolution: {integrity: sha512-Nrag2m91B7Upkg4rDH9aRgyVNqIehtWLzVlDIv6twFk8Sg/bgKtCzEyUIWrxEa4OEOUX11BEsylIdWsSfkpLhg==} + expo-splash-screen@0.29.23-canary-20250402-161f57b: + resolution: {integrity: sha512-Fy20XLsPUSdZPj65PnQgemfrI3WlxsbVcz8q3T+Nypa8qTRbmrC2WyBMtjbCddxJA3L3FaDLFqTS/vNEwJVKUg==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b - expo-status-bar@2.0.2-canary-20250306-d9d3e02: - resolution: {integrity: sha512-BcWSU5BmY3Q09bAuweMGKsqr+3wRPOuC17K4gsp+Qf9VuPNhCy+f6UPVaAq2yVrJsWY8XNTlqzhFDZmgdTMsOQ==} + expo-status-bar@2.0.2-canary-20250402-161f57b: + resolution: {integrity: sha512-QrfH/v+gkXy87eShZqiNwKEilnrpp0CIL57pOUb/Irzxr75fwRrXox19cMJs9zN4IIIOkAkkqGhKtSj1zrT5bg==} peerDependencies: react: 19.0.0 react-native: '*' - expo-system-ui@5.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-mehTsOuGSH2Q78bg5uAr0c1ZvT2fkqLHy6Izji3JSexZD9kDAVj0SF4y6b+NbtWjStqIUAGaY57mXxUnUY/8zg==} + expo-system-ui@5.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-W2Tq/kwnzWvsO4kZAbTgimuoQvdA9mxgQ1kOgssFQGIwj64eOB5D0DdYHK1HA8g0W6c2n+aRb3imc6yGEZ8M3Q==} peerDependencies: - expo: 53.0.0-canary-20250306-d9d3e02 + expo: 53.0.0-canary-20250402-161f57b react-native: '*' react-native-web: '*' peerDependenciesMeta: react-native-web: optional: true - expo@53.0.0-canary-20250306-d9d3e02: - resolution: {integrity: sha512-15QDMfClEV+s8TUwuAaz97AbndzBpTbICnJAfdiqzn4PP9n2Yah/ujReP8uvmu1BsTcI9m3z89EhTtJPM0MAsw==} + expo@53.0.0-canary-20250402-161f57b: + resolution: {integrity: sha512-Kuyp5zfkuPR/n2bVtqclsEAAQ5ikRK/gs2/NzE2ilK5ZgJ6e893rX+KtCXOiTjMYZNpHsFXIMl3StpQA9QmE9g==} hasBin: true peerDependencies: - '@expo/dom-webview': 0.0.3-canary-20250306-d9d3e02 - '@expo/metro-runtime': 4.0.2-canary-20250306-d9d3e02 + '@expo/dom-webview': 0.0.3-canary-20250402-161f57b + '@expo/metro-runtime': 5.0.0-canary-20250402-161f57b react: 19.0.0 react-native: '*' react-native-webview: '*' @@ -5600,9 +5622,6 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - fbjs-css-vars@1.0.2: resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} @@ -7278,12 +7297,6 @@ packages: peerDependencies: react: 19.0.0 - react-helmet-async@1.3.0: - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: 19.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -7309,11 +7322,6 @@ packages: react-native-svg: optional: true - react-native-helmet-async@2.0.4: - resolution: {integrity: sha512-m3CkXWss6B1dd6mCMleLpzDCJJGGaHOLQsUzZv8kAASJmMfmVT4d2fx375iXKTRWT25ThBfae3dECuX5cq/8hg==} - peerDependencies: - react: 19.0.0 - react-native-is-edge-to-edge@1.1.6: resolution: {integrity: sha512-1pHnFTlBahins6UAajXUqeCOHew9l9C2C8tErnpGC3IyLJzvxD+TpYAixnCbrVS52f7+NvMttbiSI290XfwN0w==} peerDependencies: @@ -7327,14 +7335,22 @@ packages: react: 19.0.0 react-native: '*' - react-native-safe-area-context@5.2.0: - resolution: {integrity: sha512-QpcGA6MRKe8Zbpf1hirCBudNQYGsMv0n/CTTROMOFcXbqRUoEXLCsYxUmYKi7JJb3ziL2DbyzWXyH2/gw4Tkfw==} + react-native-reanimated@4.0.0-beta.3: + resolution: {integrity: sha512-H1GmOnlctdRW3VMj+93fm1A/ioCdwlTfP86OqPZrVmqxseecxkL0dhF97QSvoPZPzJodo+pyphnlto/fFtP9yg==} peerDependencies: + '@babel/core': ^7.0.0-0 react: 19.0.0 react-native: '*' + react-native-worklets: 0.1.0 - react-native-screens@4.9.2: - resolution: {integrity: sha512-87gR7XRIirACYxtYltEl1BbUo5r0W4AFPckUDDzATAN6LIUZ2PC3bX6UAFeoEBEqBbfaemRZTWSYHl6MCZFSgw==} + react-native-safe-area-context@5.3.0: + resolution: {integrity: sha512-glV9bwuozTjf/JDBIBm+ITnukHNaUT3nucgdeADwjtHsfEN3RL5UO6nq99vvdWv5j/O9yCZBvFncM1BBQ+UvpQ==} + peerDependencies: + react: 19.0.0 + react-native: '*' + + react-native-screens@4.10.0: + resolution: {integrity: sha512-Tw21NGuXm3PbiUGtZd0AnXirUixaAbPXDjNR0baBH7/WJDaDTTELLcQ7QRXuqAWbmr/EVCrKj1348ei1KFIr8A==} peerDependencies: react: 19.0.0 react-native: '*' @@ -7351,8 +7367,15 @@ packages: react: 19.0.0 react-dom: ^18.0.0 - react-native@0.78.0: - resolution: {integrity: sha512-3PO4tNvCN6BdAKcoY70v1sLfxYCmDR4KS1VTY+kIBKy5Qznp27QNxL7zBQjvS6Jp91gc8N82QbysQrfBlwg9gQ==} + react-native-worklets@0.2.0-nightly-20250401-a5236f3be: + resolution: {integrity: sha512-ZsaHYxu+ezgKXGaO6w3uHk3zC4aS76h6T6eCAoQI52vk8PL+9T3Csl8UK6QwzBZKKgknHfMhh10++ywIFBvvBg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + react: 19.0.0 + react-native: '*' + + react-native@0.79.0-rc.0: + resolution: {integrity: sha512-d+5wKngFaosjcPSuOnGo/IkQ5Pax482lMl1eV/2fPsWESsUi0mbzVEu7UUEiSEDY1YWlIxk9GluXhIw2RI/d4g==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -7415,9 +7438,6 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - recast@0.23.11: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} @@ -7627,10 +7647,6 @@ packages: resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} engines: {node: '>= 10.13.0'} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -8684,9 +8700,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -10057,26 +10070,26 @@ snapshots: '@esbuild/win32-x64@0.25.1': optional: true - '@expo/cli@1.0.0-canary-20250306-d9d3e02': + '@expo/cli@1.0.0-canary-20250402-161f57b': dependencies: '@0no-co/graphql.web': 1.1.2 '@babel/runtime': 7.26.10 '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 11.0.0-canary-20250306-d9d3e02 - '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 + '@expo/config': 11.0.0-canary-20250402-161f57b + '@expo/config-plugins': 9.1.0-canary-20250402-161f57b '@expo/devcert': 1.1.4 - '@expo/env': 1.0.1-canary-20250306-d9d3e02 - '@expo/image-utils': 0.6.6-canary-20250306-d9d3e02 - '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 - '@expo/metro-config': 0.20.0-canary-20250306-d9d3e02 - '@expo/osascript': 2.1.7-canary-20250306-d9d3e02 - '@expo/package-manager': 1.6.2-canary-20250306-d9d3e02 - '@expo/plist': 0.2.3-canary-20250306-d9d3e02 - '@expo/prebuild-config': 9.0.0-canary-20250306-d9d3e02 + '@expo/env': 1.0.1-canary-20250402-161f57b + '@expo/image-utils': 0.6.6-canary-20250402-161f57b + '@expo/json-file': 9.0.3-canary-20250402-161f57b + '@expo/metro-config': 0.20.0-canary-20250402-161f57b + '@expo/osascript': 2.1.7-canary-20250402-161f57b + '@expo/package-manager': 1.6.2-canary-20250402-161f57b + '@expo/plist': 0.2.3-canary-20250402-161f57b + '@expo/prebuild-config': 9.0.0-canary-20250402-161f57b '@expo/spawn-async': 1.7.2 '@expo/ws-tunnel': 1.0.6 '@expo/xcpretty': 4.3.2 - '@react-native/dev-middleware': 0.78.0 + '@react-native/dev-middleware': 0.79.0-rc.4 '@urql/core': 5.1.1 '@urql/exchange-retry': 1.3.1(@urql/core@5.1.1) accepts: 1.3.8 @@ -10131,11 +10144,11 @@ snapshots: node-forge: 1.3.1 nullthrows: 1.1.1 - '@expo/config-plugins@9.1.0-canary-20250306-d9d3e02': + '@expo/config-plugins@9.1.0-canary-20250402-161f57b': dependencies: - '@expo/config-types': 53.0.0-canary-20250306-d9d3e02 - '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 - '@expo/plist': 0.2.3-canary-20250306-d9d3e02 + '@expo/config-types': 53.0.0-canary-20250402-161f57b + '@expo/json-file': 9.0.3-canary-20250402-161f57b + '@expo/plist': 0.2.3-canary-20250402-161f57b '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.4.0 @@ -10150,14 +10163,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/config-types@53.0.0-canary-20250306-d9d3e02': {} + '@expo/config-types@53.0.0-canary-20250402-161f57b': {} - '@expo/config@11.0.0-canary-20250306-d9d3e02': + '@expo/config@11.0.0-canary-20250402-161f57b': dependencies: '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 - '@expo/config-types': 53.0.0-canary-20250306-d9d3e02 - '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 + '@expo/config-plugins': 9.1.0-canary-20250402-161f57b + '@expo/config-types': 53.0.0-canary-20250402-161f57b + '@expo/json-file': 9.0.3-canary-20250402-161f57b deepmerge: 4.3.1 getenv: 1.0.0 glob: 10.4.5 @@ -10187,7 +10200,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/env@1.0.1-canary-20250306-d9d3e02': + '@expo/env@1.0.1-canary-20250402-161f57b': dependencies: chalk: 4.1.2 debug: 4.4.0 @@ -10197,7 +10210,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/fingerprint@0.11.12-canary-20250306-d9d3e02': + '@expo/fingerprint@0.11.12-canary-20250402-161f57b': dependencies: '@expo/spawn-async': 1.7.2 arg: 5.0.2 @@ -10212,7 +10225,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/image-utils@0.6.6-canary-20250306-d9d3e02': + '@expo/image-utils@0.6.6-canary-20250402-161f57b': dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 @@ -10224,21 +10237,20 @@ snapshots: temp-dir: 2.0.0 unique-string: 2.0.0 - '@expo/json-file@9.0.3-canary-20250306-d9d3e02': + '@expo/json-file@9.0.3-canary-20250402-161f57b': dependencies: '@babel/code-frame': 7.10.4 json5: 2.2.3 - write-file-atomic: 2.4.3 - '@expo/metro-config@0.20.0-canary-20250306-d9d3e02': + '@expo/metro-config@0.20.0-canary-20250402-161f57b': dependencies: '@babel/core': 7.26.10 '@babel/generator': 7.26.10 '@babel/parser': 7.26.10 '@babel/types': 7.26.10 - '@expo/config': 11.0.0-canary-20250306-d9d3e02 - '@expo/env': 1.0.1-canary-20250306-d9d3e02 - '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 + '@expo/config': 11.0.0-canary-20250402-161f57b + '@expo/env': 1.0.1-canary-20250402-161f57b + '@expo/json-file': 9.0.3-canary-20250402-161f57b '@expo/spawn-async': 1.7.2 chalk: 4.1.2 debug: 4.4.0 @@ -10252,38 +10264,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))': + '@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))': dependencies: - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - '@expo/osascript@2.1.7-canary-20250306-d9d3e02': + '@expo/osascript@2.1.7-canary-20250402-161f57b': dependencies: '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 - '@expo/package-manager@1.6.2-canary-20250306-d9d3e02': + '@expo/package-manager@1.6.2-canary-20250402-161f57b': dependencies: - '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 + '@expo/json-file': 9.0.3-canary-20250402-161f57b '@expo/spawn-async': 1.7.2 chalk: 4.1.2 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.0 - '@expo/plist@0.2.3-canary-20250306-d9d3e02': + '@expo/plist@0.2.3-canary-20250402-161f57b': dependencies: '@xmldom/xmldom': 0.8.10 base64-js: 1.5.1 xmlbuilder: 15.1.1 - '@expo/prebuild-config@9.0.0-canary-20250306-d9d3e02': + '@expo/prebuild-config@9.0.0-canary-20250402-161f57b': dependencies: - '@expo/config': 11.0.0-canary-20250306-d9d3e02 - '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 - '@expo/config-types': 53.0.0-canary-20250306-d9d3e02 - '@expo/image-utils': 0.6.6-canary-20250306-d9d3e02 - '@expo/json-file': 9.0.3-canary-20250306-d9d3e02 - '@react-native/normalize-colors': 0.78.0 + '@expo/config': 11.0.0-canary-20250402-161f57b + '@expo/config-plugins': 9.1.0-canary-20250402-161f57b + '@expo/config-types': 53.0.0-canary-20250402-161f57b + '@expo/image-utils': 0.6.6-canary-20250402-161f57b + '@expo/json-file': 9.0.3-canary-20250402-161f57b + '@react-native/normalize-colors': 0.79.0-rc.4 debug: 4.4.0 resolve-from: 5.0.0 semver: 7.7.1 @@ -10293,7 +10305,7 @@ snapshots: '@expo/sdk-runtime-versions@1.0.0': {} - '@expo/server@0.5.2-canary-20250306-d9d3e02': + '@expo/server@0.6.0-canary-20250402-161f57b': dependencies: abort-controller: 3.0.0 debug: 4.4.0 @@ -11285,22 +11297,22 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@react-native-async-storage/async-storage@1.23.1(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))': + '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))': dependencies: merge-options: 3.0.4 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - '@react-native/assets-registry@0.78.0': {} + '@react-native/assets-registry@0.79.0-rc.0': {} - '@react-native/babel-plugin-codegen@0.78.0(@babel/preset-env@7.26.9(@babel/core@7.26.10))': + '@react-native/babel-plugin-codegen@0.79.0-rc.4(@babel/core@7.26.10)': dependencies: '@babel/traverse': 7.26.10 - '@react-native/codegen': 0.78.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)) + '@react-native/codegen': 0.79.0-rc.4(@babel/core@7.26.10) transitivePeerDependencies: - - '@babel/preset-env' + - '@babel/core' - supports-color - '@react-native/babel-preset@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))': + '@react-native/babel-preset@0.79.0-rc.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) @@ -11343,15 +11355,14 @@ snapshots: '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) '@babel/template': 7.26.9 - '@react-native/babel-plugin-codegen': 0.78.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)) + '@react-native/babel-plugin-codegen': 0.79.0-rc.4(@babel/core@7.26.10) babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) react-refresh: 0.14.2 transitivePeerDependencies: - - '@babel/preset-env' - supports-color - '@react-native/codegen@0.78.0(@babel/preset-env@7.26.9(@babel/core@7.26.10))': + '@react-native/codegen@0.79.0-rc.0(@babel/preset-env@7.26.9(@babel/core@7.26.10))': dependencies: '@babel/parser': 7.26.10 '@babel/preset-env': 7.26.9(@babel/core@7.26.10) @@ -11364,31 +11375,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))': + '@react-native/codegen@0.79.0-rc.4(@babel/core@7.26.10)': dependencies: - '@react-native/dev-middleware': 0.78.0 - '@react-native/metro-babel-transformer': 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10)) + '@babel/core': 7.26.10 + glob: 7.2.3 + hermes-parser: 0.25.1 + invariant: 2.2.4 + nullthrows: 1.1.1 + yargs: 17.7.2 + + '@react-native/community-cli-plugin@0.79.0-rc.0': + dependencies: + '@react-native/dev-middleware': 0.79.0-rc.0 chalk: 4.1.2 debug: 2.6.9 invariant: 2.2.4 metro: 0.81.3 metro-config: 0.81.3 metro-core: 0.81.3 - readline: 1.3.0 semver: 7.7.1 transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - bufferutil - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.78.0': {} + '@react-native/debugger-frontend@0.79.0-rc.0': {} - '@react-native/dev-middleware@0.78.0': + '@react-native/debugger-frontend@0.79.0-rc.4': {} + + '@react-native/dev-middleware@0.79.0-rc.0': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.78.0 + '@react-native/debugger-frontend': 0.79.0-rc.0 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 @@ -11396,7 +11414,6 @@ snapshots: invariant: 2.2.4 nullthrows: 1.1.1 open: 7.4.2 - selfsigned: 2.4.1 serve-static: 1.16.2 ws: 6.2.3 transitivePeerDependencies: @@ -11404,44 +11421,54 @@ snapshots: - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.78.0': {} - - '@react-native/js-polyfills@0.78.0': {} - - '@react-native/metro-babel-transformer@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))': + '@react-native/dev-middleware@0.79.0-rc.4': dependencies: - '@babel/core': 7.26.10 - '@react-native/babel-preset': 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10)) - hermes-parser: 0.25.1 + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.79.0-rc.4 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 + connect: 3.7.0 + debug: 2.6.9 + invariant: 2.2.4 nullthrows: 1.1.1 + open: 7.4.2 + serve-static: 1.16.2 + ws: 6.2.3 transitivePeerDependencies: - - '@babel/preset-env' + - bufferutil - supports-color + - utf-8-validate + + '@react-native/gradle-plugin@0.79.0-rc.0': {} + + '@react-native/js-polyfills@0.79.0-rc.0': {} '@react-native/normalize-colors@0.74.89': {} '@react-native/normalize-colors@0.77.1': {} - '@react-native/normalize-colors@0.78.0': {} + '@react-native/normalize-colors@0.79.0-rc.0': {} + + '@react-native/normalize-colors@0.79.0-rc.4': {} - '@react-native/virtualized-lists@0.78.0(@types/react@19.0.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-native/virtualized-lists@0.79.0-rc.0(@types/react@19.0.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 - '@react-navigation/bottom-tabs@7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/bottom-tabs@7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/elements': 2.2.6(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.3.3(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - '@react-native-masked-view/masked-view' @@ -11456,40 +11483,65 @@ snapshots: use-latest-callback: 0.2.3(react@19.0.0) use-sync-external-store: 1.4.0(react@19.0.0) - '@react-navigation/elements@2.2.6(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/core@7.8.0(react@19.0.0)': dependencies: - '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/routers': 7.3.2 + escape-string-regexp: 4.0.0 + nanoid: 3.3.8 + query-string: 7.1.3 + react: 19.0.0 + react-is: 18.3.1 + use-latest-callback: 0.2.3(react@19.0.0) + use-sync-external-store: 1.4.0(react@19.0.0) + + '@react-navigation/elements@2.3.3(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack@7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/native-stack@7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/elements': 2.2.6(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.3.3(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/native@7.0.15(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: '@react-navigation/core': 7.4.0(react@19.0.0) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.8 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + use-latest-callback: 0.2.3(react@19.0.0) + + '@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/core': 7.8.0(react@19.0.0) + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 + nanoid: 3.3.8 + react: 19.0.0 + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) use-latest-callback: 0.2.3(react@19.0.0) '@react-navigation/routers@7.2.0': dependencies: nanoid: 3.3.8 + '@react-navigation/routers@7.3.2': + dependencies: + nanoid: 3.3.8 + '@rollup/pluginutils@5.1.4(rollup@4.36.0)': dependencies: '@types/estree': 1.0.6 @@ -11826,10 +11878,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 20.17.24 - '@types/node@17.0.45': {} '@types/node@20.17.24': @@ -12343,7 +12391,7 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) - babel-preset-expo@13.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10)): + babel-preset-expo@13.0.0-canary-20250402-161f57b(@babel/core@7.26.10): dependencies: '@babel/helper-module-imports': 7.25.9 '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) @@ -12359,7 +12407,7 @@ snapshots: '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) '@babel/preset-react': 7.26.3(@babel/core@7.26.10) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) - '@react-native/babel-preset': 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10)) + '@react-native/babel-preset': 0.79.0-rc.4(@babel/core@7.26.10) babel-plugin-react-native-web: 0.19.13 babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) @@ -12368,7 +12416,6 @@ snapshots: resolve-from: 5.0.0 transitivePeerDependencies: - '@babel/core' - - '@babel/preset-env' - supports-color babel-preset-jest@29.6.3(@babel/core@7.26.10): @@ -13081,53 +13128,53 @@ snapshots: expect-type@1.2.0: {} - expo-asset@12.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-asset@12.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - '@expo/image-utils': 0.6.6-canary-20250306-d9d3e02 - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + '@expo/image-utils': 0.6.6-canary-20250402-161f57b + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): + expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): dependencies: - '@expo/config': 11.0.0-canary-20250306-d9d3e02 - '@expo/env': 1.0.1-canary-20250306-d9d3e02 - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + '@expo/config': 11.0.0-canary-20250402-161f57b + '@expo/env': 1.0.1-canary-20250402-161f57b + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-file-system@19.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): + expo-file-system@19.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): dependencies: - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) web-streams-polyfill: 3.3.3 - expo-font@14.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-font@14.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) fontfaceobserver: 2.3.0 react: 19.0.0 - expo-keep-awake@15.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-keep-awake@15.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) invariant: 2.2.4 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - expo - supports-color - expo-modules-autolinking@3.0.0-canary-20250306-d9d3e02: + expo-modules-autolinking@3.0.0-canary-20250402-161f57b: dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 @@ -13137,104 +13184,101 @@ snapshots: require-from-string: 2.0.2 resolve-from: 5.0.0 - expo-modules-core@3.0.0-canary-20250306-d9d3e02: + expo-modules-core@3.0.0-canary-20250402-161f57b: dependencies: invariant: 2.2.4 - expo-navigation-bar@5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-navigation-bar@5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - '@react-native/normalize-colors': 0.78.0 + '@react-native/normalize-colors': 0.79.0-rc.4 debug: 4.4.0 - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - ? expo-router@4.0.18-canary-20250306-d9d3e02(expo-constants@18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + ? expo-router@5.0.0-canary-20250402-161f57b(expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) : dependencies: - '@expo/metro-runtime': 4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - '@expo/server': 0.5.2-canary-20250306-d9d3e02 + '@expo/metro-runtime': 5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + '@expo/server': 0.6.0-canary-20250402-161f57b '@radix-ui/react-slot': 1.0.1(react@19.0.0) - '@react-navigation/bottom-tabs': 7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack': 7.2.1(@react-navigation/native@7.0.15(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/bottom-tabs': 7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native-stack': 7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) client-only: 0.0.1 - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - expo-linking: 7.1.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-helmet-async: 1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-native-helmet-async: 2.0.4(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + expo-linking: 7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + invariant: 2.2.4 + react-fast-compare: 3.2.2 + react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) schema-utils: 4.3.0 semver: 7.6.3 server-only: 0.0.1 + shallowequal: 1.1.0 optionalDependencies: - react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - '@react-native-masked-view/masked-view' - react - - react-dom - react-native - supports-color - expo-splash-screen@0.29.23-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): + expo-splash-screen@0.29.23-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): dependencies: - '@expo/prebuild-config': 9.0.0-canary-20250306-d9d3e02 - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@expo/prebuild-config': 9.0.0-canary-20250402-161f57b + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - expo-status-bar@2.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-status-bar@2.0.2-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-system-ui@5.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): + expo-system-ui@5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): dependencies: - '@react-native/normalize-colors': 0.78.0 + '@react-native/normalize-colors': 0.79.0-rc.4 debug: 4.4.0 - expo: 53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) optionalDependencies: react-native-web: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.10 - '@expo/cli': 1.0.0-canary-20250306-d9d3e02 - '@expo/config': 11.0.0-canary-20250306-d9d3e02 - '@expo/config-plugins': 9.1.0-canary-20250306-d9d3e02 - '@expo/fingerprint': 0.11.12-canary-20250306-d9d3e02 - '@expo/metro-config': 0.20.0-canary-20250306-d9d3e02 + '@expo/cli': 1.0.0-canary-20250402-161f57b + '@expo/config': 11.0.0-canary-20250402-161f57b + '@expo/config-plugins': 9.1.0-canary-20250402-161f57b + '@expo/fingerprint': 0.11.12-canary-20250402-161f57b + '@expo/metro-config': 0.20.0-canary-20250402-161f57b '@expo/vector-icons': 14.0.4 - babel-preset-expo: 13.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10)) - expo-asset: 12.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 18.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - expo-file-system: 19.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - expo-font: 14.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-keep-awake: 15.0.0-canary-20250306-d9d3e02(expo@53.0.0-canary-20250306-d9d3e02(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-modules-autolinking: 3.0.0-canary-20250306-d9d3e02 - expo-modules-core: 3.0.0-canary-20250306-d9d3e02 - fbemitter: 3.0.0 + babel-preset-expo: 13.0.0-canary-20250402-161f57b(@babel/core@7.26.10) + expo-asset: 12.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + expo-file-system: 19.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + expo-font: 14.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-keep-awake: 15.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-modules-autolinking: 3.0.0-canary-20250402-161f57b + expo-modules-core: 3.0.0-canary-20250402-161f57b react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) web-streams-polyfill: 3.3.3 whatwg-url-without-unicode: 8.0.0-3 optionalDependencies: - '@expo/metro-runtime': 4.0.2-canary-20250306-d9d3e02(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + '@expo/metro-runtime': 5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) transitivePeerDependencies: - '@babel/core' - - '@babel/preset-env' - babel-plugin-react-compiler - bufferutil - - encoding - graphql - react-compiler-runtime - supports-color @@ -13277,12 +13321,6 @@ snapshots: dependencies: bser: 2.1.1 - fbemitter@3.0.0: - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - fbjs-css-vars@1.0.2: {} fbjs@3.0.5: @@ -14175,11 +14213,11 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react-native@0.482.0(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + lucide-react-native@0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-svg: 15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) lucide-react@0.476.0(react@19.0.0): dependencies: @@ -14927,11 +14965,25 @@ snapshots: napi-build-utils@2.0.0: {} - nativewind@4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + nativewind@4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + dependencies: + comment-json: 4.2.5 + debug: 4.4.0 + react-native-css-interop: 0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + tailwindcss: 3.4.17 + transitivePeerDependencies: + - react + - react-native + - react-native-reanimated + - react-native-safe-area-context + - react-native-svg + - supports-color + + nativewind@4.1.23(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: comment-json: 4.2.5 debug: 4.4.0 - react-native-css-interop: 0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + react-native-css-interop: 0.1.22(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) tailwindcss: 3.4.17 transitivePeerDependencies: - react @@ -15416,23 +15468,13 @@ snapshots: dependencies: react: 19.0.0 - react-helmet-async@1.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): - dependencies: - '@babel/runtime': 7.26.10 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - react-is@16.13.1: {} react-is@17.0.2: {} react-is@18.3.1: {} - react-native-css-interop@0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + react-native-css-interop@0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: '@babel/helper-module-imports': 7.25.9 '@babel/traverse': 7.26.10 @@ -15440,29 +15482,59 @@ snapshots: debug: 4.4.0 lightningcss: 1.29.3 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) semver: 7.7.1 tailwindcss: 3.4.17 optionalDependencies: - react-native-safe-area-context: 5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-svg: 15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-helmet-async@2.0.4(react@19.0.0): + react-native-css-interop@0.1.22(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: - invariant: 2.2.4 + '@babel/helper-module-imports': 7.25.9 + '@babel/traverse': 7.26.10 + '@babel/types': 7.26.10 + debug: 4.4.0 + lightningcss: 1.29.3 react: 19.0.0 - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-reanimated: 4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + semver: 7.7.1 + tailwindcss: 3.4.17 + optionalDependencies: + react-native-svg: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color - react-native-is-edge-to-edge@1.1.6(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-is-edge-to-edge@1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + + react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) + convert-source-map: 2.0.0 + invariant: 2.2.4 + react: 19.0.0 + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color - react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) @@ -15477,29 +15549,30 @@ snapshots: convert-source-map: 2.0.0 invariant: 2.2.4 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-worklets: 0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-safe-area-context@5.2.0(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-screens@4.9.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-freeze: 1.0.4(react@19.0.0) - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 - react-native-svg@15.11.2(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: css-select: 5.1.0 css-tree: 1.1.3 react: 19.0.0 - react-native: 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0): @@ -15517,16 +15590,22 @@ snapshots: transitivePeerDependencies: - encoding - react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0): + react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/core': 7.26.10 + react: 19.0.0 + react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + + react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.78.0 - '@react-native/codegen': 0.78.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)) - '@react-native/community-cli-plugin': 0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10)) - '@react-native/gradle-plugin': 0.78.0 - '@react-native/js-polyfills': 0.78.0 - '@react-native/normalize-colors': 0.78.0 - '@react-native/virtualized-lists': 0.78.0(@types/react@19.0.10)(react-native@0.78.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-native/assets-registry': 0.79.0-rc.0 + '@react-native/codegen': 0.79.0-rc.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)) + '@react-native/community-cli-plugin': 0.79.0-rc.0 + '@react-native/gradle-plugin': 0.79.0-rc.0 + '@react-native/js-polyfills': 0.79.0-rc.0 + '@react-native/normalize-colors': 0.79.0-rc.0 + '@react-native/virtualized-lists': 0.79.0-rc.0(@types/react@19.0.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -15561,7 +15640,7 @@ snapshots: transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' - - '@react-native-community/cli-server-api' + - '@react-native-community/cli' - bufferutil - supports-color - utf-8-validate @@ -15613,8 +15692,6 @@ snapshots: readdirp@4.1.2: {} - readline@1.3.0: {} - recast@0.23.11: dependencies: ast-types: 0.16.1 @@ -15926,11 +16003,6 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - selfsigned@2.4.1: - dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 - semver@5.7.2: {} semver@6.3.1: {} @@ -16981,12 +17053,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@2.4.3: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 From fb2013c5fb2bc81e7d2af3ee280d38f8679474c6 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 9 Apr 2025 12:58:32 -0400 Subject: [PATCH 067/106] add missing components to vite --- .../expo-nativewind/app/(components)/tabs.tsx | 12 +- apps/expo-nativewind/components/ui/card.tsx | 125 +++++++----------- apps/expo-nativewind/components/ui/tabs.tsx | 21 +-- apps/expo-nativewind/components/ui/text.tsx | 20 +-- apps/nextjs-no-rn/src/components/ui/card.tsx | 56 ++++++++ apps/vite-tanstack-router/package.json | 2 + .../src/components/ui/aspect-ratio.tsx | 5 + .../src/components/ui/avatar.tsx | 34 +++++ .../src/components/ui/button.tsx | 115 ++++++++++++++++ .../src/components/ui/card.tsx | 57 ++++++++ .../vite-tanstack-router/src/routes/index.tsx | 73 +++++++++- pnpm-lock.yaml | 6 + 12 files changed, 406 insertions(+), 120 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/card.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/aspect-ratio.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/avatar.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/button.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/card.tsx diff --git a/apps/expo-nativewind/app/(components)/tabs.tsx b/apps/expo-nativewind/app/(components)/tabs.tsx index 8dca2e02..9e8ddccc 100644 --- a/apps/expo-nativewind/app/(components)/tabs.tsx +++ b/apps/expo-nativewind/app/(components)/tabs.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { View } from 'react-native'; +import { View } from '@rn-primitives/core'; import { Button } from '~/components/ui/button'; import { Card, @@ -17,7 +17,7 @@ import { Text } from '~/components/ui/text'; export default function TabsScreen() { const [value, setValue] = React.useState('account'); return ( - + - + - + @@ -65,11 +65,11 @@ export default function TabsScreen() { - + - + diff --git a/apps/expo-nativewind/components/ui/card.tsx b/apps/expo-nativewind/components/ui/card.tsx index ddd2e818..350fa126 100644 --- a/apps/expo-nativewind/components/ui/card.tsx +++ b/apps/expo-nativewind/components/ui/card.tsx @@ -1,87 +1,56 @@ -import * as React from 'react'; -import { Text, View } from 'react-native'; -import { TextClassContext } from '~/components/ui/text'; -import type { TextRef, ViewRef } from '@rn-primitives/types'; +import { Text, TextClassContext } from '~/components/ui/text'; import { cn } from '~/lib/utils'; +import { View } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; -const Card = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref?: ViewRef; -}) => ( - -); -Card.displayName = 'Card'; +function Card({ className, ...props }: React.ComponentProps) { + return ( + + ); +} -const CardHeader = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref: ViewRef; -}) => ; -CardHeader.displayName = 'CardHeader'; +function CardHeader({ className, ...props }: React.ComponentProps) { + return ; +} -const CardTitle = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref: TextRef; -}) => ( - -); -CardTitle.displayName = 'CardTitle'; +const WEB_CARD_TITLE_PROPS = { + as: 'h3', +} as const; -const CardDescription = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref: TextRef; -}) => ; -CardDescription.displayName = 'CardDescription'; +function CardTitle({ className, web, ...props }: React.ComponentProps) { + return ( + + ); +} -const CardContent = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref: ViewRef; -}) => ( - - - -); -CardContent.displayName = 'CardContent'; +function CardDescription({ className, ...props }: React.ComponentProps) { + return ; +} -const CardFooter = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref: ViewRef; -}) => ( - -); -CardFooter.displayName = 'CardFooter'; +function CardContent({ className, ...props }: React.ComponentProps) { + return ( + + + + ); +} + +function CardFooter({ className, ...props }: React.ComponentProps) { + return ; +} export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }; diff --git a/apps/expo-nativewind/components/ui/tabs.tsx b/apps/expo-nativewind/components/ui/tabs.tsx index d6a7b1fc..6967afaf 100644 --- a/apps/expo-nativewind/components/ui/tabs.tsx +++ b/apps/expo-nativewind/components/ui/tabs.tsx @@ -5,15 +5,8 @@ import { cn } from '~/lib/utils'; const Tabs = TabsPrimitive.Root; -const TabsList = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( +const TabsList = ({ className, ...props }: React.ComponentProps) => ( & { - ref?: React.RefObject>; -}) => { +}: React.ComponentProps) => { const { value } = TabsPrimitive.useRootContext(); return ( & { - ref?: React.RefObject>; -}) => ( +}: React.ComponentProps) => ( (undefined); -const Text = ({ - ref, - className, - asChild = false, - ...props -}: SlottableTextProps & { - ref?: React.RefObject; -}) => { +function Text({ className, ...props }: React.ComponentProps) { const textClass = React.useContext(TextClassContext); - const Component = asChild ? Slot : RNText; return ( - ); -}; -Text.displayName = 'Text'; +} export { Text, TextClassContext }; diff --git a/apps/nextjs-no-rn/src/components/ui/card.tsx b/apps/nextjs-no-rn/src/components/ui/card.tsx new file mode 100644 index 00000000..4420133d --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/card.tsx @@ -0,0 +1,56 @@ +import { Text, TextClassContext } from '~/components/ui/text'; +import { cn } from '~/lib/utils'; +import { View } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; + +function Card({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function CardHeader({ className, ...props }: React.ComponentProps) { + return ; +} + +const WEB_CARD_TITLE_PROPS = { + as: 'h3', +} as const; + +function CardTitle({ className, web, ...props }: React.ComponentProps) { + return ( + + ); +} + +function CardDescription({ className, ...props }: React.ComponentProps) { + return ; +} + +function CardContent({ className, ...props }: React.ComponentProps) { + return ( + + + + ); +} + +function CardFooter({ className, ...props }: React.ComponentProps) { + return ; +} + +export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }; diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index a8aae912..b5b07e94 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -14,6 +14,8 @@ "@rn-primitives/accordion": "workspace:*", "@rn-primitives/core": "workspace:*", "@rn-primitives/slot": "workspace:*", + "@rn-primitives/aspect-ratio": "workspace:*", + "@rn-primitives/avatar": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", "@tanstack/react-router": "^1.114.3", diff --git a/apps/vite-tanstack-router/src/components/ui/aspect-ratio.tsx b/apps/vite-tanstack-router/src/components/ui/aspect-ratio.tsx new file mode 100644 index 00000000..d5f98c2e --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,5 @@ +import * as AspectRatioPrimitive from '@rn-primitives/aspect-ratio'; + +const AspectRatio = AspectRatioPrimitive.Root; + +export { AspectRatio }; diff --git a/apps/vite-tanstack-router/src/components/ui/avatar.tsx b/apps/vite-tanstack-router/src/components/ui/avatar.tsx new file mode 100644 index 00000000..06c2af47 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/avatar.tsx @@ -0,0 +1,34 @@ +import * as AvatarPrimitive from '@rn-primitives/avatar'; +import { cn } from '@/lib/utils'; + +function Avatar({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function AvatarImage({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { Avatar, AvatarFallback, AvatarImage }; diff --git a/apps/vite-tanstack-router/src/components/ui/button.tsx b/apps/vite-tanstack-router/src/components/ui/button.tsx new file mode 100644 index 00000000..83a13335 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/button.tsx @@ -0,0 +1,115 @@ +import { Platform, Pressable } from '@rn-primitives/core'; +import { cva, type VariantProps } from 'class-variance-authority'; +import * as React from 'react'; +import { TextClassContext } from '@/components/ui/text'; +import { cn } from '@/lib/utils'; + +const baseButtonVariants = cva('group flex items-center justify-center rounded-md', { + variants: { + variant: { + default: 'bg-primary active:opacity-90', + destructive: 'bg-destructive active:opacity-90', + outline: 'border border-input bg-background active:bg-accent', + secondary: 'bg-secondary active:opacity-80', + ghost: 'active:bg-accent', + link: 'active:underline', + }, + size: { + default: 'h-10 px-4 py-2', + sm: 'h-9 rounded-md px-3', + lg: 'h-11 rounded-md px-8', + icon: 'h-10 w-10', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, +}); + +const webButtonVariants = cva( + 'ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', + { + variants: { + variant: { + default: 'hover:opacity-90', + destructive: 'hover:opacity-90', + outline: 'hover:bg-accent hover:text-accent-foreground', + secondary: 'hover:opacity-80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'underline-offset-4 hover:underline focus:underline', + }, + size: { + default: '', + sm: '', + lg: '', + icon: '', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + } +); + +const baseButtonTextVariants = cva('text-sm font-medium text-foreground', { + variants: { + variant: { + default: 'text-primary-foreground', + destructive: 'text-destructive-foreground', + outline: 'group-active:text-accent-foreground', + secondary: 'text-secondary-foreground group-active:text-secondary-foreground', + ghost: 'group-active:text-accent-foreground', + link: 'text-primary group-active:underline', + }, + size: { + default: '', + sm: '', + lg: '', + icon: '', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, +}); + +const WEB_ONLY_BUTTON_TEXT_CLASSNAME = 'whitespace-nowrap select-none transition-colors'; + +type ButtonProps = React.ComponentProps & VariantProps; + +const BUTTON_WEB_PROPS = { + as: 'button', +} as const; + +const Button = ({ className, variant, size, ...props }: ButtonProps) => { + return ( + + + + ); +}; + +export { Button }; +export type { ButtonProps }; diff --git a/apps/vite-tanstack-router/src/components/ui/card.tsx b/apps/vite-tanstack-router/src/components/ui/card.tsx new file mode 100644 index 00000000..f53eeba0 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/card.tsx @@ -0,0 +1,57 @@ +import { Text, TextClassContext } from '@/components/ui/text'; +import { cn } from '@/lib/utils'; +import { View } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; +import * as React from 'react'; + +function Card({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +function CardHeader({ className, ...props }: React.ComponentProps) { + return ; +} + +const WEB_CARD_TITLE_PROPS = { + as: 'h3', +} as const; + +function CardTitle({ className, web, ...props }: React.ComponentProps) { + return ( + + ); +} + +function CardDescription({ className, ...props }: React.ComponentProps) { + return ; +} + +function CardContent({ className, ...props }: React.ComponentProps) { + return ( + + + + ); +} + +function CardFooter({ className, ...props }: React.ComponentProps) { + return ; +} + +export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }; diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx index 6111a2dd..bb8b878c 100644 --- a/apps/vite-tanstack-router/src/routes/index.tsx +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -1,5 +1,3 @@ -import { createFileRoute } from '@tanstack/react-router'; -import { Text, View } from '@rn-primitives/core'; import { Core } from '@/components/core'; import { Accordion, @@ -7,6 +5,20 @@ import { AccordionItem, AccordionTrigger, } from '@/components/ui/accordion'; +import { AspectRatio } from '@/components/ui/aspect-ratio'; +import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; +import { Button } from '@/components/ui/button'; +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from '@/components/ui/card'; +import { Text } from '@/components/ui/text'; +import { View } from '@rn-primitives/core'; +import { createFileRoute } from '@tanstack/react-router'; export const Route = createFileRoute('/')({ component: App, @@ -25,6 +37,10 @@ export function App() { + + + + ); @@ -63,3 +79,56 @@ function AccordionExample() { ); } + +function AspectRatioExample() { + return ( + + + + + 16:9 + + + + + ); +} + +const GITHUB_AVATAR_URI = 'https://github.com/mrzachnugent.png'; + +function AvatarExample() { + return ( + + + + + ZN + + + + ); +} + +function CardExample() { + return ( + + + Card Title + + + Card Content + + + Card Footer + + + ); +} + +function ButtonExample() { + return ( + + ); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a4d8344..f1c62103 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -768,6 +768,12 @@ importers: '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion + '@rn-primitives/aspect-ratio': + specifier: workspace:* + version: link:../../packages/aspect-ratio + '@rn-primitives/avatar': + specifier: workspace:* + version: link:../../packages/avatar '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core From 07be853889f795345fd025e1dc91dd429beb057a Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 12 Apr 2025 14:54:53 -0400 Subject: [PATCH 068/106] chore: adjust versions --- packages/aspect-ratio/package.json | 2 +- packages/avatar/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index 9d2082d6..c22c5f49 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/aspect-ratio", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive aspect ratio", "license": "MIT", "main": "dist/index.js", diff --git a/packages/avatar/package.json b/packages/avatar/package.json index a9973430..597b9e3d 100644 --- a/packages/avatar/package.json +++ b/packages/avatar/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/avatar", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive avatar", "license": "MIT", "main": "dist/index.js", From 5998a16ef2b9dad60078384c59bd873af86e0378 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 12 Apr 2025 15:41:09 -0400 Subject: [PATCH 069/106] feat(checkbox): implement checkbox v2 --- .../app/(components)/checkbox.tsx | 2 +- .../components/ui/checkbox.tsx | 38 ++-- .../src/components/ui/checkbox.tsx | 40 ++-- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 11 + .../src/components/ui/checkbox.tsx | 54 +++++ apps/vite-tanstack-router/package.json | 1 + .../src/components/ui/checkbox.tsx | 54 +++++ .../vite-tanstack-router/src/routes/index.tsx | 11 + packages/checkbox/package.json | 25 +- packages/checkbox/src/base-types.ts | 12 + packages/checkbox/src/checkbox.tsx | 118 ---------- packages/checkbox/src/checkbox.web.tsx | 123 ---------- packages/checkbox/src/index.ts | 4 +- .../src/native/checkbox-native.native.tsx | 89 ++++++++ .../checkbox/src/native/checkbox-native.tsx | 17 ++ packages/checkbox/src/native/index.ts | 2 + packages/checkbox/src/native/types.ts | 11 + packages/checkbox/src/types.ts | 20 -- packages/checkbox/src/universal/checkbox.tsx | 18 ++ .../checkbox/src/universal/checkbox.web.tsx | 25 ++ packages/checkbox/src/universal/index.ts | 2 + packages/checkbox/src/universal/types.ts | 23 ++ packages/checkbox/src/web/checkbox-web.tsx | 17 ++ .../checkbox/src/web/checkbox-web.web.tsx | 7 + packages/checkbox/src/web/index.ts | 2 + packages/checkbox/src/web/types.ts | 11 + packages/checkbox/tsup.config.ts | 23 +- .../utils/src/use-web-pressable-props.tsx | 2 + packages/utils/tsup.config.ts | 3 - pnpm-lock.yaml | 214 ++++++++++++++++-- 31 files changed, 644 insertions(+), 336 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/checkbox.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/checkbox.tsx create mode 100644 packages/checkbox/src/base-types.ts delete mode 100644 packages/checkbox/src/checkbox.tsx delete mode 100644 packages/checkbox/src/checkbox.web.tsx create mode 100644 packages/checkbox/src/native/checkbox-native.native.tsx create mode 100644 packages/checkbox/src/native/checkbox-native.tsx create mode 100644 packages/checkbox/src/native/index.ts create mode 100644 packages/checkbox/src/native/types.ts delete mode 100644 packages/checkbox/src/types.ts create mode 100644 packages/checkbox/src/universal/checkbox.tsx create mode 100644 packages/checkbox/src/universal/checkbox.web.tsx create mode 100644 packages/checkbox/src/universal/index.ts create mode 100644 packages/checkbox/src/universal/types.ts create mode 100644 packages/checkbox/src/web/checkbox-web.tsx create mode 100644 packages/checkbox/src/web/checkbox-web.web.tsx create mode 100644 packages/checkbox/src/web/index.ts create mode 100644 packages/checkbox/src/web/types.ts diff --git a/apps/expo-nativewind/app/(components)/checkbox.tsx b/apps/expo-nativewind/app/(components)/checkbox.tsx index 09287fbf..366623b0 100644 --- a/apps/expo-nativewind/app/(components)/checkbox.tsx +++ b/apps/expo-nativewind/app/(components)/checkbox.tsx @@ -9,7 +9,7 @@ export default function CheckboxScreen() { & { - ref?: React.RefObject>; -}) => { +const CHECKBOX_NATIVE_PROPS = { + hitSlop: 10, +}; + +function Checkbox({ className, native, ...props }: CheckboxPrimitive.RootProps) { return ( - - + + ); -}; -Checkbox.displayName = CheckboxPrimitive.Root.displayName; +} export { Checkbox }; diff --git a/apps/nextjs-nativewind/src/components/ui/checkbox.tsx b/apps/nextjs-nativewind/src/components/ui/checkbox.tsx index 1414f95c..31bb9f97 100644 --- a/apps/nextjs-nativewind/src/components/ui/checkbox.tsx +++ b/apps/nextjs-nativewind/src/components/ui/checkbox.tsx @@ -1,38 +1,34 @@ -'use client'; - import * as CheckboxPrimitive from '@rn-primitives/checkbox'; -import * as React from 'react'; -import { Platform } from 'react-native'; +import { Platform } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; import { Check } from '~/lib/icons/Check'; import { cn } from '~/lib/utils'; -const Checkbox = ({ - ref, - className, - ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => { +const CHECKBOX_NATIVE_PROPS = { + hitSlop: 10, +}; + +function Checkbox({ className, native, ...props }: CheckboxPrimitive.RootProps) { return ( - - + + ); -}; -Checkbox.displayName = CheckboxPrimitive.Root.displayName; +} export { Checkbox }; diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index 552963b2..343cf826 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -14,6 +14,7 @@ "@rn-primitives/slot": "workspace:*", "@rn-primitives/utils": "workspace:*", "@rn-primitives/types": "workspace:*", + "@rn-primitives/checkbox": "workspace:*", "@rn-primitives/core": "workspace:*", "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index 097a5b2d..c631f3fc 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -21,6 +21,7 @@ import { import { AspectRatio } from '~/components/ui/aspect-ratio'; import { Button } from '~/components/ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '~/components/ui/avatar'; +import { Checkbox } from '~/components/ui/checkbox'; export default function Home() { return ( @@ -36,6 +37,7 @@ export default function Home() { + ); @@ -130,3 +132,12 @@ function AvatarExample() { ); } + +function CheckboxExample() { + return ( + + + + + ); +} diff --git a/apps/nextjs-no-rn/src/components/ui/checkbox.tsx b/apps/nextjs-no-rn/src/components/ui/checkbox.tsx new file mode 100644 index 00000000..314a0021 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/checkbox.tsx @@ -0,0 +1,54 @@ +import * as CheckboxPrimitive from '@rn-primitives/checkbox'; +import { Platform } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; +import { cn } from '~/lib/utils'; + +const CHECKBOX_NATIVE_PROPS = { + hitSlop: 10, +}; + +function Checkbox({ className, native, ...props }: CheckboxPrimitive.RootProps) { + return ( + + + + + + + + ); +} + +export { Checkbox }; diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index b5b07e94..ee98ce15 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -16,6 +16,7 @@ "@rn-primitives/slot": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", + "@rn-primitives/checkbox": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", "@tanstack/react-router": "^1.114.3", diff --git a/apps/vite-tanstack-router/src/components/ui/checkbox.tsx b/apps/vite-tanstack-router/src/components/ui/checkbox.tsx new file mode 100644 index 00000000..235e0a34 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/checkbox.tsx @@ -0,0 +1,54 @@ +import * as CheckboxPrimitive from '@rn-primitives/checkbox'; +import { Platform } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; +import { cn } from '@/lib/utils'; + +const CHECKBOX_NATIVE_PROPS = { + hitSlop: 10, +}; + +function Checkbox({ className, native, ...props }: CheckboxPrimitive.RootProps) { + return ( + + + + + + + + ); +} + +export { Checkbox }; diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx index bb8b878c..69f8e72d 100644 --- a/apps/vite-tanstack-router/src/routes/index.tsx +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -16,6 +16,7 @@ import { CardHeader, CardTitle, } from '@/components/ui/card'; +import { Checkbox } from '@/components/ui/checkbox'; import { Text } from '@/components/ui/text'; import { View } from '@rn-primitives/core'; import { createFileRoute } from '@tanstack/react-router'; @@ -41,6 +42,7 @@ export function App() { + ); @@ -132,3 +134,12 @@ function ButtonExample() { ); } + +function CheckboxExample() { + return ( + + + + + ); +} diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json index af032874..7cb23f6f 100644 --- a/packages/checkbox/package.json +++ b/packages/checkbox/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/checkbox", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive checkbox", "license": "MIT", "main": "dist/index.js", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/checkbox": { - "import": "./dist/checkbox.mjs", - "require": "./dist/checkbox.js", - "types": "./dist/checkbox.d.ts", - "default": "./dist/checkbox.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -32,10 +38,11 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.5", + "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/checkbox/src/base-types.ts b/packages/checkbox/src/base-types.ts new file mode 100644 index 00000000..70099420 --- /dev/null +++ b/packages/checkbox/src/base-types.ts @@ -0,0 +1,12 @@ +import type { CheckboxIndicatorProps } from '@radix-ui/react-checkbox'; + +type BaseCheckboxRootProps = { + disabled?: boolean; + defaultChecked?: boolean; + checked?: boolean; + onCheckedChange?: (checked: boolean) => void; +}; + +type BaseCheckboxIndicatorProps = Pick; + +export type { BaseCheckboxIndicatorProps, BaseCheckboxRootProps }; diff --git a/packages/checkbox/src/checkbox.tsx b/packages/checkbox/src/checkbox.tsx deleted file mode 100644 index 4cebc09b..00000000 --- a/packages/checkbox/src/checkbox.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import type { PressableRef, SlottablePressableProps } from '@rn-primitives/types'; -import * as React from 'react'; -import { GestureResponderEvent, Pressable, View } from 'react-native'; -import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; - -interface RootContext extends RootProps { - nativeID?: string; -} - -const CheckboxContext = React.createContext(null); - -const Root = ({ - ref, - asChild, - disabled = false, - checked, - onCheckedChange, - nativeID, - ...props -}: RootProps & { - ref?: React.RefObject; -}) => { - return ( - - - - ); -}; - -Root.displayName = 'RootNativeCheckbox'; - -function useCheckboxContext() { - const context = React.useContext(CheckboxContext); - if (!context) { - throw new Error( - 'Checkbox compound components cannot be rendered outside the Checkbox component' - ); - } - return context; -} - -const Trigger = ({ - ref, - asChild, - onPress: onPressProp, - ...props -}: SlottablePressableProps & { - ref?: React.RefObject; -}) => { - const { disabled, checked, onCheckedChange, nativeID } = useCheckboxContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - const newValue = !checked; - onCheckedChange(newValue); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); -}; - -Trigger.displayName = 'TriggerNativeCheckbox'; - -const Indicator = ({ - ref, - asChild, - forceMount, - ...props -}: IndicatorProps & { - ref?: React.RefObject; -}) => { - const { checked, disabled } = useCheckboxContext(); - - if (!forceMount) { - if (!checked) { - return null; - } - } - - const Component = asChild ? Slot : View; - return ( - - ); -}; - -Indicator.displayName = 'IndicatorNativeCheckbox'; - -export { Indicator, Root }; diff --git a/packages/checkbox/src/checkbox.web.tsx b/packages/checkbox/src/checkbox.web.tsx deleted file mode 100644 index 6a57c542..00000000 --- a/packages/checkbox/src/checkbox.web.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import * as Checkbox from '@radix-ui/react-checkbox'; -import { useAugmentedRef, useIsomorphicLayoutEffect } from '@rn-primitives/hooks'; -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { GestureResponderEvent, Pressable, View } from 'react-native'; -import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; - -const CheckboxContext = React.createContext(null); - -const Root = ({ - ref, - asChild, - disabled, - checked, - onCheckedChange, - onPress: onPressProp, - role: _role, - ...props -}: RootProps & { - ref?: React.RefObject; -}) => { - const augmentedRef = useAugmentedRef({ ref }); - - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - onCheckedChange(!checked); - } - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.dataset.state = checked ? 'checked' : 'unchecked'; - augRef.value = checked ? 'on' : 'off'; - } - }, [checked]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLButtonElement; - augRef.type = 'button'; - augRef.role = 'checkbox'; - - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } - } - }, [disabled]); - - const Component = asChild ? Slot : Pressable; - return ( - - - - - - ); -}; - -Root.displayName = 'RootWebCheckbox'; - -function useCheckboxContext() { - const context = React.useContext(CheckboxContext); - if (context === null) { - throw new Error( - 'Checkbox compound components cannot be rendered outside the Checkbox component' - ); - } - return context; -} - -const Indicator = ({ - ref, - asChild, - forceMount, - ...props -}: IndicatorProps & { - ref?: React.RefObject; -}) => { - const { checked, disabled } = useCheckboxContext(); - const augmentedRef = useAugmentedRef({ ref }); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - augRef.dataset.state = checked ? 'checked' : 'unchecked'; - } - }, [checked]); - - useIsomorphicLayoutEffect(() => { - if (augmentedRef.current) { - const augRef = augmentedRef.current as unknown as HTMLDivElement; - if (disabled) { - augRef.dataset.disabled = 'true'; - } else { - augRef.dataset.disabled = undefined; - } - } - }, [disabled]); - - const Component = asChild ? Slot : View; - return ( - - - - ); -}; - -Indicator.displayName = 'IndicatorWebCheckbox'; - -export { Indicator, Root }; diff --git a/packages/checkbox/src/index.ts b/packages/checkbox/src/index.ts index 3afdb727..d35e52a9 100644 --- a/packages/checkbox/src/index.ts +++ b/packages/checkbox/src/index.ts @@ -1,2 +1,2 @@ -export * from './checkbox'; -export * from './types'; +export { Indicator, Root } from './universal'; +export type { IndicatorProps, RootProps } from './universal/types'; diff --git a/packages/checkbox/src/native/checkbox-native.native.tsx b/packages/checkbox/src/native/checkbox-native.native.tsx new file mode 100644 index 00000000..64dad6f5 --- /dev/null +++ b/packages/checkbox/src/native/checkbox-native.native.tsx @@ -0,0 +1,89 @@ +import { Pressable, View } from '@rn-primitives/core/dist/native'; +import { useControllableState } from '@rn-primitives/hooks'; +import * as React from 'react'; +import type { GestureResponderEvent } from 'react-native'; +import type { IndicatorProps, RootProps } from './types'; + +type CheckboxContextType = RootProps & { + nativeID?: string; +}; + +const CheckboxContext = React.createContext(null); + +function Root({ + disabled, + checked: checkedProp, + onCheckedChange: onCheckedChangeProp, + nativeID, + onPress: onPressProp, + ...props +}: RootProps) { + const [checked = false, onCheckedChange] = useControllableState({ + prop: checkedProp, + defaultProp: false, + onChange: onCheckedChangeProp, + }); + + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + const newValue = !checked; + onCheckedChange?.(newValue); + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [checked, onCheckedChange, onPressProp] + ); + + return ( + + + + ); +} + +function useCheckboxContext() { + const context = React.useContext(CheckboxContext); + if (!context) { + throw new Error( + 'Checkbox compound components cannot be rendered outside the Checkbox component' + ); + } + return context; +} + +const Indicator = ({ forceMount, ...props }: IndicatorProps) => { + const { checked, disabled } = useCheckboxContext(); + + if (!forceMount) { + if (!checked) { + return null; + } + } + + return ( + + ); +}; + +export { Indicator, Root }; diff --git a/packages/checkbox/src/native/checkbox-native.tsx b/packages/checkbox/src/native/checkbox-native.tsx new file mode 100644 index 00000000..9ae9c3c4 --- /dev/null +++ b/packages/checkbox/src/native/checkbox-native.tsx @@ -0,0 +1,17 @@ +import type { IndicatorProps, RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/checkbox/native is only supported on native.'); + } + return null; +} + +function Indicator(props: IndicatorProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Indicator` from @rn-primitives/checkbox/native is only supported on native.'); + } + return null; +} + +export { Root, Indicator }; diff --git a/packages/checkbox/src/native/index.ts b/packages/checkbox/src/native/index.ts new file mode 100644 index 00000000..b9b443e5 --- /dev/null +++ b/packages/checkbox/src/native/index.ts @@ -0,0 +1,2 @@ +export { Indicator, Root } from './checkbox-native'; +export type { IndicatorProps, RootProps } from './types'; diff --git a/packages/checkbox/src/native/types.ts b/packages/checkbox/src/native/types.ts new file mode 100644 index 00000000..eed8c457 --- /dev/null +++ b/packages/checkbox/src/native/types.ts @@ -0,0 +1,11 @@ +import type { PressableProps, ViewProps } from '@rn-primitives/core/dist/native'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseCheckboxIndicatorProps, BaseCheckboxRootProps } from '../base-types'; + +type RootProps = Prettify; +type RootPropsNativeOnly = PressableProps; + +type IndicatorProps = Prettify; +type IndicatorPropsNativeOnly = ViewProps; + +export type { IndicatorProps, IndicatorPropsNativeOnly, RootProps, RootPropsNativeOnly }; diff --git a/packages/checkbox/src/types.ts b/packages/checkbox/src/types.ts deleted file mode 100644 index ef9edb53..00000000 --- a/packages/checkbox/src/types.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { - ForceMountable, - PressableRef, - SlottablePressableProps, - SlottableViewProps, - ViewRef, -} from '@rn-primitives/types'; - -type RootProps = SlottablePressableProps & { - checked: boolean; - onCheckedChange: (checked: boolean) => void; - disabled?: boolean; -}; - -type IndicatorProps = ForceMountable & SlottableViewProps; - -type RootRef = PressableRef; -type IndicatorRef = ViewRef; - -export type { IndicatorProps, IndicatorRef, RootProps, RootRef }; diff --git a/packages/checkbox/src/universal/checkbox.tsx b/packages/checkbox/src/universal/checkbox.tsx new file mode 100644 index 00000000..bb05338c --- /dev/null +++ b/packages/checkbox/src/universal/checkbox.tsx @@ -0,0 +1,18 @@ +import { + Indicator as IndicatorNative, + Root as RootNative, + RootProps as RootPropsNative, +} from '../native'; +import type { IndicatorProps, RootProps } from './types'; + +function Root({ web: _web, ref, native, disabled, ...props }: RootProps) { + return ( + + ); +} + +function Indicator({ web: _web, native, ...props }: IndicatorProps) { + return ; +} + +export { Indicator, Root }; diff --git a/packages/checkbox/src/universal/checkbox.web.tsx b/packages/checkbox/src/universal/checkbox.web.tsx new file mode 100644 index 00000000..52c5715b --- /dev/null +++ b/packages/checkbox/src/universal/checkbox.web.tsx @@ -0,0 +1,25 @@ +import { Pressable, View } from '@rn-primitives/core'; +import { Indicator as IndicatorWeb, Root as RootWeb } from '../web'; +import type { IndicatorProps, RootProps } from './types'; + +function Root({ web, native: _native, style, ...props }: RootProps) { + return ( + + + + ); +} + +function Indicator({ web, native: _native, style, ...props }: IndicatorProps) { + if (style) { + return ( + + + + ); + } + + return ; +} + +export { Indicator, Root }; diff --git a/packages/checkbox/src/universal/index.ts b/packages/checkbox/src/universal/index.ts new file mode 100644 index 00000000..e0f75543 --- /dev/null +++ b/packages/checkbox/src/universal/index.ts @@ -0,0 +1,2 @@ +export { Indicator, Root } from './checkbox'; +export type { IndicatorProps, RootProps } from './types'; diff --git a/packages/checkbox/src/universal/types.ts b/packages/checkbox/src/universal/types.ts new file mode 100644 index 00000000..57f6a0af --- /dev/null +++ b/packages/checkbox/src/universal/types.ts @@ -0,0 +1,23 @@ +import type { PressablePropsUniversal, ViewPropsUniversal } from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseCheckboxIndicatorProps, BaseCheckboxRootProps } from '../base-types'; +import type { IndicatorPropsNativeOnly, RootPropsNativeOnly } from '../native/types'; +import type { IndicatorPropsWebOnly, RootPropsWebOnly } from '../web/types'; + +type RootProps = Prettify< + BaseCheckboxRootProps & + PressablePropsUniversal & { + native?: RootPropsNativeOnly; + web?: RootPropsWebOnly; + } +>; + +type IndicatorProps = Prettify< + BaseCheckboxIndicatorProps & + ViewPropsUniversal & { + native?: IndicatorPropsNativeOnly; + web?: IndicatorPropsWebOnly; + } +>; + +export type { IndicatorProps, RootProps }; diff --git a/packages/checkbox/src/web/checkbox-web.tsx b/packages/checkbox/src/web/checkbox-web.tsx new file mode 100644 index 00000000..4f038faa --- /dev/null +++ b/packages/checkbox/src/web/checkbox-web.tsx @@ -0,0 +1,17 @@ +import type { Checkbox, CheckboxIndicator } from '@radix-ui/react-checkbox'; + +const Root = (() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/checkbox/web is only supported on web.'); + } + return null; +}) as unknown as typeof Checkbox; + +const Indicator = (() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Indicator` from @rn-primitives/checkbox/web is only supported on web.'); + } + return null; +}) as unknown as typeof CheckboxIndicator; + +export { Indicator, Root }; diff --git a/packages/checkbox/src/web/checkbox-web.web.tsx b/packages/checkbox/src/web/checkbox-web.web.tsx new file mode 100644 index 00000000..39885505 --- /dev/null +++ b/packages/checkbox/src/web/checkbox-web.web.tsx @@ -0,0 +1,7 @@ +import { Checkbox, CheckboxIndicator } from '@radix-ui/react-checkbox'; +import { withRNPrimitives } from '@rn-primitives/utils'; + +const Root = withRNPrimitives(Checkbox, 'pressable'); +const Indicator = withRNPrimitives(CheckboxIndicator, 'view'); + +export { Indicator, Root }; diff --git a/packages/checkbox/src/web/index.ts b/packages/checkbox/src/web/index.ts new file mode 100644 index 00000000..5c2bcbb0 --- /dev/null +++ b/packages/checkbox/src/web/index.ts @@ -0,0 +1,2 @@ +export { Indicator, Root } from './checkbox-web'; +export type { IndicatorProps, RootProps } from './types'; diff --git a/packages/checkbox/src/web/types.ts b/packages/checkbox/src/web/types.ts new file mode 100644 index 00000000..158f53b4 --- /dev/null +++ b/packages/checkbox/src/web/types.ts @@ -0,0 +1,11 @@ +import type { CheckboxProps, CheckboxIndicatorProps } from '@radix-ui/react-checkbox'; + +type RootPropsWebOnly = React.ComponentProps<'button'>; + +type IndicatorPropsWebOnly = React.ComponentProps<'span'>; + +type RootProps = CheckboxProps; + +type IndicatorProps = CheckboxIndicatorProps; + +export type { IndicatorProps, IndicatorPropsWebOnly, RootProps, RootPropsWebOnly }; diff --git a/packages/checkbox/tsup.config.ts b/packages/checkbox/tsup.config.ts index 74d8254b..57723ea0 100644 --- a/packages/checkbox/tsup.config.ts +++ b/packages/checkbox/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/checkbox.tsx', 'src/checkbox.web.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/checkbox.tsx', + 'src/universal/checkbox.web.tsx', + 'src/native/index.ts', + 'src/native/checkbox-native.tsx', + 'src/native/checkbox-native.native.tsx', + 'src/web/index.ts', + 'src/web/checkbox-web.tsx', + 'src/web/checkbox-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './checkbox'], + external: [ + 'react', + './universal', + './checkbox', + '../native', + './checkbox-native', + '../web', + './checkbox-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/packages/utils/src/use-web-pressable-props.tsx b/packages/utils/src/use-web-pressable-props.tsx index 175c5da2..81bb12bb 100644 --- a/packages/utils/src/use-web-pressable-props.tsx +++ b/packages/utils/src/use-web-pressable-props.tsx @@ -1,3 +1,5 @@ +'use client'; + import * as React from 'react'; import type { PressableProps } from 'react-native'; import { rnStyleToWebStyle } from './style/rn-style-to-web-style'; diff --git a/packages/utils/tsup.config.ts b/packages/utils/tsup.config.ts index 5a51f537..49284d03 100644 --- a/packages/utils/tsup.config.ts +++ b/packages/utils/tsup.config.ts @@ -4,9 +4,6 @@ export default defineConfig((options: Options) => ({ entry: { index: 'src/index.ts', }, - banner: { - js: "'use client'", - }, clean: true, format: ['cjs', 'esm'], external: ['react'], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1c62103..8eee0924 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -707,6 +707,9 @@ importers: '@rn-primitives/avatar': specifier: workspace:* version: link:../../packages/avatar + '@rn-primitives/checkbox': + specifier: workspace:* + version: link:../../packages/checkbox '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core @@ -774,6 +777,9 @@ importers: '@rn-primitives/avatar': specifier: workspace:* version: link:../../packages/avatar + '@rn-primitives/checkbox': + specifier: workspace:* + version: link:../../packages/checkbox '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core @@ -996,17 +1002,20 @@ importers: packages/checkbox: dependencies: '@radix-ui/react-checkbox': - specifier: ^1.1.1 - version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^1.1.5 + version: 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rn-primitives/core': + specifier: workspace:* + version: link:../core '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot '@rn-primitives/types': specifier: workspace:* version: link:../types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils react-native-web: specifier: '*' version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -3311,6 +3320,9 @@ packages: '@radix-ui/primitive@1.1.1': resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + '@radix-ui/react-accordion@1.2.3': resolution: {integrity: sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A==} peerDependencies: @@ -3376,8 +3388,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-checkbox@1.1.4': - resolution: {integrity: sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==} + '@radix-ui/react-checkbox@1.1.5': + resolution: {integrity: sha512-B0gYIVxl77KYDR25AY9EGe/G//ef85RVBIxQvK+m5pxAC7XihAc/8leMHhDvjvhDu02SBSb6BuytlWr/G7F3+g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3429,6 +3441,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-context-menu@2.2.6': resolution: {integrity: sha512-aUP99QZ3VU84NPsHeaFt4cQUNgJqFsLLOt/RbbWXszZ6MP0DpDyjkFZORr4RpAEx3sUBk+Kc8h13yGtC5Qw8dg==} peerDependencies: @@ -3451,6 +3472,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-dialog@1.1.6': resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} peerDependencies: @@ -3647,6 +3677,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-presence@1.1.3': + resolution: {integrity: sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-primitive@2.0.2': resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} peerDependencies: @@ -3660,6 +3703,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-primitive@2.0.3': + resolution: {integrity: sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-progress@1.1.2': resolution: {integrity: sha512-u1IgJFQ4zNAUTjGdDL5dcl/U8ntOR6jsnhxKb5RKp5Ozwl88xKR9EqRZOe/Mk8tnx0x5tNUe2F+MzsyjqMg0MA==} peerDependencies: @@ -3752,6 +3808,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-slot@1.2.0': + resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-switch@1.1.3': resolution: {integrity: sha512-1nc+vjEOQkJVsJtWPSiISGT6OKm4SiOdjMo+/icLxo2G4vxz1GntC5MzfL4v8ey9OEfw787QCD1y3mUv0NiFEQ==} peerDependencies: @@ -3839,6 +3904,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-controllable-state@1.1.0': resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: @@ -3848,6 +3922,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-controllable-state@1.1.1': + resolution: {integrity: sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-escape-keydown@1.1.0': resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: @@ -3866,6 +3949,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-previous@1.1.0': resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} peerDependencies: @@ -3875,6 +3967,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-rect@1.1.0': resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} peerDependencies: @@ -3893,6 +3994,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-visually-hidden@1.1.2': resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==} peerDependencies: @@ -10661,6 +10771,8 @@ snapshots: '@radix-ui/primitive@1.1.1': {} + '@radix-ui/primitive@1.1.2': {} + '@radix-ui/react-accordion@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 @@ -10722,16 +10834,16 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-checkbox@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-checkbox@1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: @@ -10777,6 +10889,12 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-context-menu@2.2.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 @@ -10797,6 +10915,12 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-context@1.1.2(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-dialog@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 @@ -11030,6 +11154,16 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-presence@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-primitive@2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) @@ -11039,6 +11173,15 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-primitive@2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-progress@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) @@ -11154,6 +11297,13 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-slot@1.2.0(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-switch@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.1 @@ -11252,6 +11402,12 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) @@ -11259,6 +11415,13 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-use-controllable-state@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) @@ -11272,12 +11435,24 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-use-previous@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-use-previous@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.10)(react@19.0.0)': dependencies: '@radix-ui/rect': 1.1.0 @@ -11292,6 +11467,13 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-use-size@1.1.1(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-visually-hidden@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) From 5938930223d54ba2f63d395a1e0fd296d87a3577 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Tue, 15 Apr 2025 15:21:01 -0400 Subject: [PATCH 070/106] chore: update to expo sdk 53 beta --- apps/expo-nativewind/package.json | 22 +- apps/expo-stylesheet/package.json | 22 +- apps/nextjs-nativewind/package.json | 6 +- apps/nextjs-no-rn/package.json | 2 +- apps/vite-tanstack-router/package.json | 2 +- package.json | 2 +- packages/accordion/package.json | 2 +- packages/alert-dialog/package.json | 2 +- packages/aspect-ratio/package.json | 2 +- packages/avatar/package.json | 2 +- packages/checkbox/package.json | 2 +- packages/collapsible/package.json | 2 +- packages/context-menu/package.json | 2 +- packages/core/package.json | 2 +- packages/dialog/package.json | 2 +- packages/dropdown-menu/package.json | 2 +- packages/hooks/package.json | 2 +- packages/hover-card/package.json | 2 +- packages/label/package.json | 2 +- packages/menubar/package.json | 2 +- packages/navigation-menu/package.json | 2 +- packages/popover/package.json | 2 +- packages/portal/package.json | 2 +- packages/progress/package.json | 2 +- packages/radio-group/package.json | 2 +- packages/select/package.json | 2 +- packages/separator/package.json | 2 +- packages/slider/package.json | 2 +- packages/slot/package.json | 2 +- packages/switch/package.json | 2 +- packages/table/package.json | 2 +- packages/tabs/package.json | 2 +- packages/toast/package.json | 2 +- packages/toggle-group/package.json | 2 +- packages/toggle/package.json | 2 +- packages/toolbar/package.json | 2 +- packages/tooltip/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- pnpm-lock.yaml | 5145 ++++++++++-------------- 40 files changed, 2078 insertions(+), 3189 deletions(-) diff --git a/apps/expo-nativewind/package.json b/apps/expo-nativewind/package.json index 796a542f..00352c67 100644 --- a/apps/expo-nativewind/package.json +++ b/apps/expo-nativewind/package.json @@ -48,23 +48,23 @@ "@rn-primitives/utils": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "expo": "53.0.0-canary-20250402-161f57b", - "expo-linking": "7.1.0-canary-20250402-161f57b", - "expo-navigation-bar": "5.0.0-canary-20250402-161f57b", - "expo-router": "5.0.0-canary-20250402-161f57b", - "expo-splash-screen": "0.29.23-canary-20250402-161f57b", - "expo-status-bar": "2.0.2-canary-20250402-161f57b", - "expo-system-ui": "5.0.0-canary-20250402-161f57b", + "expo": "53.0.0-preview.7", + "expo-linking": "7.1.2", + "expo-navigation-bar": "4.1.3", + "expo-router": "5.0.2-preview.4", + "expo-splash-screen": "0.30.4", + "expo-status-bar": "2.2.1", + "expo-system-ui": "5.0.3", "lucide-react-native": "^0.482.0", "nativewind": "^4.1.23", "react": "19.0.0", "react-dom": "19.0.0", - "react-native": "0.79.0-rc.0", - "react-native-reanimated": "~3.17.1", + "react-native": "0.79.0", + "react-native-reanimated": "~3.17.3", "react-native-safe-area-context": "5.3.0", "react-native-screens": "~4.10.0", "react-native-svg": "15.11.2", - "react-native-web": "~0.19.13", + "react-native-web": "~0.20.0", "tailwind-merge": "^3.0.2", "tailwindcss": "^3.4.13", "tailwindcss-animate": "^1.0.7", @@ -73,7 +73,7 @@ "devDependencies": { "@babel/core": "^7.26.0", "@types/react": "19.0.10", - "typescript": "^5.3.3" + "typescript": "^5.8.3" }, "private": true } diff --git a/apps/expo-stylesheet/package.json b/apps/expo-stylesheet/package.json index c5a98ff6..b53dfce6 100644 --- a/apps/expo-stylesheet/package.json +++ b/apps/expo-stylesheet/package.json @@ -46,28 +46,28 @@ "@rn-primitives/tooltip": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", - "expo": "53.0.0-canary-20250402-161f57b", - "expo-linking": "7.1.0-canary-20250402-161f57b", - "expo-navigation-bar": "5.0.0-canary-20250402-161f57b", - "expo-router": "5.0.0-canary-20250402-161f57b", - "expo-splash-screen": "0.29.23-canary-20250402-161f57b", - "expo-status-bar": "2.0.2-canary-20250402-161f57b", - "expo-system-ui": "5.0.0-canary-20250402-161f57b", + "expo": "53.0.0-preview.7", + "expo-linking": "7.1.2", + "expo-navigation-bar": "4.1.3", + "expo-router": "5.0.2-preview.4", + "expo-splash-screen": "0.30.4", + "expo-status-bar": "2.2.1", + "expo-system-ui": "5.0.3", "lucide-react-native": "^0.482.0", "react": "19.0.0", "react-dom": "19.0.0", - "react-native": "0.79.0-rc.0", - "react-native-reanimated": "~3.17.1", + "react-native": "0.79.0", + "react-native-reanimated": "~3.17.3", "react-native-safe-area-context": "5.3.0", "react-native-screens": "~4.10.0", "react-native-svg": "15.11.2", - "react-native-web": "~0.19.13", + "react-native-web": "~0.20.0", "zustand": "^5.0.3" }, "devDependencies": { "@babel/core": "^7.26.0", "@types/react": "19.0.10", - "typescript": "^5.3.3" + "typescript": "^5.8.3" }, "private": true } diff --git a/apps/nextjs-nativewind/package.json b/apps/nextjs-nativewind/package.json index a36f8639..2b1c9647 100644 --- a/apps/nextjs-nativewind/package.json +++ b/apps/nextjs-nativewind/package.json @@ -50,9 +50,9 @@ "next": "15.2.2", "react": "19.0.0", "react-dom": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "react-native-svg": "15.11.2", - "react-native-web": "~0.19.13", + "react-native-web": "~0.20.0", "tailwind-merge": "^3.0.2", "tailwindcss-animate": "^1.0.7" }, @@ -62,6 +62,6 @@ "@types/react-dom": "19.0.4", "postcss": "^8", "tailwindcss": "^3.4.13", - "typescript": "^5" + "typescript": "^5.8.3" } } diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index 343cf826..edfdb8cc 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -34,6 +34,6 @@ "autoprefixer": "^10.4.21", "postcss": "^8", "tailwindcss": "^3.4.13", - "typescript": "^5" + "typescript": "^5.8.3" } } diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index ee98ce15..8779bbc9 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -40,7 +40,7 @@ "autoprefixer": "^10.4.21", "jsdom": "^26.0.0", "postcss": "^8", - "typescript": "^5.3.3", + "typescript": "^5.8.3", "vite": "^6.1.0", "vite-plugin-react-native-web": "^2.1.1", "vitest": "^3.0.5", diff --git a/package.json b/package.json index dc61e968..7970c2f5 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "turbo": "^2.0.1", - "typescript": "^5.3.3" + "typescript": "^5.8.3" }, "pnpm": { "peerDependencyRules": { diff --git a/packages/accordion/package.json b/packages/accordion/package.json index 9508556a..6c12a70d 100644 --- a/packages/accordion/package.json +++ b/packages/accordion/package.json @@ -48,7 +48,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/alert-dialog/package.json b/packages/alert-dialog/package.json index f9cecfed..ae28c584 100644 --- a/packages/alert-dialog/package.json +++ b/packages/alert-dialog/package.json @@ -49,7 +49,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/aspect-ratio/package.json b/packages/aspect-ratio/package.json index c22c5f49..b5f58558 100644 --- a/packages/aspect-ratio/package.json +++ b/packages/aspect-ratio/package.json @@ -46,7 +46,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/avatar/package.json b/packages/avatar/package.json index 597b9e3d..84fa566a 100644 --- a/packages/avatar/package.json +++ b/packages/avatar/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/checkbox/package.json b/packages/checkbox/package.json index 7cb23f6f..4562f5c1 100644 --- a/packages/checkbox/package.json +++ b/packages/checkbox/package.json @@ -48,7 +48,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/collapsible/package.json b/packages/collapsible/package.json index 3319d304..ec0a5e4a 100644 --- a/packages/collapsible/package.json +++ b/packages/collapsible/package.json @@ -41,7 +41,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/context-menu/package.json b/packages/context-menu/package.json index 7e348c57..5ad259e9 100644 --- a/packages/context-menu/package.json +++ b/packages/context-menu/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 51103feb..f886d1d1 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -54,7 +54,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/dialog/package.json b/packages/dialog/package.json index 95bbd347..3f220845 100644 --- a/packages/dialog/package.json +++ b/packages/dialog/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/dropdown-menu/package.json b/packages/dropdown-menu/package.json index c1f6598e..cddb07de 100644 --- a/packages/dropdown-menu/package.json +++ b/packages/dropdown-menu/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 4e0c126f..c878fe9d 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -32,7 +32,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/hover-card/package.json b/packages/hover-card/package.json index 9e908b13..2556654c 100644 --- a/packages/hover-card/package.json +++ b/packages/hover-card/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/label/package.json b/packages/label/package.json index 9d8f304e..6efaab47 100644 --- a/packages/label/package.json +++ b/packages/label/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/menubar/package.json b/packages/menubar/package.json index 52a2ab50..b4b8acc8 100644 --- a/packages/menubar/package.json +++ b/packages/menubar/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/navigation-menu/package.json b/packages/navigation-menu/package.json index 0c717d66..ad2f5d3e 100644 --- a/packages/navigation-menu/package.json +++ b/packages/navigation-menu/package.json @@ -43,7 +43,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/popover/package.json b/packages/popover/package.json index 15b8dc33..750450fe 100644 --- a/packages/popover/package.json +++ b/packages/popover/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/portal/package.json b/packages/portal/package.json index 4f0b532b..40d92fc2 100644 --- a/packages/portal/package.json +++ b/packages/portal/package.json @@ -32,7 +32,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/progress/package.json b/packages/progress/package.json index bb84d102..8fd0f2e1 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/radio-group/package.json b/packages/radio-group/package.json index 695fea47..e50e4585 100644 --- a/packages/radio-group/package.json +++ b/packages/radio-group/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/select/package.json b/packages/select/package.json index 612f0810..1a4622c2 100644 --- a/packages/select/package.json +++ b/packages/select/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/separator/package.json b/packages/separator/package.json index 7c774f45..d74e02f9 100644 --- a/packages/separator/package.json +++ b/packages/separator/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/slider/package.json b/packages/slider/package.json index a89b3eb8..78a9688b 100644 --- a/packages/slider/package.json +++ b/packages/slider/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/slot/package.json b/packages/slot/package.json index 6ccf414c..0c7ab7f9 100644 --- a/packages/slot/package.json +++ b/packages/slot/package.json @@ -29,7 +29,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/switch/package.json b/packages/switch/package.json index ddabb53d..d7cac71e 100644 --- a/packages/switch/package.json +++ b/packages/switch/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/table/package.json b/packages/table/package.json index a53b4e0f..608e3715 100644 --- a/packages/table/package.json +++ b/packages/table/package.json @@ -39,7 +39,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/tabs/package.json b/packages/tabs/package.json index 3dfdcc15..0408d1d1 100644 --- a/packages/tabs/package.json +++ b/packages/tabs/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toast/package.json b/packages/toast/package.json index 63a60d99..e702bf81 100644 --- a/packages/toast/package.json +++ b/packages/toast/package.json @@ -39,7 +39,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index 58d6b50c..ce48e08f 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -41,7 +41,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 8bb8349f..9fab9402 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -40,7 +40,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/toolbar/package.json b/packages/toolbar/package.json index ad7150d8..d77fb884 100644 --- a/packages/toolbar/package.json +++ b/packages/toolbar/package.json @@ -41,7 +41,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/tooltip/package.json b/packages/tooltip/package.json index 6a942c09..ea44fbf5 100644 --- a/packages/tooltip/package.json +++ b/packages/tooltip/package.json @@ -42,7 +42,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/types/package.json b/packages/types/package.json index e72f64ac..f8bb44f6 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -29,7 +29,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/packages/utils/package.json b/packages/utils/package.json index bbdf5cd9..67b0dc50 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -29,7 +29,7 @@ "@tsconfig/react-native": "^1.0.1", "@types/react": "19.0.10", "react": "19.0.0", - "react-native": "0.79.0-rc.0", + "react-native": "0.79.0", "tsup": "^8.1.0" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8eee0924..d742dcc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,40 +13,40 @@ importers: devDependencies: turbo: specifier: ^2.0.1 - version: 2.4.4 + version: 2.5.0 typescript: - specifier: ^5.3.3 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 apps/docs: dependencies: '@astrojs/check': specifier: ^0.9.4 - version: 0.9.4(prettier@3.5.3)(typescript@5.8.2) + version: 0.9.4(prettier@3.5.3)(typescript@5.8.3) '@astrojs/react': specifier: ^4.2.1 - version: 4.2.1(@types/node@20.17.24)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + version: 4.2.4(@types/node@20.17.30)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) '@astrojs/starlight': specifier: ^0.32.2 - version: 0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) + version: 0.32.6(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1)) '@astrojs/starlight-tailwind': specifier: ^3.0.0 - version: 3.0.0(@astrojs/starlight@0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)))(@astrojs/tailwind@6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17))(tailwindcss@3.4.17) + version: 3.0.1(@astrojs/starlight@0.32.6(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1)))(@astrojs/tailwind@6.0.2(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@3.4.17))(tailwindcss@3.4.17) '@astrojs/tailwind': specifier: ^6.0.0 - version: 6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17) + version: 6.0.2(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@3.4.17) '@astrojs/vercel': specifier: ^8.1.2 - version: 8.1.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.36.0) + version: 8.1.3(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.40.0) '@radix-ui/react-collapsible': specifier: ^1.1.0 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-dropdown-menu': specifier: ^2.1.1 - version: 2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@radix-ui/react-slot': specifier: ^1.1.0 - version: 1.1.2(@types/react@19.0.10)(react@19.0.0) + version: 1.2.0(@types/react@19.0.10)(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -154,7 +154,7 @@ importers: version: 1.5.0(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) astro: specifier: ^5.5.2 - version: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -175,7 +175,7 @@ importers: version: 0.32.6 tailwind-merge: specifier: ^3.0.2 - version: 3.0.2 + version: 3.2.0 tailwindcss: specifier: ^3.4.13 version: 3.4.17 @@ -184,16 +184,16 @@ importers: version: 1.0.7(tailwindcss@3.4.17) typescript: specifier: ^5.3.3 - version: 5.8.2 + version: 5.8.3 apps/expo-nativewind: dependencies: '@react-native-async-storage/async-storage': specifier: 2.1.2 - version: 2.1.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + version: 2.1.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) '@react-navigation/native': specifier: ^7.0.0 - version: 7.0.15(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -297,32 +297,32 @@ importers: specifier: ^2.1.1 version: 2.1.1 expo: - specifier: 53.0.0-canary-20250402-161f57b - version: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 53.0.0-preview.7 + version: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: - specifier: 7.1.0-canary-20250402-161f57b - version: 7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 7.1.2 + version: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: - specifier: 5.0.0-canary-20250402-161f57b - version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 4.1.3 + version: 4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: - specifier: 5.0.0-canary-20250402-161f57b - version: 5.0.0-canary-20250402-161f57b(expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.0.2-preview.4 + version: 5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: - specifier: 0.29.23-canary-20250402-161f57b - version: 0.29.23-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) + specifier: 0.30.4 + version: 0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: - specifier: 2.0.2-canary-20250402-161f57b - version: 2.0.2-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 2.2.1 + version: 2.2.1(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: - specifier: 5.0.0-canary-20250402-161f57b - version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + specifier: 5.0.3 + version: 5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: specifier: ^0.482.0 - version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + version: 4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) react: specifier: 19.0.0 version: 19.0.0 @@ -330,26 +330,26 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) react-native-reanimated: - specifier: ~3.17.1 - version: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: ~3.17.3 + version: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-safe-area-context: specifier: 5.3.0 - version: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: specifier: ~4.10.0 - version: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: specifier: 15.11.2 - version: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: - specifier: ~0.19.13 - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ~0.20.0 + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwind-merge: specifier: ^3.0.2 - version: 3.0.2 + version: 3.2.0 tailwindcss: specifier: ^3.4.13 version: 3.4.17 @@ -358,7 +358,7 @@ importers: version: 1.0.7(tailwindcss@3.4.17) zustand: specifier: ^5.0.3 - version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)) + version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)) devDependencies: '@babel/core': specifier: ^7.26.0 @@ -367,17 +367,17 @@ importers: specifier: 19.0.10 version: 19.0.10 typescript: - specifier: ^5.3.3 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 apps/expo-stylesheet: dependencies: '@react-native-async-storage/async-storage': specifier: 2.1.2 - version: 2.1.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + version: 2.1.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) '@react-navigation/native': specifier: ^7.0.0 - version: 7.0.15(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -475,29 +475,29 @@ importers: specifier: workspace:* version: link:../../packages/utils expo: - specifier: 53.0.0-canary-20250402-161f57b - version: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 53.0.0-preview.7 + version: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: - specifier: 7.1.0-canary-20250402-161f57b - version: 7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 7.1.2 + version: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: - specifier: 5.0.0-canary-20250402-161f57b - version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 4.1.3 + version: 4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: - specifier: 5.0.0-canary-20250402-161f57b - version: 5.0.0-canary-20250402-161f57b(expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.0.2-preview.4 + version: 5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: - specifier: 0.29.23-canary-20250402-161f57b - version: 0.29.23-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) + specifier: 0.30.4 + version: 0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: - specifier: 2.0.2-canary-20250402-161f57b - version: 2.0.2-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 2.2.1 + version: 2.2.1(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: - specifier: 5.0.0-canary-20250402-161f57b - version: 5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + specifier: 5.0.3 + version: 5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: specifier: ^0.482.0 - version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -505,26 +505,26 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) react-native-reanimated: - specifier: ~3.17.1 - version: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: ~3.17.3 + version: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-safe-area-context: specifier: 5.3.0 - version: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: specifier: ~4.10.0 - version: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: specifier: 15.11.2 - version: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: - specifier: ~0.19.13 - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ~0.20.0 + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zustand: specifier: ^5.0.3 - version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)) + version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)) devDependencies: '@babel/core': specifier: ^7.26.0 @@ -533,8 +533,8 @@ importers: specifier: 19.0.10 version: 19.0.10 typescript: - specifier: ^5.3.3 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 apps/nextjs-nativewind: dependencies: @@ -645,10 +645,10 @@ importers: version: 2.1.1 lucide-react-native: specifier: ^0.482.0 - version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + version: 4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) next: specifier: 15.2.2 version: 15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -659,24 +659,24 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) react-native-svg: specifier: 15.11.2 - version: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: - specifier: ~0.19.13 - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ~0.20.0 + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwind-merge: specifier: ^3.0.2 - version: 3.0.2 + version: 3.2.0 tailwindcss-animate: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.17) devDependencies: '@types/node': specifier: ^20 - version: 20.17.24 + version: 20.17.30 '@types/react': specifier: 19.0.10 version: 19.0.10 @@ -690,8 +690,8 @@ importers: specifier: ^3.4.13 version: 3.4.17 typescript: - specifier: ^5 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 apps/nextjs-no-rn: dependencies: @@ -739,14 +739,14 @@ importers: version: 19.0.0(react@19.0.0) tailwind-merge: specifier: ^3.0.2 - version: 3.0.2 + version: 3.2.0 tailwindcss-animate: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.17) devDependencies: '@types/node': specifier: ^20 - version: 20.17.24 + version: 20.17.30 '@types/react': specifier: 19.0.10 version: 19.0.10 @@ -763,8 +763,8 @@ importers: specifier: ^3.4.13 version: 3.4.17 typescript: - specifier: ^5 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 apps/vite-tanstack-router: dependencies: @@ -794,13 +794,13 @@ importers: version: link:../../packages/utils '@tanstack/react-router': specifier: ^1.114.3 - version: 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-router-devtools': specifier: ^1.114.3 - version: 1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tiny-invariant@1.3.3) + version: 1.116.0(@tanstack/react-router@1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@tanstack/router-core@1.115.3)(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tiny-invariant@1.3.3) '@tanstack/router-plugin': specifier: ^1.114.3 - version: 1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + version: 1.116.1(@tanstack/react-router@1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -818,7 +818,7 @@ importers: version: 19.0.0(react@19.0.0) tailwind-merge: specifier: ^3.0.2 - version: 3.0.2 + version: 3.2.0 tailwindcss: specifier: ^3.4.13 version: 3.4.17 @@ -831,7 +831,7 @@ importers: version: 10.4.0 '@testing-library/react': specifier: ^16.2.0 - version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@types/react': specifier: ^19.0.10 version: 19.0.10 @@ -840,28 +840,28 @@ importers: version: 19.0.4(@types/react@19.0.10) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + version: 4.4.0(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.3) jsdom: specifier: ^26.0.0 - version: 26.0.0 + version: 26.1.0 postcss: specifier: ^8 version: 8.5.3 typescript: - specifier: ^5.3.3 - version: 5.8.2 + specifier: ^5.8.3 + version: 5.8.3 vite: specifier: ^6.1.0 - version: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + version: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) vite-plugin-react-native-web: specifier: ^2.1.1 version: 2.1.1 vitest: specifier: ^3.0.5 - version: 3.0.9(@types/debug@4.1.12)(@types/node@20.17.24)(jiti@1.21.7)(jsdom@26.0.0)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + version: 3.1.1(@types/debug@4.1.12)(@types/node@20.17.30)(jiti@1.21.7)(jsdom@26.1.0)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) web-vitals: specifier: ^4.2.4 version: 4.2.4 @@ -870,7 +870,7 @@ importers: dependencies: '@radix-ui/react-accordion': specifier: ^1.2.3 - version: 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -894,17 +894,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/alert-dialog: dependencies: '@radix-ui/react-alert-dialog': specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -931,17 +931,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/aspect-ratio: dependencies: '@radix-ui/react-aspect-ratio': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -959,17 +959,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/avatar: dependencies: '@radix-ui/react-avatar': specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -993,11 +993,11 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/checkbox: dependencies: @@ -1018,7 +1018,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1030,17 +1030,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/collapsible: dependencies: '@radix-ui/react-collapsible': specifier: ^1.1.0 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1052,7 +1052,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1064,17 +1064,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/context-menu: dependencies: '@radix-ui/react-context-menu': specifier: ^2.2.1 - version: 2.2.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.2.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1089,7 +1089,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1104,17 +1104,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/core: dependencies: '@react-native/normalize-colors': specifier: ^0.77.1 - version: 0.77.1 + version: 0.77.2 '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1129,7 +1129,7 @@ importers: version: link:../utils react-native-reanimated: specifier: '*' - version: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1141,17 +1141,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/dialog: dependencies: '@radix-ui/react-dialog': specifier: ^1.1.1 - version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1163,7 +1163,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1178,17 +1178,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/dropdown-menu: dependencies: '@radix-ui/react-dropdown-menu': specifier: ^2.1.1 - version: 2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1203,7 +1203,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1218,11 +1218,11 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/hooks: dependencies: @@ -1231,7 +1231,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1243,17 +1243,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/hover-card: dependencies: '@radix-ui/react-hover-card': specifier: ^1.1.1 - version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1268,7 +1268,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1283,17 +1283,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/label: dependencies: '@radix-ui/react-label': specifier: ^2.1.0 - version: 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1302,7 +1302,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1314,17 +1314,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/menubar: dependencies: '@radix-ui/react-menubar': specifier: ^1.1.1 - version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1339,7 +1339,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1354,17 +1354,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/navigation-menu: dependencies: '@radix-ui/react-navigation-menu': specifier: ^1.2.0 - version: 1.2.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.2.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1379,7 +1379,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1394,17 +1394,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/popover: dependencies: '@radix-ui/react-popover': specifier: ^1.1.1 - version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1416,7 +1416,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1431,20 +1431,20 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/portal: dependencies: react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zustand: specifier: ^5.0.3 - version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)) + version: 5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1456,17 +1456,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/progress: dependencies: '@radix-ui/react-progress': specifier: ^1.1.0 - version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1475,7 +1475,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1487,17 +1487,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/radio-group: dependencies: '@radix-ui/react-radio-group': specifier: ^1.2.0 - version: 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1506,7 +1506,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1518,17 +1518,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/select: dependencies: '@radix-ui/react-select': specifier: ^2.1.1 - version: 2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1540,7 +1540,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1555,17 +1555,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/separator: dependencies: '@radix-ui/react-separator': specifier: ^1.1.0 - version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1574,7 +1574,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1586,17 +1586,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/slider: dependencies: '@radix-ui/react-slider': specifier: ^1.2.0 - version: 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1605,7 +1605,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1617,20 +1617,20 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/slot: dependencies: '@radix-ui/react-slot': specifier: ^1.1.0 - version: 1.1.2(@types/react@19.0.10)(react@19.0.0) + version: 1.2.0(@types/react@19.0.10)(react@19.0.0) react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1642,17 +1642,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/switch: dependencies: '@radix-ui/react-switch': specifier: ^1.1.0 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1661,7 +1661,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1673,11 +1673,11 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/table: dependencies: @@ -1689,7 +1689,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1701,17 +1701,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/tabs: dependencies: '@radix-ui/react-tabs': specifier: ^1.1.0 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1720,7 +1720,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1732,11 +1732,11 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/toast: dependencies: @@ -1748,7 +1748,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1760,17 +1760,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/toggle: dependencies: '@radix-ui/react-toggle': specifier: ^1.1.0 - version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1779,7 +1779,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1791,17 +1791,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/toggle-group: dependencies: '@radix-ui/react-toggle-group': specifier: ^1.1.0 - version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1813,7 +1813,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1825,17 +1825,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/toolbar: dependencies: '@radix-ui/react-toolbar': specifier: ^1.1.0 - version: 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1847,7 +1847,7 @@ importers: version: link:../utils react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1859,17 +1859,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/tooltip: dependencies: '@radix-ui/react-tooltip': specifier: ^1.1.2 - version: 1.1.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks @@ -1881,7 +1881,7 @@ importers: version: link:../types react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@rn-primitives/portal': specifier: workspace:* @@ -1896,17 +1896,17 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/types: dependencies: react-native-web: specifier: '*' - version: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -1918,11 +1918,11 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages/utils: devDependencies: @@ -1936,11 +1936,11 @@ importers: specifier: 19.0.0 version: 19.0.0 react-native: - specifier: 0.79.0-rc.0 - version: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.0 + version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) tsup: specifier: ^8.1.0 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + version: 8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) packages: @@ -1960,8 +1960,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@3.1.1': - resolution: {integrity: sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==} + '@asamuzakjp/css-color@3.1.2': + resolution: {integrity: sha512-nwgc7jPn3LpZ4JWsoHtuwBsad1qSSLDDX634DdG0PBJofIuIEtSWk4KkRmuXyu178tjuHAbwiMNNzwqIyLYxZw==} '@astrojs/check@0.9.4': resolution: {integrity: sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==} @@ -1990,8 +1990,8 @@ packages: '@astrojs/markdown-remark@6.3.1': resolution: {integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==} - '@astrojs/mdx@4.2.1': - resolution: {integrity: sha512-huVIR6YNtdJ233swDwj4RWCjhpUtz8wTLybPPZi5tdBFxwahMRYcGtGVEHjyUE9z+Je2LUVgQTzrPgvJi53oOQ==} + '@astrojs/mdx@4.2.4': + resolution: {integrity: sha512-c832AWpiMCcuPY8j+yr5T+hOf8n5RlKLFHlNTt15xxkOk3zjFJP81TIYKrMrbhD5rMzJ09Ixi+xM0m68w2Q0DQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 @@ -2000,8 +2000,8 @@ packages: resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} - '@astrojs/react@4.2.1': - resolution: {integrity: sha512-g0P6zxG7RPHNcbmMB15dJJ83+ApBVFBcgnf6BnMz/PVXM150Pa1vYKeuTcWhERqLNgmpI2uXuch5MecIhrUlqQ==} + '@astrojs/react@4.2.4': + resolution: {integrity: sha512-Qnj4dPsGZzUF0duQG+m6B7oFbGZpiRTl8TP6WvjeMr6BlI3dobj7wkKc/I9dQhUrWsswUafbPJuOJPGFUZtmKQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} peerDependencies: '@types/react': ^17.0.50 || ^18.0.21 || ^19.0.0 @@ -2012,20 +2012,20 @@ packages: '@astrojs/sitemap@3.3.0': resolution: {integrity: sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==} - '@astrojs/starlight-tailwind@3.0.0': - resolution: {integrity: sha512-oYHG9RY+VaOSeAhheVZfm9HDA892qvcQA82VT86POYmg1OsgBuWwdf1ZbofV8iq/z5kO06ajcSdzhPE8lhEx8g==} + '@astrojs/starlight-tailwind@3.0.1': + resolution: {integrity: sha512-9gPBaglNYuD3gLSF+4RvmbO3DxMMMby/AYFuwZkS+BLo67WQWyBIdYtmof814Gi750qSnt0sCvhqFAURqbA1Cw==} peerDependencies: '@astrojs/starlight': '>=0.30.0' - '@astrojs/tailwind': ^5.1.3 + '@astrojs/tailwind': ^5.1.3 || ^6.0.0 tailwindcss: ^3.3.3 - '@astrojs/starlight@0.32.3': - resolution: {integrity: sha512-oss5RxvCpuO1FSQyTC0vti5FOjRY0fHiJbGLYbnRsBNVfTzRMKRYMTfNwiduZuVNXML7zhV6QLCFjYpHt0PKuw==} + '@astrojs/starlight@0.32.6': + resolution: {integrity: sha512-ASWGwNzq+0TmJ+GJFFxFFxx6Yra7BqIIMQbvOy/cweTHjqejB6mcaEWtS3Mag12LM7tXCES7v/fzmdPgjz8Yxw==} peerDependencies: astro: ^5.1.5 - '@astrojs/tailwind@6.0.0': - resolution: {integrity: sha512-GbEK2/h0nvY8i6g1GZT5ddHAgj71lQIf34/j7+jPLhUti3xDxKcWElApDe2jWvqAaKl2oKEh045ITSm8mU9BVQ==} + '@astrojs/tailwind@6.0.2': + resolution: {integrity: sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg==} peerDependencies: astro: ^3.0.0 || ^4.0.0 || ^5.0.0 tailwindcss: ^3.0.24 @@ -2034,8 +2034,8 @@ packages: resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} - '@astrojs/vercel@8.1.2': - resolution: {integrity: sha512-Qps7oYfQVvXov/ucP5sjTqRAgqbY84ayf8zyz5lNqTy88As09KGaZJTW4qrxU2xO5GdoE3+AoMGDUkU2rVY+cg==} + '@astrojs/vercel@8.1.3': + resolution: {integrity: sha512-mHO28cc0FQbA6ncFteW5Hqf2l0gSthPNF8/dpM1sQAOD92Mbyi93/4EhTYj07Xhi3t37FU4tPtzyQoCAn4P4Kg==} peerDependencies: astro: ^5.0.0 @@ -2057,32 +2057,32 @@ packages: resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.10': - resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.26.9': - resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.26.3': - resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} + '@babel/helper-create-regexp-features-plugin@7.27.0': + resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-define-polyfill-provider@0.6.3': - resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -2140,49 +2140,19 @@ packages: resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.26.10': - resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} engines: {node: '>=6.9.0'} '@babel/highlight@7.25.9': resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.10': - resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-proposal-decorators@7.25.9': resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} engines: {node: '>=6.9.0'} @@ -2195,12 +2165,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -2245,12 +2209,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.26.0': resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} @@ -2321,12 +2279,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/plugin-transform-arrow-functions@7.25.9': resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} @@ -2345,14 +2297,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.26.5': - resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.25.9': - resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + '@babel/plugin-transform-block-scoping@7.27.0': + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2363,12 +2309,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.26.0': - resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.25.9': resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} @@ -2387,36 +2327,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.26.3': - resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.25.9': resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} @@ -2441,12 +2351,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.25.9': - resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.25.9': resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} @@ -2459,48 +2363,18 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.25.9': - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.26.3': resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.25.9': - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.25.9': - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} engines: {node: '>=6.9.0'} @@ -2519,12 +2393,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.25.9': - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.25.9': resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} engines: {node: '>=6.9.0'} @@ -2555,12 +2423,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.25.9': - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-display-name@7.25.9': resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} engines: {node: '>=6.9.0'} @@ -2597,20 +2459,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.25.9': - resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.26.0': - resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.25.9': - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + '@babel/plugin-transform-regenerator@7.27.0': + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2645,26 +2495,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.26.7': - resolution: {integrity: sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.26.8': - resolution: {integrity: sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + '@babel/plugin-transform-typescript@7.27.0': + resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2675,62 +2507,39 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.26.9': - resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-flow@7.25.9': - resolution: {integrity: sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-react@7.26.3': resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.26.0': - resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} + '@babel/preset-typescript@7.27.0': + resolution: {integrity: sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/register@7.25.9': - resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.26.10': - resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} engines: {node: '>=6.9.0'} - '@babel/template@7.26.9': - resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.26.10': - resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.10': - resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} - engines: {node: '>=6.9.0'} + '@capsizecss/metrics@3.5.0': + resolution: {integrity: sha512-Ju2I/Qn3c1OaU8FgeW4Tc22D4C9NwyVfKzNmzst59bvxBjPoLYNZMqFYn+HvCtn4MpXwiaDtCE8fNuQLpdi9yA==} + + '@capsizecss/unpack@2.4.0': + resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} @@ -2785,224 +2594,231 @@ packages: '@emmetio/stream-reader@2.2.0': resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} - '@emnapi/runtime@1.3.1': - resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + '@emnapi/runtime@1.4.3': + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - '@esbuild/aix-ppc64@0.25.1': - resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} + '@esbuild/aix-ppc64@0.25.2': + resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.1': - resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} + '@esbuild/android-arm64@0.25.2': + resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.1': - resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} + '@esbuild/android-arm@0.25.2': + resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.1': - resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} + '@esbuild/android-x64@0.25.2': + resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.1': - resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} + '@esbuild/darwin-arm64@0.25.2': + resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.1': - resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} + '@esbuild/darwin-x64@0.25.2': + resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.1': - resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} + '@esbuild/freebsd-arm64@0.25.2': + resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.1': - resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} + '@esbuild/freebsd-x64@0.25.2': + resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.1': - resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} + '@esbuild/linux-arm64@0.25.2': + resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.1': - resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} + '@esbuild/linux-arm@0.25.2': + resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.1': - resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} + '@esbuild/linux-ia32@0.25.2': + resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.1': - resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} + '@esbuild/linux-loong64@0.25.2': + resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.1': - resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} + '@esbuild/linux-mips64el@0.25.2': + resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.1': - resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} + '@esbuild/linux-ppc64@0.25.2': + resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.1': - resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} + '@esbuild/linux-riscv64@0.25.2': + resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.1': - resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} + '@esbuild/linux-s390x@0.25.2': + resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.1': - resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} + '@esbuild/linux-x64@0.25.2': + resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.1': - resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} + '@esbuild/netbsd-arm64@0.25.2': + resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.1': - resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} + '@esbuild/netbsd-x64@0.25.2': + resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.1': - resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} + '@esbuild/openbsd-arm64@0.25.2': + resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.1': - resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} + '@esbuild/openbsd-x64@0.25.2': + resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.1': - resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} + '@esbuild/sunos-x64@0.25.2': + resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.1': - resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} + '@esbuild/win32-arm64@0.25.2': + resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.1': - resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} + '@esbuild/win32-ia32@0.25.2': + resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.1': - resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} + '@esbuild/win32-x64@0.25.2': + resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@expo/cli@1.0.0-canary-20250402-161f57b': - resolution: {integrity: sha512-PyEOmqhtSzPTuAUWSqix6ArhC2ndSejHKLCSfsHF1+3Wh7276J/3QtlNAZ5+7KLDEr4EK+GFhtLH4r9Pbc9fhQ==} + '@expo/cli@0.24.2': + resolution: {integrity: sha512-CW/mLfLMk7FRBIka+4W+3dmv93uAQ3MGe4e7iWbmuW/Pm6F9V8ueoPZ11cUGbEQX7MGJfyb4jZQtgYecoPX8yw==} hasBin: true '@expo/code-signing-certificates@0.0.5': resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} - '@expo/config-plugins@9.1.0-canary-20250402-161f57b': - resolution: {integrity: sha512-Sbnh2oZOoBI1TpCD7eFTczH903lFXRS4YM8q0wE03oyWRM//EM2kHTDnNtkSIsorjWdVT5yBM7MlSTwbS3/wxg==} + '@expo/config-plugins@9.1.4': + resolution: {integrity: sha512-1KNE6HvPotIlD4AzlrwVlzi4DmuVJWPYAwC6jM6wYpqo2HDCS5fng02Om7JfZgGmXJC1LM0anKDZu2u5gQx3Gg==} - '@expo/config-types@53.0.0-canary-20250402-161f57b': - resolution: {integrity: sha512-nfHbNvJKzux66DoS/HzLpTbLbwnnxs6t9qdipVptpYhT86kaaiCzN78tT0E9PRZiJX9VZnWcADt1vdEWR+IlHw==} + '@expo/config-types@53.0.0-preview.3': + resolution: {integrity: sha512-0/7J4UtaJzf0Lwj++y63K7JEv091RcUk5Q6WWbIzsAOG4yJ7hF8ncJaaGVWYzcTIWHvv7wScLKUTj7jSmy9Kvg==} - '@expo/config@11.0.0-canary-20250402-161f57b': - resolution: {integrity: sha512-86HcVliFFaisxzLzOEKy9wnnfgYXxy6JxKUaEnHgmnfv7PDmNBOBFXaVCHIiS4r0hEOHX4KpIJQu38/5/UTxdQ==} + '@expo/config@11.0.3': + resolution: {integrity: sha512-VOb7II8xTqewN7axNKusZDidjkS8R2/wa7yep3fFfBzdyXvy1mTzpeAWDsMY1g77MOB/Byswy0MoP/Mi1cWkww==} - '@expo/devcert@1.1.4': - resolution: {integrity: sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==} + '@expo/devcert@1.2.0': + resolution: {integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==} - '@expo/env@1.0.1-canary-20250402-161f57b': - resolution: {integrity: sha512-ikeBNaSOK+ext31nHSMaz7olzIgmagk8CIMRDDLNUw8i27MDY6Erajl8SzKGZh2xDKooDqiqO1ZZ36Ep4fgu4A==} + '@expo/env@1.0.3': + resolution: {integrity: sha512-94l5HV9FSCMt4dnFykFmcfh94NmajyaoYXY2Z36pTdR5UbgCtR1brAhlvJ/5Ma8eHbzdqvmta+LXA9LHNKpyww==} - '@expo/fingerprint@0.11.12-canary-20250402-161f57b': - resolution: {integrity: sha512-zwoVnzKssT5UVeDkHU/nUrxBBg8wUVOIEoG6035CY9f7ty0J95MS5ZuqpLGi6obL98GOvJp/l1GsAIvHy3fkYw==} + '@expo/fingerprint@0.12.2': + resolution: {integrity: sha512-UUTQdu1NYRd1pBeHidom0aB3oUrORlqCVRf4wSm9wbTv7KRIhkJoxI8oKRkUHUXyxcVv8de6ybrADoc5aGFQ1w==} hasBin: true - '@expo/image-utils@0.6.6-canary-20250402-161f57b': - resolution: {integrity: sha512-jSep2nlDG1wpJQk1rcav3PBYWrdNzk55b9S4s22RIoqwFZqetNhvp85aUyasUgcmrAD5tW3nTibDrnkZVBhNpg==} + '@expo/image-utils@0.7.2': + resolution: {integrity: sha512-j5/+1Gfg03WPnzWrbOZ6tl0zuUE33IVRfs8Sl7gZhjtgczbYC8IUXHSA2MsLXTrPlRXzZXBKm3toPjwbZulqlA==} - '@expo/json-file@9.0.3-canary-20250402-161f57b': - resolution: {integrity: sha512-7a9tHcd4R2Ie/sTwAD4n4QYSnb2QJAJrcMqtM6xaooYGwlQBJoE6PwEe9kIDt57TK9/jUW0M/qD7H8BF6p8x6Q==} + '@expo/json-file@9.1.2': + resolution: {integrity: sha512-J/ncQd3dTXaHddfHCXw5A95yVLD6myp0tfI3BWPYJQdwrhIlL5fm2NVOqCcJIBM/NC0l6J+Lfw/ZCeZZmT70Gg==} - '@expo/metro-config@0.20.0-canary-20250402-161f57b': - resolution: {integrity: sha512-w35XVMWRPSPEXAoJsWqhUxG800Whgaaos2PYl+MePccU+Sg8CNL4KWekyJtPuKxYTYC1GDRABackOFHh31vqmQ==} + '@expo/metro-config@0.20.4': + resolution: {integrity: sha512-NulhAXqKgHnJayBQ98UEs0QdCeHovCGGPkeJ88drKws++SAKsmTyG7fwtPkujKiVADfxedlzi/qirlwfVQjwmw==} - '@expo/metro-runtime@5.0.0-canary-20250402-161f57b': - resolution: {integrity: sha512-CYtALRzjjflgOPjoZqgsRaGo7Jwp5queMSnLk5kzKz9M6qnZNuBqA3B51dS5KaDxcXxEuBkU5VQwzFwTMEpxqg==} + '@expo/metro-runtime@5.0.2': + resolution: {integrity: sha512-99kBh9+Ng09QmgunlHp2JuKcbPKQZCzcYeSksX65R4Zl23nxLaTnwWXiIRgHIV7vjLh10ElLrgPo48G4rWddzA==} peerDependencies: react-native: '*' - '@expo/osascript@2.1.7-canary-20250402-161f57b': - resolution: {integrity: sha512-TeuGclF0v3b1O8uWjFSUGpmhcIdKQRzplm7z4w/v7UUZrpQJMjO0t9YG+q+ouwyXsWXb0+YcpiCgEf0++a7Tcw==} + '@expo/osascript@2.2.2': + resolution: {integrity: sha512-hESu/JDywyfeIE1B7K2OM7Yco5bKQuPkv8dPklGHFTbCoWJ6+uu4Xtn5RmXCXa52maWyiFGYnMBg/ZNLdJE0fw==} engines: {node: '>=12'} - '@expo/package-manager@1.6.2-canary-20250402-161f57b': - resolution: {integrity: sha512-nAri+muAmeUBLk4JOnRwpiWfHvf6nA5C4rsJpTwvFfMKukF3RuaHUo+k4/Bw/183DJGVtc8U9ziyuxEoY0oRCg==} + '@expo/package-manager@1.8.2': + resolution: {integrity: sha512-Cn/E8dMYQ4V1/rUNUvq7zxcypby/XMMw6Sb6mJc0sm9EANCO6L8QKWXud5Ns/0032z1yHwG8CjGI29f7vvRliA==} - '@expo/plist@0.2.3-canary-20250402-161f57b': - resolution: {integrity: sha512-jKrpo/JsOqwYi/rzlxW0Q8r09/sOALzxpwzUKb7mLQYV1OiPunu9rv97p0tCGF+6TtsNu0BVSiFrkAO3gs0YfA==} + '@expo/plist@0.3.2': + resolution: {integrity: sha512-wJ4ifg8AIQN3xEDrAJ7mrd0vSsFP7bFuuJtcXBoE4ORrt3AE+0mSQAAXEjb7eKMsGaxiSZwHqrkqYAzv5Ypidw==} - '@expo/prebuild-config@9.0.0-canary-20250402-161f57b': - resolution: {integrity: sha512-jlDARAkBWYS3Hpx4CBqptbQWNQb6jvwpgPwaz6ku6sSY4ylQTzlbe22rtc/gquViJDhB8HzGLPNH3lRYJRTk6A==} + '@expo/prebuild-config@9.0.0': + resolution: {integrity: sha512-39OPxvEhzU5JsXkbzg8mE4fueWHySqVQ2n5Ay2RBWfaqpGKeMv/vJ63cZYYEyb60Dd4al3FrHStGkdJ0W/Jh+A==} '@expo/sdk-runtime-versions@1.0.0': resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - '@expo/server@0.6.0-canary-20250402-161f57b': - resolution: {integrity: sha512-teB5rLoVS3vYUdDAZceLQxqjHPkIpuOVYkk8svE9oink4XT84098MTH6C1geTsz64wbGcnDtJkx2WdFIUE+hYQ==} + '@expo/server@0.6.2': + resolution: {integrity: sha512-ko+dq+1WEC126/iGVv3g+ChFCs9wGyKtGlnYphwrOQbFBBqX19sn6UV0oUks6UdhD+MyzUv+w/TOdktdcI0Cgg==} '@expo/spawn-async@1.7.2': resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} engines: {node: '>=12'} - '@expo/vector-icons@14.0.4': - resolution: {integrity: sha512-+yKshcbpDfbV4zoXOgHxCwh7lkE9VVTT5T03OUlBsqfze1PLy6Hi4jp1vSb1GVbY6eskvMIivGVc9SKzIv0oEQ==} + '@expo/sudo-prompt@9.3.2': + resolution: {integrity: sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==} + + '@expo/vector-icons@14.1.0': + resolution: {integrity: sha512-7T09UE9h8QDTsUeMGymB4i+iqvtEeaO5VvUjryFB4tugDTG/bkzViWA74hm5pfjjDEhYMXWaX112mcvhccmIwQ==} + peerDependencies: + expo-font: '*' + react: 19.0.0 + react-native: '*' '@expo/ws-tunnel@1.0.6': resolution: {integrity: sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==} @@ -3314,17 +3130,14 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@radix-ui/number@1.1.0': - resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - - '@radix-ui/primitive@1.1.1': - resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} '@radix-ui/primitive@1.1.2': resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} - '@radix-ui/react-accordion@1.2.3': - resolution: {integrity: sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A==} + '@radix-ui/react-accordion@1.2.4': + resolution: {integrity: sha512-SGCxlSBaMvEzDROzyZjsVNzu9XY5E28B3k8jOENyrz6csOv/pG1eHyYfLJai1n9tRjwG61coXDhfpgtxKxUv5g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3336,8 +3149,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-alert-dialog@1.1.6': - resolution: {integrity: sha512-p4XnPqgej8sZAAReCAKgz1REYZEBLR8hU9Pg27wFnCWIMc8g1ccCs0FjBcy05V15VTu8pAePw/VDYeOm/uZ6yQ==} + '@radix-ui/react-alert-dialog@1.1.7': + resolution: {integrity: sha512-7Gx1gcoltd0VxKoR8mc+TAVbzvChJyZryZsTam0UhoL92z0L+W8ovxvcgvd+nkz24y7Qc51JQKBAGe4+825tYw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3349,8 +3162,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-arrow@1.1.2': - resolution: {integrity: sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==} + '@radix-ui/react-arrow@1.1.3': + resolution: {integrity: sha512-2dvVU4jva0qkNZH6HHWuSz5FN5GeU5tymvCgutF8WaXz9WnD1NgUhy73cqzkjkN4Zkn8lfTPv5JIfrC221W+Nw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3362,8 +3175,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-aspect-ratio@1.1.2': - resolution: {integrity: sha512-TaJxYoCpxJ7vfEkv2PTNox/6zzmpKXT6ewvCuf2tTOIVN45/Jahhlld29Yw4pciOXS2Xq91/rSGEdmEnUWZCqA==} + '@radix-ui/react-aspect-ratio@1.1.3': + resolution: {integrity: sha512-yIrYZUc2e/JtRkDpuJCmaR6kj/jzekDfQLcPFdEWzSOygCPy8poR4YcszaHP5A7mh25ncofHEpeTwfhxEuBv8Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3375,8 +3188,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-avatar@1.1.3': - resolution: {integrity: sha512-Paen00T4P8L8gd9bNsRMw7Cbaz85oxiv+hzomsRZgFm2byltPFDtfcoqlWJ8GyZlIBWgLssJlzLCnKU0G0302g==} + '@radix-ui/react-avatar@1.1.4': + resolution: {integrity: sha512-+kBesLBzwqyDiYCtYFK+6Ktf+N7+Y6QOTUueLGLIbLZ/YeyFW6bsBGDsN+5HxHpM55C90u5fxsg0ErxzXTcwKA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3401,8 +3214,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.1.3': - resolution: {integrity: sha512-jFSerheto1X03MUC0g6R7LedNW9EEGWdg9W1+MlpkMLwGkgkbUXLPBH/KIuWKXUoeYRVY11llqbTBDzuLg7qrw==} + '@radix-ui/react-collapsible@1.1.4': + resolution: {integrity: sha512-u7LCw1EYInQtBNLGjm9nZ89S/4GcvX1UR5XbekEgnQae2Hkpq39ycJ1OhdeN1/JDfVNG91kWaWoest127TaEKQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3414,8 +3227,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collection@1.1.2': - resolution: {integrity: sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==} + '@radix-ui/react-collection@1.1.3': + resolution: {integrity: sha512-mM2pxoQw5HJ49rkzwOs7Y6J4oYH22wS8BfK2/bBxROlI4xuR0c4jEenQP63LlTlDkO6Buj2Vt+QYAYcOgqtrXA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3427,20 +3240,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.0.0': - resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} - peerDependencies: - react: 19.0.0 - - '@radix-ui/react-compose-refs@1.1.1': - resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: @@ -3450,8 +3249,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-context-menu@2.2.6': - resolution: {integrity: sha512-aUP99QZ3VU84NPsHeaFt4cQUNgJqFsLLOt/RbbWXszZ6MP0DpDyjkFZORr4RpAEx3sUBk+Kc8h13yGtC5Qw8dg==} + '@radix-ui/react-context-menu@2.2.7': + resolution: {integrity: sha512-EwO3tyyqwGaLPg0P64jmIKJnBywD0yjiL1eRuMPyhUXPkWWpa5JPDS+oyeIWHy2JbhF+NUlfUPVq6vE7OqgZww==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3463,15 +3262,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-context@1.1.1': - resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: @@ -3481,8 +3271,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.6': - resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} + '@radix-ui/react-dialog@1.1.7': + resolution: {integrity: sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3494,8 +3284,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-direction@1.1.0': - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: '@types/react': '*' react: 19.0.0 @@ -3503,8 +3293,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.5': - resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + '@radix-ui/react-dismissable-layer@1.1.6': + resolution: {integrity: sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3516,8 +3306,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-dropdown-menu@2.1.6': - resolution: {integrity: sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==} + '@radix-ui/react-dropdown-menu@2.1.7': + resolution: {integrity: sha512-7/1LiuNZuCQE3IzdicGoHdQOHkS2Q08+7p8w6TXZ6ZjgAULaCI85ZY15yPl4o4FVgoKLRT43/rsfNVN8osClQQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3529,8 +3319,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.1.1': - resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} peerDependencies: '@types/react': '*' react: 19.0.0 @@ -3538,8 +3328,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.1.2': - resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} + '@radix-ui/react-focus-scope@1.1.3': + resolution: {integrity: sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3551,8 +3341,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-hover-card@1.1.6': - resolution: {integrity: sha512-E4ozl35jq0VRlrdc4dhHrNSV0JqBb4Jy73WAhBEK7JoYnQ83ED5r0Rb/XdVKw89ReAJN38N492BAPBZQ57VmqQ==} + '@radix-ui/react-hover-card@1.1.7': + resolution: {integrity: sha512-HwM03kP8psrv21J1+9T/hhxi0f5rARVbqIZl9+IAq13l4j4fX+oGIuxisukZZmebO7J35w9gpoILvtG8bbph0w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3564,30 +3354,17 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-label@2.1.2': - resolution: {integrity: sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==} + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: 19.0.0 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-menu@2.1.6': - resolution: {integrity: sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==} + '@radix-ui/react-label@2.1.3': + resolution: {integrity: sha512-zwSQ1NzSKG95yA0tvBMgv6XPHoqapJCcg9nsUBaQQ66iRBhZNhlpaQG2ERYYX4O4stkYFK5rxj5NsWfO9CS+Hg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3599,8 +3376,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-menubar@1.1.6': - resolution: {integrity: sha512-FHq7+3DlXwh/7FOM4i0G4bC4vPjiq89VEEvNF4VMLchGnaUuUbE5uKXMUCjdKaOghEEMeiKa5XCa2Pk4kteWmg==} + '@radix-ui/react-menu@2.1.7': + resolution: {integrity: sha512-tBODsrk68rOi1/iQzbM54toFF+gSw/y+eQgttFflqlGekuSebNqvFNHjJgjqPhiMb4Fw9A0zNFly1QT6ZFdQ+Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3612,8 +3389,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-navigation-menu@1.2.5': - resolution: {integrity: sha512-myMHHQUZ3ZLTi8W381/Vu43Ia0NqakkQZ2vzynMmTUtQQ9kNkjzhOwkZC9TAM5R07OZUVIQyHC06f/9JZJpvvA==} + '@radix-ui/react-menubar@1.1.7': + resolution: {integrity: sha512-YB2zFhGdZ5SWEgRS+PgrF7EkwpsjEHntIFB/LRbT49LJdnIeK/xQQyuwLiRcOCgTDN+ALlPXQ08f0P0+TfR41g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3625,8 +3402,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popover@1.1.6': - resolution: {integrity: sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg==} + '@radix-ui/react-navigation-menu@1.2.6': + resolution: {integrity: sha512-HJqyzqG74Lj7KV58rk73i/B1nnopVyCfUmKgeGWWrZZiCuMNcY0KKugTrmqMbIeMliUnkBUDKCy9J6Mzl6xeWw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3638,8 +3415,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.2': - resolution: {integrity: sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==} + '@radix-ui/react-popover@1.1.7': + resolution: {integrity: sha512-I38OYWDmJF2kbO74LX8UsFydSHWOJuQ7LxPnTefjxxvdvPLempvAnmsyX9UsBlywcbSGpRH7oMLfkUf+ij4nrw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3651,8 +3428,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.4': - resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + '@radix-ui/react-popper@1.2.3': + resolution: {integrity: sha512-iNb9LYUMkne9zIahukgQmHlSBp9XWGeQQ7FvUGNk45ywzOb6kQa+Ca38OphXlWDiKvyneo9S+KSJsLfLt8812A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3664,8 +3441,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.2': - resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + '@radix-ui/react-portal@1.1.5': + resolution: {integrity: sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3690,19 +3467,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.0.2': - resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: 19.0.0 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-primitive@2.0.3': resolution: {integrity: sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g==} peerDependencies: @@ -3716,8 +3480,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-progress@1.1.2': - resolution: {integrity: sha512-u1IgJFQ4zNAUTjGdDL5dcl/U8ntOR6jsnhxKb5RKp5Ozwl88xKR9EqRZOe/Mk8tnx0x5tNUe2F+MzsyjqMg0MA==} + '@radix-ui/react-progress@1.1.3': + resolution: {integrity: sha512-F56aZPGTPb4qJQ/vDjnAq63oTu/DRoIG/Asb5XKOWj8rpefNLtUllR969j5QDN2sRrTk9VXIqQDRj5VvAuquaw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3729,8 +3493,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-radio-group@1.2.3': - resolution: {integrity: sha512-xtCsqt8Rp09FK50ItqEqTJ7Sxanz8EM8dnkVIhJrc/wkMMomSmXHvYbhv3E7Zx4oXh98aaLt9W679SUYXg4IDA==} + '@radix-ui/react-radio-group@1.2.4': + resolution: {integrity: sha512-oLz7ATfKgVTUbpr5OBu6Q7hQcnV22uPT306bmG0QwgnKqBStR98RfWfJGCfW/MmhL4ISmrmmBPBW+c77SDwV9g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3742,8 +3506,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.2': - resolution: {integrity: sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==} + '@radix-ui/react-roving-focus@1.1.3': + resolution: {integrity: sha512-ufbpLUjZiOg4iYgb2hQrWXEPYX6jOLBbR27bDyAff5GYMRrCzcze8lukjuXVUQvJ6HZe8+oL+hhswDcjmcgVyg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3755,8 +3519,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-select@2.1.6': - resolution: {integrity: sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==} + '@radix-ui/react-select@2.1.7': + resolution: {integrity: sha512-exzGIRtc7S8EIM2KjFg+7lJZsH7O7tpaBaJbBNVDnOZNhtoQ2iV+iSNfi2Wth0m6h3trJkMVvzAehB3c6xj/3Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3768,8 +3532,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-separator@1.1.2': - resolution: {integrity: sha512-oZfHcaAp2Y6KFBX6I5P1u7CQoy4lheCGiYj+pGFrHy8E/VNRb5E39TkTr3JrV520csPBTZjkuKFdEsjS5EUNKQ==} + '@radix-ui/react-separator@1.1.3': + resolution: {integrity: sha512-2omrWKJvxR0U/tkIXezcc1nFMwtLU0+b/rDK40gnzJqTLWQ/TD/D5IYVefp9sC3QWfeQbpSbEA6op9MQKyaALQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3781,8 +3545,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slider@1.2.3': - resolution: {integrity: sha512-nNrLAWLjGESnhqBqcCNW4w2nn7LxudyMzeB6VgdyAnFLC6kfQgnAjSL2v6UkQTnDctJBlxrmxfplWS4iYjdUTw==} + '@radix-ui/react-slider@1.2.4': + resolution: {integrity: sha512-Vr/OgNejNJPAghIhjS7Mf/2F/EXGDT0qgtiHf2BHz71+KqgN+jndFLKq5xAB9JOGejGzejfJLIvT04Do+yzhcg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3794,20 +3558,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.0.1': - resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} - peerDependencies: - react: 19.0.0 - - '@radix-ui/react-slot@1.1.2': - resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-slot@1.2.0': resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==} peerDependencies: @@ -3817,8 +3567,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-switch@1.1.3': - resolution: {integrity: sha512-1nc+vjEOQkJVsJtWPSiISGT6OKm4SiOdjMo+/icLxo2G4vxz1GntC5MzfL4v8ey9OEfw787QCD1y3mUv0NiFEQ==} + '@radix-ui/react-switch@1.1.4': + resolution: {integrity: sha512-zGP6W8plLeogoeGMiTHJ/uvf+TE1C2chVsEwfP8YlvpQKJHktG+iCkUtCLGPAuDV8/qDSmIRPm4NggaTxFMVBQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3830,8 +3580,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tabs@1.1.3': - resolution: {integrity: sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==} + '@radix-ui/react-tabs@1.1.4': + resolution: {integrity: sha512-fuHMHWSf5SRhXke+DbHXj2wVMo+ghVH30vhX3XVacdXqDl+J4XWafMIGOOER861QpBx1jxgwKXL2dQnfrsd8MQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3843,8 +3593,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toggle-group@1.1.2': - resolution: {integrity: sha512-JBm6s6aVG/nwuY5eadhU2zDi/IwYS0sDM5ZWb4nymv/hn3hZdkw+gENn0LP4iY1yCd7+bgJaCwueMYJIU3vk4A==} + '@radix-ui/react-toggle-group@1.1.3': + resolution: {integrity: sha512-khTzdGIxy8WurYUEUrapvj5aOev/tUA8TDEFi1D0Dn3yX+KR5AqjX0b7E5sL9ngRRpxDN2RRJdn5siasu5jtcg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3856,8 +3606,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toggle@1.1.2': - resolution: {integrity: sha512-lntKchNWx3aCHuWKiDY+8WudiegQvBpDRAYL8dKLRvKEH8VOpl0XX6SSU/bUBqIRJbcTy4+MW06Wv8vgp10rzQ==} + '@radix-ui/react-toggle@1.1.3': + resolution: {integrity: sha512-Za5HHd9nvsiZ2t3EI/dVd4Bm/JydK+D22uHKk46fPtvuPxVCJBUo5mQybN+g5sZe35y7I6GDTTfdkVv5SnxlFg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3869,8 +3619,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-toolbar@1.1.2': - resolution: {integrity: sha512-wT20eQ7ScFk+kBMDmHp+lMk18cgxhu35b2Bn5deUcPxiVwfn5vuZgi7NGcHu8ocdkinahmp4FaSZysKDyRVPWQ==} + '@radix-ui/react-toolbar@1.1.3': + resolution: {integrity: sha512-yTZ8ooxlBqljSiruO6y6azKXSXYBpnzd23yohjyFesun4nm8yh+D91J1yCqhtnRtSjRWuAmr9vFgGxmGwLjTfg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3882,8 +3632,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.1.8': - resolution: {integrity: sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==} + '@radix-ui/react-tooltip@1.2.0': + resolution: {integrity: sha512-b1Sdc75s7zN9B8ONQTGBSHL3XS8+IcjcOIY51fhM4R1Hx8s0YbgqgyNZiri4qcYMVZK8hfCZVBiyCm7N9rs0rw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3895,15 +3645,6 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: @@ -3913,15 +3654,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-controllable-state@1.1.1': resolution: {integrity: sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg==} peerDependencies: @@ -3931,17 +3663,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: '@types/react': '*' react: 19.0.0 @@ -3958,15 +3681,6 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-previous@1.1.0': - resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@radix-ui/react-use-previous@1.1.1': resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} peerDependencies: @@ -3976,17 +3690,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} peerDependencies: '@types/react': '*' react: 19.0.0 @@ -4003,8 +3708,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.1.2': - resolution: {integrity: sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==} + '@radix-ui/react-visually-hidden@1.1.3': + resolution: {integrity: sha512-oXSF3ZQRd5fvomd9hmUCb2EHSZbPp3ZSHAHJJU/DlF9XoFkJBBW8RHU/E8WEH+RbSfJd/QFA0sl8ClJXknBwHQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -4016,42 +3721,36 @@ packages: '@types/react-dom': optional: true - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} '@react-native-async-storage/async-storage@2.1.2': resolution: {integrity: sha512-dvlNq4AlGWC+ehtH12p65+17V0Dx7IecOWl6WanF2ja38O1Dcjjvn7jVzkUHJ5oWkQBlyASurTPlTHgKXyYiow==} peerDependencies: react-native: ^0.0.0-0 || >=0.65 <1.0 - '@react-native/assets-registry@0.79.0-rc.0': - resolution: {integrity: sha512-c6Q4vIkrLx6sRvzr5kLaQlBRRDdUrIxl/FgDxywFLxUhy+z5gdpN2P66jwNpwXnODt7KC5fiwi0gB3Fr9KM/BA==} + '@react-native/assets-registry@0.79.0': + resolution: {integrity: sha512-Rwvpu3A05lM1HVlX4klH4UR52JbQPDKc8gi2mst2REZL1KeVgJRJxPPw8d8euVlYcq/s8XI1Ol827JaRtSZBTA==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.79.0-rc.4': - resolution: {integrity: sha512-vhYfoFdzz1D/bDAuGThtNia9bUpjtCo73IWfndNoKj+84SOGTtrKaZ/jOpXs5uMskpe1D4xaHuOHHFbzp/0E8g==} + '@react-native/babel-plugin-codegen@0.79.0': + resolution: {integrity: sha512-7IkObXF0dl5Dv1vGO5rBAB+yx26kqDntqrDvurO1ZjB11oeKiWOuDoWMnouaPZGhUbnswkYwMRLXCpYhDTG4bA==} engines: {node: '>=18'} - '@react-native/babel-preset@0.79.0-rc.4': - resolution: {integrity: sha512-0vyO3Ix2N0sI43w0XNJ2zzSWzX7no/JMrXnVzJEm9IhNHsuMmKaXQdRvijDZroepDINIbb6vaIWwzeWkqhiPAA==} + '@react-native/babel-preset@0.79.0': + resolution: {integrity: sha512-OcizKxBRxte1kZo932G4tpgDgKnDMErie0EkbVK83WaQAvnL0Dd1GWPoYjFmlKtJwh7PM2RZqTsrwqsksrmtRg==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.79.0-rc.0': - resolution: {integrity: sha512-BE64Nw4lqGLjBtdk8rTIKroe2AoXRHRPkjU70QmrHA0aSKh1VICA21fckhXe6hkujFIO45erWkSB35WqdkR+bQ==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - - '@react-native/codegen@0.79.0-rc.4': - resolution: {integrity: sha512-62J5LVV0LBqyqSV1REin2+ciWamctlYMFyy216Gko/+aqMdoYVX/bM14pdPmqtPZRoMEgWQCgmfw+xc0yx9aPQ==} + '@react-native/codegen@0.79.0': + resolution: {integrity: sha512-D8bFlD0HH9SMUI00svdg64hEvLbu4ETeWQDlmEP8WmNbuILjwoLFqbnBmlGn69Tot0DM1PuBd1l1ooIzs8sU7w==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/community-cli-plugin@0.79.0-rc.0': - resolution: {integrity: sha512-OW92oyX8tmky1mc/ofEDgfuclzhANx/7GNa00SLkeJ1Fg6O2Leu8LoC0QgBIKa+GKzt6hTikojSKSFYCUXnJ6w==} + '@react-native/community-cli-plugin@0.79.0': + resolution: {integrity: sha512-pl+aSXxGj3ug80FpMDrArjxUbJWY2ibWiSP3MLKX+Xk7An2GUmFFjCzNVSbs0jzWv8814EG2oI60/GH2RXwE4g==} engines: {node: '>=18'} peerDependencies: '@react-native-community/cli': '*' @@ -4059,44 +3758,33 @@ packages: '@react-native-community/cli': optional: true - '@react-native/debugger-frontend@0.79.0-rc.0': - resolution: {integrity: sha512-g/ewdWNPEn7okSo/tFS1XdjKbTCyrehEdoTRoO25c9lyuMQFnTgGU6UQ22wCqiVURh6NGP9Cb6FHs0MbMaGbUg==} - engines: {node: '>=18'} - - '@react-native/debugger-frontend@0.79.0-rc.4': - resolution: {integrity: sha512-C9B//PGcirQUxR062FIN9xO+CTYyjjZi0KYfiKZW19g8d7LF1336Omq5m01VXzPAka5USDy3SvLqYk5zs/3S1A==} - engines: {node: '>=18'} - - '@react-native/dev-middleware@0.79.0-rc.0': - resolution: {integrity: sha512-1+nN0VTUkvIuea0MQC2uHwNQLrfpibosAhfSO7zz87VgJdmcHzJdbCziAl8I5CCsPdI2brmM4pl3eVx4G1ip4Q==} + '@react-native/debugger-frontend@0.79.0': + resolution: {integrity: sha512-chwKEWAmQMkOKZWwBra+utquuJ/2uFqh+ZgZbJfNX+U0YsBx6AQ3dVbfAaXW3bSLYEJyf9Wb3Opsal4fmcD9Ww==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.79.0-rc.4': - resolution: {integrity: sha512-Y8bgH2ELqgfWKbWxCzDGFJ4dh0howNf5gqVLZWsDU//56+NgNnVkH9S3ZpdZZC2EK/hicd+t8P1RdsdwHmGIww==} + '@react-native/dev-middleware@0.79.0': + resolution: {integrity: sha512-8Mh5L8zJXis2qhgkfXnWMbSmcvb07wrbxQe8KIgIO7C1rS97idg7BBtoPEtmARsaQgmbSGu/wdE7UWFkGYp0OQ==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.79.0-rc.0': - resolution: {integrity: sha512-b9JdvuM6p5GuLePpObXT4BR4AQzVSsAYR/4tj9g86r7g7m1gKUoe9rIAMqCXe6bRuCD7rzwfFJ6svONmNVW9zw==} + '@react-native/gradle-plugin@0.79.0': + resolution: {integrity: sha512-c+/qKnmTx3kf8xZesp2BkZ9pAQVSnEPZziQUwviSJaq9jm8tKb/B8fyGG8yIuw/ZTKyGprD+ByzUSzJmCpC/Ow==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.79.0-rc.0': - resolution: {integrity: sha512-wnIUuPSQmfHCxzRKnrO9srXtnTn23IkRBcO6XDWNqkAryZigtXTNhEeN6vzc2KS6Vyw/0spz7SznwKr3alXonQ==} + '@react-native/js-polyfills@0.79.0': + resolution: {integrity: sha512-+8lk/zP90JC9xZBGhI8TPqqR1Y5dYXwXvfhXygr/LlHoo+H8TeQxcPrXWdT+PWOJl6Gf7dbCOGh9Std8J7CSQA==} engines: {node: '>=18'} '@react-native/normalize-colors@0.74.89': resolution: {integrity: sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==} - '@react-native/normalize-colors@0.77.1': - resolution: {integrity: sha512-sCmEs/Vpi14CtFYhmKXpPFZntKYGezFGgT9cJANRS2aFseAL4MOomb5Ms+TOQw82aFcwPPjDX6Hrl87WjTf73A==} - - '@react-native/normalize-colors@0.79.0-rc.0': - resolution: {integrity: sha512-TTJovmseCQ6hnkFGXw1wFdIfFjGiiojgtLf8UC0N3vERGjfJ5+tv4UAqMxd6ccjbscZqkQOlJgPMhguU6Z1bpw==} + '@react-native/normalize-colors@0.77.2': + resolution: {integrity: sha512-knKStQKX4KM8GkieeayotcSTO7I7PIZxwI71nhK/zBeRPqhDTJMNJQh5TnZJ63fO1Y+EZclWkRIKEj+aFRsssw==} - '@react-native/normalize-colors@0.79.0-rc.4': - resolution: {integrity: sha512-jjZHe/PUPK2XZXGB75Km50ykZ3F4Vwoj9RwQgfA0bn68USBFsWodKlvcKDN0cRlwBXwFHMX6xF9Gjrh/IAIceA==} + '@react-native/normalize-colors@0.79.0': + resolution: {integrity: sha512-RmM7Dgb69a4qwdguKR+8MhT0u1IAKa/s0uy8/7JP9b/fm8zjUV9HctMgRgIpZTOELsowEyQodyTnhHQf4HPX0A==} - '@react-native/virtualized-lists@0.79.0-rc.0': - resolution: {integrity: sha512-nc6wr9khf7ZJtGyZIwFRaZqDTHwQA0qL7ClE4OcRZz72j0gDExLnaeVRf7gDewqW0fokVw/JMBYk7lJWHm7ang==} + '@react-native/virtualized-lists@0.79.0': + resolution: {integrity: sha512-tCT1sHSI1O5KSclDwNfnkLTLe3cgiyYWjIlmNxWJHqhCCz017HGOS/oH0zs0ZgxYwN7xCzTkqY330XMDo+yj2g==} engines: {node: '>=18'} peerDependencies: '@types/react': ^19.0.0 @@ -4106,30 +3794,25 @@ packages: '@types/react': optional: true - '@react-navigation/bottom-tabs@7.3.5': - resolution: {integrity: sha512-Qq5auwawfXNOrKusq3QELvf2UlhTwb8spq/w4PfA3QIw9tqfd488jnikGU/1RhdUk4/G9P6pp1X/JiboYPXgBw==} + '@react-navigation/bottom-tabs@7.3.10': + resolution: {integrity: sha512-qRCr7LHFpzEJFuG2Id9NNXT2GBgu+zZ7wK8UO0bRuaxXK1y6W09k6+fDcDUDR67tHIB4HvfHCj1VyeSEW8uorg==} peerDependencies: - '@react-navigation/native': ^7.1.1 + '@react-navigation/native': ^7.1.6 react: 19.0.0 react-native: '*' react-native-safe-area-context: '>= 4.0.0' react-native-screens: '>= 4.0.0' - '@react-navigation/core@7.4.0': - resolution: {integrity: sha512-URiDluFl7cLA7GtOAsEvRqPmEMlSSXadqQ3wi9+Dl43dNRMqnoF76WQ9BCXeUPLydJq4yVte9XeMPyD6a0lY1g==} + '@react-navigation/core@7.8.5': + resolution: {integrity: sha512-xDUXs6NI6ASiZgf53I7NPG0iJVGClPL5O3r8ddOCkS6fhVmPRun64m2zxUWnPcxtheFNTFfQ1IXH+gcenTcv/w==} peerDependencies: react: 19.0.0 - '@react-navigation/core@7.8.0': - resolution: {integrity: sha512-eKHe3ZEVsAHalMdugaCIhc2bUTYI7am9oT8CIhOQg2xiZ9OlT6eKYQacby6gVCHLJWNBOawrtENhuFJervkLRw==} - peerDependencies: - react: 19.0.0 - - '@react-navigation/elements@2.3.3': - resolution: {integrity: sha512-6OGnhSPsBs0ziOy3ADLUACQI4rpe1T/1xAot+e29ugUJrc/BLATJ9okiPb+j4OZzSLlIYxxkV/D++su0XgSEPA==} + '@react-navigation/elements@2.3.8': + resolution: {integrity: sha512-2ZVBtPfrkmOxzvIyDu3fPZ6aS4HcXL+TvzPDGa1znY2OP1Llo6wH14AmJHQFDquiInp2656hRMM1BkfJ3yPwew==} peerDependencies: '@react-native-masked-view/masked-view': '>= 0.2.0' - '@react-navigation/native': ^7.1.1 + '@react-navigation/native': ^7.1.6 react: 19.0.0 react-native: '*' react-native-safe-area-context: '>= 4.0.0' @@ -4137,32 +3820,23 @@ packages: '@react-native-masked-view/masked-view': optional: true - '@react-navigation/native-stack@7.3.5': - resolution: {integrity: sha512-yelx7PrC5JfTnOK6VG8QYqUhgDw/8qGluHYmDoZHYTvAQ4/igh5iV601e8DqDyh2hIxmFc3uSS7yvic49TQmQg==} + '@react-navigation/native-stack@7.3.10': + resolution: {integrity: sha512-bO/3bZiL/i2dbJQEeqfxIqp1CKzyx+RPdwaiLm6za8cUl877emnxFeAAOSUbN7r/AJgq+U/iCwc3K88mh+4oRQ==} peerDependencies: - '@react-navigation/native': ^7.1.1 + '@react-navigation/native': ^7.1.6 react: 19.0.0 react-native: '*' react-native-safe-area-context: '>= 4.0.0' react-native-screens: '>= 4.0.0' - '@react-navigation/native@7.0.15': - resolution: {integrity: sha512-72PabJJ8VY3GM8i/DCutFW+ATED96ZV6NH+bW+ry1EL0ZFGHoie96H+KzTqktsrUbBw1rd9KXbEQhBQgo0N7iQ==} - peerDependencies: - react: 19.0.0 - react-native: '*' - - '@react-navigation/native@7.1.1': - resolution: {integrity: sha512-pVIbC16HvdlNWmn36h5CjSim33w4SVrCutv93lmMQKbdt3fvqIIViuiNkRITCRjw80c5jz04hiuUGeaaBk9xpQ==} + '@react-navigation/native@7.1.6': + resolution: {integrity: sha512-XcfygfHDfAgf2iC4rNBc67Yy0M1aYRGNeNKqja5AJPFZoBQhAEAxKCwHsH4g3qU0zIbzLCthoSl5107dBjoeZw==} peerDependencies: react: 19.0.0 react-native: '*' - '@react-navigation/routers@7.2.0': - resolution: {integrity: sha512-lMyib39H4a//u+eiyt162U6TwCfI8zJbjl9ovjKtDddQ4/Vf7b8/OhyimnJH09N2CBfm4pv0gCV6Q0WnZcfaJg==} - - '@react-navigation/routers@7.3.2': - resolution: {integrity: sha512-FZsMPbFP8FubdlA0oa+2bLhgwDNSk+ezIUETxIvMazoz715LTpXzPNBiQ29AMfZztADAWniTjotWSOREwKETkA==} + '@react-navigation/routers@7.3.5': + resolution: {integrity: sha512-SBh/3G7pURIQfIwG4OnAfLvq0E4+l1Ii6577z22cIhWIrTOHFXg0rMxC7ft/amzxYn+iG2nYa4dONRd+xIs+yg==} '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} @@ -4173,136 +3847,141 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.36.0': - resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} + '@rollup/rollup-android-arm-eabi@4.40.0': + resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.36.0': - resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} + '@rollup/rollup-android-arm64@4.40.0': + resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.36.0': - resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} + '@rollup/rollup-darwin-arm64@4.40.0': + resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.36.0': - resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} + '@rollup/rollup-darwin-x64@4.40.0': + resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.36.0': - resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} + '@rollup/rollup-freebsd-arm64@4.40.0': + resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.36.0': - resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} + '@rollup/rollup-freebsd-x64@4.40.0': + resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.36.0': - resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.36.0': - resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} + '@rollup/rollup-linux-arm-musleabihf@4.40.0': + resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.36.0': - resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} + '@rollup/rollup-linux-arm64-gnu@4.40.0': + resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.36.0': - resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} + '@rollup/rollup-linux-arm64-musl@4.40.0': + resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.36.0': - resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': - resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.36.0': - resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} + '@rollup/rollup-linux-riscv64-gnu@4.40.0': + resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.36.0': - resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} + '@rollup/rollup-linux-riscv64-musl@4.40.0': + resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.0': + resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.36.0': - resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} + '@rollup/rollup-linux-x64-gnu@4.40.0': + resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.36.0': - resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} + '@rollup/rollup-linux-x64-musl@4.40.0': + resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.36.0': - resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} + '@rollup/rollup-win32-arm64-msvc@4.40.0': + resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.36.0': - resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} + '@rollup/rollup-win32-ia32-msvc@4.40.0': + resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.36.0': - resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} + '@rollup/rollup-win32-x64-msvc@4.40.0': + resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} cpu: [x64] os: [win32] '@shikijs/core@1.29.2': resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==} - '@shikijs/core@3.2.1': - resolution: {integrity: sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==} + '@shikijs/core@3.2.2': + resolution: {integrity: sha512-yvlSKVMLjddAGBa2Yu+vUZxuu3sClOWW1AG+UtJkvejYuGM5BVL35s6Ijiwb75O9QdEx6IkMxinHZSi8ZyrBaA==} '@shikijs/engine-javascript@1.29.2': resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==} - '@shikijs/engine-javascript@3.2.1': - resolution: {integrity: sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==} + '@shikijs/engine-javascript@3.2.2': + resolution: {integrity: sha512-tlDKfhWpF4jKLUyVAnmL+ggIC+0VyteNsUpBzh1iwWLZu4i+PelIRr0TNur6pRRo5UZIv3ss/PLMuwahg9S2hg==} '@shikijs/engine-oniguruma@1.29.2': resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - '@shikijs/engine-oniguruma@3.2.1': - resolution: {integrity: sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==} + '@shikijs/engine-oniguruma@3.2.2': + resolution: {integrity: sha512-vyXRnWVCSvokwbaUD/8uPn6Gqsf5Hv7XwcW4AgiU4Z2qwy19sdr6VGzMdheKKN58tJOOe5MIKiNb901bgcUXYQ==} '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - '@shikijs/langs@3.2.1': - resolution: {integrity: sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==} + '@shikijs/langs@3.2.2': + resolution: {integrity: sha512-NY0Urg2dV9ETt3JIOWoMPuoDNwte3geLZ4M1nrPHbkDS8dWMpKcEwlqiEIGqtwZNmt5gKyWpR26ln2Bg2ecPgw==} '@shikijs/themes@1.29.2': resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - '@shikijs/themes@3.2.1': - resolution: {integrity: sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==} + '@shikijs/themes@3.2.2': + resolution: {integrity: sha512-Zuq4lgAxVKkb0FFdhHSdDkALuRpsj1so1JdihjKNQfgM78EHxV2JhO10qPsMrm01FkE3mDRTdF68wfmsqjt6HA==} '@shikijs/types@1.29.2': resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - '@shikijs/types@3.2.1': - resolution: {integrity: sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==} + '@shikijs/types@3.2.2': + resolution: {integrity: sha512-a5TiHk7EH5Lso8sHcLHbVNNhWKP0Wi3yVnXnu73g86n3WoDgEra7n3KszyeCGuyoagspQ2fzvy4cpSc8pKhb0A==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -4322,20 +4001,23 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@tanstack/history@1.114.22': - resolution: {integrity: sha512-CNwKraj/Xa8H7DUyzrFBQC3wL96JzIxT4i9CW0hxqFNNmLDyUcMJr8264iqqfxC0u1lFSG96URad08T2Qhadpw==} + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@tanstack/history@1.115.0': + resolution: {integrity: sha512-K7JJNrRVvyjAVnbXOH2XLRhFXDkeP54Kt2P4FR1Kl2KDGlIbkua5VqZQD2rot3qaDrpufyUa63nuLai1kOLTsQ==} engines: {node: '>=12'} - '@tanstack/react-router-devtools@1.114.25': - resolution: {integrity: sha512-55W9Wde0D7ZW1FNa9aepk2xo0wPugWquF3fC6pVMALq4gVNP9QufNBc+TMX6TiErffGtGrJzPkkYJOkF6ZUGVg==} + '@tanstack/react-router-devtools@1.116.0': + resolution: {integrity: sha512-PsJZWPjcmwZGe71kUvH4bI1ozkv1FgBuBEE0hTYlTCSJ3uG+qv3ndGEI+AiFyuF5OStrbfg0otW1OxeNq5vdGQ==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.114.25 + '@tanstack/react-router': ^1.116.0 react: 19.0.0 react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-router@1.114.25': - resolution: {integrity: sha512-4vls9pz+AOLIeTLZWUKK5ZqENc1azuSQ/UATNzZChckZqkMqtEoUci0dgp1XVAX+ocPH9bU1WP+/eonuyaLvdA==} + '@tanstack/react-router@1.116.0': + resolution: {integrity: sha512-ZBAg5Q6zJf0mnP9DYPiaaQ/wLDH2ujCMi/2RllpH86VUkdkyvQQzpAyKoiYJ891wh9OPgj6W6tPrzB4qy5FpRA==} engines: {node: '>=12'} peerDependencies: react: 19.0.0 @@ -4347,15 +4029,15 @@ packages: react: 19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.114.25': - resolution: {integrity: sha512-OyLCfs7r+0LEhmQGAdyJxfO+pqGBITlr4aUN0rdhXqDTpqBn0tyrO6Tu+U9B3LQF9Xnux3KqbjzRopTY9QZBog==} + '@tanstack/router-core@1.115.3': + resolution: {integrity: sha512-gynHs72LHVg05fuJTwZZYhDL4VNEAK0sXz7IqiBv7a3qsYeEmIZsGaFr9sVjTkuF1kbrFBdJd5JYutzBh9Uuhw==} engines: {node: '>=12'} - '@tanstack/router-devtools-core@1.114.25': - resolution: {integrity: sha512-3KFAAytAV6nWcXLTe3nWNaiRPV8AyM3jx5aa2UpB+RLDgDbO+GkVMnv3C7fnGCM6j2nw2/1boAvTvHcoKKO5UA==} + '@tanstack/router-devtools-core@1.115.3': + resolution: {integrity: sha512-VBdgw1qxeOD/6FlZ9gitrWPUKGW83CuAW31gf32E0dxL7sIXP+yEFyPlNsVlENan1oSaEuV8tjKkuq5s4MfaPw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.114.25 + '@tanstack/router-core': ^1.115.3 csstype: ^3.0.10 solid-js: '>=1.9.5' tiny-invariant: ^1.3.3 @@ -4363,21 +4045,21 @@ packages: csstype: optional: true - '@tanstack/router-generator@1.114.25': - resolution: {integrity: sha512-KfPdXm9+zGPrEjcdDkkSbZpDvx8rOSD9sS0cQn6y82jqoSeHlzC0K3bSVElsAmS1uh7WXR+PNDJra+nHUdPhaQ==} + '@tanstack/router-generator@1.116.0': + resolution: {integrity: sha512-XhCp85zP87G2bpSXnosiP3fiMo8HMQD2mvWqFFTFKz87WocabQYGlfhmNYWmBwI50EuS7Ph9lwXsSkV0oKh0xw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.114.25 + '@tanstack/react-router': ^1.116.0 peerDependenciesMeta: '@tanstack/react-router': optional: true - '@tanstack/router-plugin@1.114.25': - resolution: {integrity: sha512-4SIvBzgX6TzwgW5OO6Knx4/vX8AocXnfQhXW7dzsNBgzt5WnI4dzoPvp6p9p+Hqo0AjJ2WndpEYq7fMl5BhA4Q==} + '@tanstack/router-plugin@1.116.1': + resolution: {integrity: sha512-9A8DAyRejTzvkVOzgVPUY6l2aH7xOMEXSJJtV9GNbi4NtE6AXUCoFe3mtvYnHSzRqAUMCO0wnfVENCjXQoQYZw==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.114.25 + '@tanstack/react-router': ^1.116.0 vite: '>=5.0.0 || >=6.0.0' vite-plugin-solid: ^2.11.2 webpack: '>=5.92.0' @@ -4393,23 +4075,23 @@ packages: webpack: optional: true - '@tanstack/router-utils@1.114.12': - resolution: {integrity: sha512-W4tltvM9FQuDEJejz/JJD3q/pVHBXBb8VmA77pZlj4IBW97RnUNy8CUwZUgSYcb9OReoO4i/VjjQCUq9ZdiDmg==} + '@tanstack/router-utils@1.115.0': + resolution: {integrity: sha512-Dng4y+uLR9b5zPGg7dHReHOTHQa6x+G6nCoZshsDtWrYsrdCcJEtLyhwZ5wG8OyYS6dVr/Cn+E5Bd2b6BhJ89w==} engines: {node: '>=12'} '@tanstack/store@0.7.0': resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==} - '@tanstack/virtual-file-routes@1.114.12': - resolution: {integrity: sha512-aR13V1kSE/kUkP4a8snmqvj82OUlR5Q/rzxICmObLCsERGfzikUc4wquOy1d/RzJgsLb8o+FiOjSWynt4T7Jhg==} + '@tanstack/virtual-file-routes@1.115.0': + resolution: {integrity: sha512-XLUh1Py3AftcERrxkxC5Y5m5mfllRH3YR6YVlyjFgI2Tc2Ssy2NKmQFQIafoxfW459UJ8Dn81nWKETEIJifE4g==} engines: {node: '>=12'} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} - '@testing-library/react@16.2.0': - resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} + '@testing-library/react@16.3.0': + resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 @@ -4426,26 +4108,20 @@ packages: '@tsconfig/react-native@1.0.5': resolution: {integrity: sha512-hRGn7FKJQD5dCKaXm7xL0zMEYZvCw+lpGlnOYGtixQygPYnH8h6Vn8zaam0n2nxE2PkUMoJU852MO7ckc4JTpg==} - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -4453,8 +4129,8 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -4492,8 +4168,8 @@ packages: '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - '@types/node@20.17.24': - resolution: {integrity: sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA==} + '@types/node@20.17.30': + resolution: {integrity: sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==} '@types/react-dom@19.0.4': resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==} @@ -4569,17 +4245,17 @@ packages: '@vercel/routing-utils@5.0.4': resolution: {integrity: sha512-4ke67zkXVi2fRZdoYckABcsSkRC9CnrdadOGxoS/Bk22+ObHjGQWvUHExRSXh339anwu9YY7ZacNSGH4gUnTQA==} - '@vitejs/plugin-react@4.3.4': - resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + '@vitejs/plugin-react@4.4.0': + resolution: {integrity: sha512-x/EztcTKVj+TDeANY1WjNeYsvZjZdfWRMP/KXi5Yn8BoTzpa13ZltaQqKfvWYbX8CE10GOHHdC5v86jY9x8i/g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/expect@3.0.9': - resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} + '@vitest/expect@3.1.1': + resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} - '@vitest/mocker@3.0.9': - resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} + '@vitest/mocker@3.1.1': + resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -4589,20 +4265,20 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.9': - resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + '@vitest/pretty-format@3.1.1': + resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} - '@vitest/runner@3.0.9': - resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} + '@vitest/runner@3.1.1': + resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} - '@vitest/snapshot@3.0.9': - resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} + '@vitest/snapshot@3.1.1': + resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} - '@vitest/spy@3.0.9': - resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} + '@vitest/spy@3.1.1': + resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} - '@vitest/utils@3.0.9': - resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + '@vitest/utils@3.1.1': + resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} '@volar/kit@2.4.12': resolution: {integrity: sha512-f9JE8oy9C2rBcCWxUYKUF23hOXz4mwgVXFjk7nHhxzplaoVjEOsKpBm8NI2nBH7Cwu8DRxDwBsbIxMl/8wlLxw==} @@ -4634,8 +4310,8 @@ packages: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - abbrev@3.0.0: - resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} engines: {node: ^18.17.0 || >=20.5.0} abort-controller@3.0.0: @@ -4733,9 +4409,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - application-config-path@0.1.1: - resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -4769,10 +4442,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true @@ -4782,8 +4451,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.5.3: - resolution: {integrity: sha512-FvqIo5jkunP5R6FkY5vuFYElTOqjnazuiN0x/yf1F+nvedsGDemm5K7mS6RTmFVB291mE9WWn1AbuJsFWEcHgg==} + astro@5.7.0: + resolution: {integrity: sha512-LxvWFlCQSxRLqvtCfZ/LFzlaHcvX++qtq0NrRmwtDmrZhAyHOoVfLkxEE0STKgn0wjLTuETyBrgCBWe2eb68/A==} engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -4793,9 +4462,6 @@ packages: async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -4810,8 +4476,8 @@ packages: b4a@1.6.7: resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - babel-dead-code-elimination@1.0.9: - resolution: {integrity: sha512-JLIhax/xullfInZjtu13UJjaLHDeTzt3vOeomaSUdO/nAMEL/pWC/laKrSvWylXMnVWyL5bpmG9njqBZlUQOdg==} + babel-dead-code-elimination@1.0.10: + resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} @@ -4827,8 +4493,8 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-polyfill-corejs2@0.4.12: - resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + babel-plugin-polyfill-corejs2@0.4.13: + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -4837,8 +4503,8 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-polyfill-regenerator@0.6.3: - resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + babel-plugin-polyfill-regenerator@0.6.4: + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -4856,16 +4522,13 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-expo@13.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-cnuFpMEtdXTCj225Z8jF24GYM4LQlF9DUdOFTWCY0GNhJDQ1+dEMaMtGfD06CGXb+uROdK3r1XYr6lW6YHSofQ==} + babel-preset-expo@13.1.4: + resolution: {integrity: sha512-7MdepR2vDbDNcwDBd7zjs/MfrUiuz8Z4YAcqzc7p7O9+5I5Dc0s213OIq8HcuqkIG+OJx3XCXfvUHgeaJEIZBA==} peerDependencies: - babel-plugin-react-compiler: ^19.0.0-beta-9ee70a1-20241017 - react-compiler-runtime: ^19.0.0-beta-8a03594-20241020 + babel-plugin-react-compiler: ^19.0.0-beta-e993439-20250405 peerDependenciesMeta: babel-plugin-react-compiler: optional: true - react-compiler-runtime: - optional: true babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} @@ -4882,12 +4545,17 @@ packages: bare-events@2.5.4: resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - bare-fs@4.0.1: - resolution: {integrity: sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==} - engines: {bare: '>=1.7.0'} + bare-fs@4.1.2: + resolution: {integrity: sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true - bare-os@3.6.0: - resolution: {integrity: sha512-BUrFS5TqSBdA0LwHop4OjPJwisqxGy6JsWVqV6qaFoe965qqtaKfDzHY5T2YA1gUL0ZeeQeA+4BBc1FJTcHiPw==} + bare-os@3.6.1: + resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} engines: {bare: '>=1.14.0'} bare-path@3.0.0: @@ -4934,6 +4602,9 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + blob-to-buffer@1.2.9: + resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -4962,6 +4633,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + browserslist@4.24.4: resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -4994,10 +4668,6 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - caller-callsite@2.0.0: resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} engines: {node: '>=4'} @@ -5026,8 +4696,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001706: - resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==} + caniuse-lite@1.0.30001713: + resolution: {integrity: sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5120,14 +4790,14 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -5155,16 +4825,9 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -5187,9 +4850,6 @@ packages: common-ancestor-path@1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -5215,9 +4875,9 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} core-js-compat@3.41.0: resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} @@ -5249,13 +4909,17 @@ packages: css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - css-selector-parser@3.1.1: - resolution: {integrity: sha512-Y+DuvJ7JAjpL1f4DeILe5sXCC3kRXMl0DxM4lAWbS8/jEZ29o3V0L5TL6zIifj4Csmj6c+jiF2ENjida2OVOGA==} + css-selector-parser@3.1.2: + resolution: {integrity: sha512-WfUcL99xWDs7b3eZPoRszWVfbNo8ErCF15PTvVROjkShGlAfjIkG6hlfj/sl6/rfo5Q9x9ryJ3VqVnAZDA+gcw==} css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -5341,10 +5005,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -5353,8 +5013,8 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -5382,6 +5042,9 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dfa@1.2.0: + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -5428,18 +5091,14 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.120: - resolution: {integrity: sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==} + electron-to-chromium@1.5.137: + resolution: {integrity: sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==} emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} @@ -5475,42 +5134,23 @@ packages: resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} engines: {node: '>=8'} - eol@0.9.1: - resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} - error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.25.1: - resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} + esbuild@0.25.2: + resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} engines: {node: '>=18'} hasBin: true @@ -5566,10 +5206,6 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -5592,69 +5228,69 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - expect-type@1.2.0: - resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} - expo-asset@12.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-bY2Inauaf/OHuuh19EyoUjyKCLI5JJ5Jxp28QBLhlGGZCPuQrUCd4fdseGKNgRlAuoo71MkM+eByPy/3RXmxIw==} + expo-asset@11.1.2: + resolution: {integrity: sha512-9eozXyFtpKltzcr7P21uVz0FvGXD3omOzAN/u6NCAw0b0RqkwKMQbwF706Qzx52Bj0ogE7xNfXlLvdIKq/Caig==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' react: 19.0.0 react-native: '*' - expo-constants@18.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-Oq0rlpGJW/4wS+k+/1ouK7Lgk70EB2yaRe5AuWiOK+6Ko4/4QUxT4Zc4QmP+TX9S8CqNbnflCrhN0RAR29JtQQ==} + expo-constants@17.1.2: + resolution: {integrity: sha512-zKKjQlRJ6td2+wuf+OeTd/vJmzq512oJDIAMhpcQx3PhvmHu65RnWt7tpRhDTAgqNcr8hXbDUTiXF31BWuxzWw==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' react-native: '*' - expo-file-system@19.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-XyiukW0GwZ8JXb15ukGiFGY8sVqOKJVOYQ7nBp+VofRbBmENslPb3ZAEMklqMpEJ7fThMkXIwkLiCh5GZfDVWw==} + expo-file-system@18.1.4: + resolution: {integrity: sha512-kT4t/hRlfFFOMZxc4Zn0lEbhuFy9MDK0NbRAyTxGo7kZjWYlhXBmg2oYiaFyJnsvOgm1RVJ/QPJLO7O52qG7Nw==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' react-native: '*' - expo-font@14.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-97TykTK4mVawZaiLFnK8UCjBiZe8kqT19fk+22/B11aVJGP7+ycKNSSznZE0BxMfICSRWHR/RANVCu7lJnVu3A==} + expo-font@13.1.2: + resolution: {integrity: sha512-8I8nZsPsaFzSu9LmJDokKnN8wFjvzhrc26YPKcXRyTPjBv+WZA2JdlbeUfSaFE4TFBAMWIr2jpPxdxhGaGdoQw==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' react: 19.0.0 - expo-keep-awake@15.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-+PjlEKx/JAJJiV/xnpzTdsaSrE3hxZ9v/6UIfqpN7M0eNm6FCfootzMfvrIzXwJNkSFUm+csZMLRbJ2BuvLa9A==} + expo-keep-awake@14.1.2: + resolution: {integrity: sha512-Du82WEFmwnBdodn7NDo87RpzpAHcmlgRDhoUrEirbA0CGDWlQMeVAfZPjtLt+jaRGvXSMynG3tszP1VdO9QdDw==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' react: 19.0.0 - expo-linking@7.1.0-canary-20250402-161f57b: - resolution: {integrity: sha512-FCZrzfb1SMcy6D2DR8nk04+t8BqzFlx5dVfAUb66CLoYtBzbTFmkMmV6ijvOpZNKQDwY8eaGF64aD8X7tB+eLw==} + expo-linking@7.1.2: + resolution: {integrity: sha512-3XJY7PWC/7g99stACBIWNlFuLeMzc5T8TYlMrZEdiSBIonFH9bXnAM430vXMlPs8SkRiRSrPsGH2ml2TovWAtg==} peerDependencies: react: 19.0.0 react-native: '*' - expo-modules-autolinking@3.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-yRsvNJmFV0SlOTmEibWRHa0xbAlGGpWh0thRMuE9858B241o81/Y4MEXpX8oNlr1YRc5doj5x3p24309EJi3AQ==} + expo-modules-autolinking@2.1.4: + resolution: {integrity: sha512-SakSztBZIHLpTMeTO3FzpiDmcTy4ytgAZ0sBEPm3fLhQHRg070XEa+b4zXZcnJ8zUOJeQ7zTdyecABaG3gtBRg==} hasBin: true - expo-modules-core@3.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-nUCVhv6vW0av0IVcYyq6XSYSSadN7QT3uPxmHQRTeuCeepMV8u1jw98Jiv4k6nMZvh88RUPrucEX2PkcqtclvA==} + expo-modules-core@2.3.5: + resolution: {integrity: sha512-fnLzwaMqYzjCnufWMaukWa+xQhxfp2pacmg2ZmJHpEr5JIC6WZvOZ7Y+FPyIUwcnU1h3t5rtG6bNCG3pYtuymw==} - expo-navigation-bar@5.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-1a8AToz815Rc19mGnI3ADkBdjOYnMIcaGJcg89wblB+pIN11df4h2CMOnPflWEHFm5TkfX8Zs2llnIl2Wixq6w==} + expo-navigation-bar@4.1.3: + resolution: {integrity: sha512-8gn7Dpvn4QgkkEwwrCEfCX7AGp57mPXPBzhqkt3vPUOQBU3NnQCkZ3iV4qfAvKIjC0TBT5gbcAx+uQVYYWn3Yg==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' react: 19.0.0 react-native: '*' - expo-router@5.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-IHRuQ7s067f6cwtVgjR+KS+nicbtFyv1+p0h2oZrgSxEHnwc/KFpjphWoGnKlDy/8ZmnRzEahgGeskbZ68bBjA==} + expo-router@5.0.2-preview.4: + resolution: {integrity: sha512-5ysoZ1TstQmijAsuVjPvOzPLVxRFb8uxBVzWIZep/sAv6q8sHr4t9vK4lyfL5zuLeMfOrWkZf7ONs/dIqcoDcQ==} peerDependencies: - '@react-navigation/drawer': ^7.2.1 + '@react-navigation/drawer': ^7.3.9 '@testing-library/jest-native': '*' - expo: 53.0.0-canary-20250402-161f57b - expo-constants: 18.0.0-canary-20250402-161f57b - expo-linking: 7.1.0-canary-20250402-161f57b + expo: '*' + expo-constants: '*' + expo-linking: '*' react-native-reanimated: '*' react-native-safe-area-context: '*' react-native-screens: '*' @@ -5666,33 +5302,33 @@ packages: react-native-reanimated: optional: true - expo-splash-screen@0.29.23-canary-20250402-161f57b: - resolution: {integrity: sha512-Fy20XLsPUSdZPj65PnQgemfrI3WlxsbVcz8q3T+Nypa8qTRbmrC2WyBMtjbCddxJA3L3FaDLFqTS/vNEwJVKUg==} + expo-splash-screen@0.30.4: + resolution: {integrity: sha512-QgRa1a8cw/vdKvynWVhpYPO9b+rbTdKA1zUuX2zlrH89+JG8cBYB7NRAuiKQx5ck9DVpK7njJugmN0EBS6DTEw==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' - expo-status-bar@2.0.2-canary-20250402-161f57b: - resolution: {integrity: sha512-QrfH/v+gkXy87eShZqiNwKEilnrpp0CIL57pOUb/Irzxr75fwRrXox19cMJs9zN4IIIOkAkkqGhKtSj1zrT5bg==} + expo-status-bar@2.2.1: + resolution: {integrity: sha512-bUd/oCEKzcA7OCx5HTWJhP6qh0H6FaAS4i1XOnOGKoFviP1UiwokQg3D5ExuVguTAXounzaueVvIKTefDDIPJQ==} peerDependencies: react: 19.0.0 react-native: '*' - expo-system-ui@5.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-W2Tq/kwnzWvsO4kZAbTgimuoQvdA9mxgQ1kOgssFQGIwj64eOB5D0DdYHK1HA8g0W6c2n+aRb3imc6yGEZ8M3Q==} + expo-system-ui@5.0.3: + resolution: {integrity: sha512-LfpcY8m9F57a/0WoOot9quYmaNJHVQ1rJ0Gt4fnU+Sxm7v1BJPnKU5S++RR52dDZRdr+KnEt7SozhYjUf/PBBA==} peerDependencies: - expo: 53.0.0-canary-20250402-161f57b + expo: '*' react-native: '*' react-native-web: '*' peerDependenciesMeta: react-native-web: optional: true - expo@53.0.0-canary-20250402-161f57b: - resolution: {integrity: sha512-Kuyp5zfkuPR/n2bVtqclsEAAQ5ikRK/gs2/NzE2ilK5ZgJ6e893rX+KtCXOiTjMYZNpHsFXIMl3StpQA9QmE9g==} + expo@53.0.0-preview.7: + resolution: {integrity: sha512-jeaKeV+RhmlkjZmtlCNYhzld8Po9kRkwIAknUeMOFUyLMVT3ZWzjGxgU+A5YfO2FovKvWEtMrDGJ1MJyzHroQA==} hasBin: true peerDependencies: - '@expo/dom-webview': 0.0.3-canary-20250402-161f57b - '@expo/metro-runtime': 5.0.0-canary-20250402-161f57b + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' react: 19.0.0 react-native: '*' react-native-webview: '*' @@ -5726,9 +5362,6 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-loops@1.1.4: - resolution: {integrity: sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg==} - fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -5767,14 +5400,6 @@ packages: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} engines: {node: '>= 0.8'} - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -5790,26 +5415,21 @@ packages: flow-enums-runtime@0.0.6: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.265.3: - resolution: {integrity: sha512-YH50TTYgnzDnuaZlAxLYQ0UZtXSbbizMO3OCpoY8obvLReJmvQ5UUW22efsC3SZJmze/tATfQ0PtkKul2XwWBw==} - engines: {node: '>=0.4.0'} - - flow-remove-types@2.265.3: - resolution: {integrity: sha512-u3rr9waOGI00b/93lG8TfOdCrpqwQRK+YUtnwPPVxOSk+mc2ZXZfZdmx4zxGjdfBhgqc7gbAbUxDCtFciGe99g==} + flow-remove-types@2.267.0: + resolution: {integrity: sha512-NCXvOE6Z0N75pUkO5LnCgt+7kK78MRiB5d2xYHu87JYJ2Gl7Vz/JlwKTVwOclPUzDdTwznXY2sLpY+EMKzPqFg==} engines: {node: '>=4'} hasBin: true fontfaceobserver@2.3.0: resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + fontkit@2.0.4: + resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -5847,10 +5467,6 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -5859,14 +5475,6 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - get-port@3.2.0: - resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} - engines: {node: '>=4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -5909,10 +5517,6 @@ packages: peerDependencies: csstype: ^3.0.10 - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -5931,14 +5535,6 @@ packages: resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} engines: {node: '>=8'} - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -6058,8 +5654,8 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - image-size@1.2.0: - resolution: {integrity: sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==} + image-size@1.2.1: + resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} engines: {node: '>=16.x'} hasBin: true @@ -6087,8 +5683,8 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - inline-style-prefixer@6.0.4: - resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} + inline-style-prefixer@7.0.1: + resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} internal-ip@6.1.0: resolution: {integrity: sha512-Cs1iaqrl3z3KJ2ejWyfKkMcuv9NTEJWXtUBSGVc+Eg9BjBLS0k11CsOkf/p5quOkVhhRuq9zwZ/PuJpPUuDP9Q==} @@ -6173,10 +5769,6 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -6195,10 +5787,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -6271,18 +5859,8 @@ packages: jsc-safe-url@0.2.4: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - jscodeshift@17.1.2: - resolution: {integrity: sha512-uime4vFOiZ1o3ICT4Sm/AbItHEVw2oCxQ3a0egYVy3JMMOctxe07H3SKL1v175YqjMt27jn1N+3+Bj9SKDNgdQ==} - engines: {node: '>=16'} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - peerDependenciesMeta: - '@babel/preset-env': - optional: true - - jsdom@26.0.0: - resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} peerDependencies: canvas: ^3.0.0 @@ -6320,10 +5898,6 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -6482,10 +6056,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -6548,10 +6118,6 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -6562,12 +6128,8 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} + marky@1.3.0: + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} @@ -6626,6 +6188,9 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} @@ -6643,61 +6208,61 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - metro-babel-transformer@0.81.3: - resolution: {integrity: sha512-ENqtnPy2mQZFOuKrbqHRcAwZuaYe43X+30xIF0xlkLuMyCvc0CsFzrrSK9EqrQwexhVlqaRALb0GQbBMcE/y8g==} + metro-babel-transformer@0.82.1: + resolution: {integrity: sha512-SuDMRdJKafSj9mzIijCNRxVXWrlJZdTnVE9iTGHO85UFTp/mWOLftqCjEtEjc78/0Wq3Y8IoYayx/VkYmKUf/g==} engines: {node: '>=18.18'} - metro-cache-key@0.81.3: - resolution: {integrity: sha512-KPsPSRUd6uRva7k7k/DqiiD8td7URQWx0RkX/Cj5+bed5zSXEg/XoQA+b+DmMxS5C7TqP61Fh3XvHx6TQRW82A==} + metro-cache-key@0.82.1: + resolution: {integrity: sha512-RoByg/cxJUewdO4yDx3udpxc6S59570Ub34Jm2gjvOcYQOkGxNepNgyhWFlZLM7P7aBF2UwdCqDB1hoTRtQqNw==} engines: {node: '>=18.18'} - metro-cache@0.81.3: - resolution: {integrity: sha512-6UelMQYjlto/79tTXu0vsTxAX4e+Bkf0tgtDL1BNx3wd68pBg8qKIYpJPaUlOIaNUzFXTBDjYwUverkEW0KAtA==} + metro-cache@0.82.1: + resolution: {integrity: sha512-4ZK5EdgM8bTLLjpPCYOImirXUXVZpUU/I81BeAkScF8FFJfEHhV8yFyVp4/689bLbUBMwqz3rvYyxnrMi242lA==} engines: {node: '>=18.18'} - metro-config@0.81.3: - resolution: {integrity: sha512-WpTaT0iQr5juVY50Y/cyacG2ggZqF38VshEQepT+ovPK8E/xUVxlbO5yxLSXUxxUXX3Hka9r6g64+y2WC6c/xQ==} + metro-config@0.82.1: + resolution: {integrity: sha512-+w3280sUdZmEDpmEhk66vfeWs8xKhogiPim+JT6AIhrTUS4exki+yFgXDdnBXrjvAvhxUtCZcoIueFKCC/mbZw==} engines: {node: '>=18.18'} - metro-core@0.81.3: - resolution: {integrity: sha512-WZ+qohnpvvSWdPj1VJPUrZz+2ik29M+UUpMU6YrmzQUfDyZ6JYHhzlw5WVBtwpt/+2xTsIyrZ2C1fByT/DsLQA==} + metro-core@0.82.1: + resolution: {integrity: sha512-C1a8lPGJPs6axj9q+qLSdzK98TYjjXV6nsGnTvYuSwwXAm5sS03ewZCDimRfzu1s58oR0O28QddBgxNtYpDnJg==} engines: {node: '>=18.18'} - metro-file-map@0.81.3: - resolution: {integrity: sha512-F+t4lnVRoauJxtr9xmI4pWIOE77/vl0IrHDGeJSI9cW6LmuqxkpOlZHTKpbs/hMAo6+KhG2JMJACQDvXDLd/GA==} + metro-file-map@0.82.1: + resolution: {integrity: sha512-6RgYYrkswBCH4GwbLiK6QGzTjNnlCdU7BwwZlf+14ApjUlbr1oBkwmAa6lMfmqfZuh2H/ET8X950kJ8uZavJNA==} engines: {node: '>=18.18'} - metro-minify-terser@0.81.3: - resolution: {integrity: sha512-912AYv3OmwcbUwzCdWbdQRk+RV6kXXluHKlhBdYFD3kr4Ece691rzlofU/Mlt9qZrhHtctD5Q8cFqOEf9Z69bQ==} + metro-minify-terser@0.82.1: + resolution: {integrity: sha512-3P2PY+9L9sKrlxWWAOb1Bi6HXFCdnevym1R/6stkev/kl1+khkrDs1Z40139fLXFZbn8FrvXe89sTFRC3vB+Nw==} engines: {node: '>=18.18'} - metro-resolver@0.81.3: - resolution: {integrity: sha512-XnjENY1c6jcsEfFVIjN/8McUIInCVgGxv5eva+9ZWeCTyiAE/L5HPj2ai/Myb349+6QuSMR0dscTkKCnOwWXdw==} + metro-resolver@0.82.1: + resolution: {integrity: sha512-TnHK2FRTq/KMRZTqUKRXGJ4NGwJEHrPuo60UPGMUHzAS9diI22oCQ8y9888saGiXE+gi0Iplv/6AUTISxDgXqA==} engines: {node: '>=18.18'} - metro-runtime@0.81.3: - resolution: {integrity: sha512-neuGRMC2pgGKIFPbmbrxW41/SmvL7OX4i1LN+saUY2t1cZfxf9haQHUMCGhO3498uEL2N+ulKRSlQrHt6XwGaw==} + metro-runtime@0.82.1: + resolution: {integrity: sha512-Xg7FccIHlNtI63RX0vKmIzXlM5eSq4mjMo0ALbxXpds/P4JVT0JeJW/BqwpncKabrpbZyvPmPguhd32TiMWHXg==} engines: {node: '>=18.18'} - metro-source-map@0.81.3: - resolution: {integrity: sha512-BHJJurmDQRn3hCbBawh/UHzPz3duMpwpE3ofImO2DoWHYzn6nSg/D4wfCN4y14d9fFLE4e0I+BAOX1HWNP4jsw==} + metro-source-map@0.82.1: + resolution: {integrity: sha512-uCf60ybpmPvkkqQpVWtPZFCIMBS1D9uQ4r2isbqWvDQ1FFTi3xrhT1Z35Dyg30RQV6638XJ4wZY+Dwh8bU9W8A==} engines: {node: '>=18.18'} - metro-symbolicate@0.81.3: - resolution: {integrity: sha512-LQLT6WopQmIz2SDSVh3Lw7nLzF58HpsrPYqRB7RpRXBYhYmPFIjiGaP8qqtKHXczM/5YAOJzpgt8t/OGZgh6Eg==} + metro-symbolicate@0.82.1: + resolution: {integrity: sha512-UFofSe+y0tz+nQ5XOkgXOYu5xlbX/8jEvd2eSrd8SjAX7eAjbGwN0Kjji+87jSaMJIvRHkArVMWqwF6fZVq55g==} engines: {node: '>=18.18'} hasBin: true - metro-transform-plugins@0.81.3: - resolution: {integrity: sha512-4JMUXhBB5y4h3dyA272k7T7+U3+J4fSBcct0Y8Yur9ziZB/dK8fieEQg5ZPfEGsgOGI+54zTzOUqga6AgmZSNg==} + metro-transform-plugins@0.82.1: + resolution: {integrity: sha512-AHFattUD9tUjG2MFV4RgZRgZZNfdRVQ7X6+ORK3cqwiItMcY2mK7psC6G2zI3WOtbydBcu/xWTilmjl7krC7FQ==} engines: {node: '>=18.18'} - metro-transform-worker@0.81.3: - resolution: {integrity: sha512-KZqm9sVyBKRygUxRm+yP4DguE9R1EEv28KJhIxghNp5dcdVXBYUPe1xHoc3QVdzD9c3tf8JFzA2FBlKTlwMwNg==} + metro-transform-worker@0.82.1: + resolution: {integrity: sha512-2vaadziCaYPfPMnl3tuYimjR7Gmj5CVOcQh/bJniOiXWZ0b1v4JGcw6jOAWzQKgNJdrOq8lMfzdT3xJ/cn/m7g==} engines: {node: '>=18.18'} - metro@0.81.3: - resolution: {integrity: sha512-upilFs7z1uLKvdzFYHiVKrGT/uC7h7d53R0g/FaJoQvLfA8jQG2V69jeOcGi4wCsFYvl1zBSZvKxpQb0nA3giQ==} + metro@0.82.1: + resolution: {integrity: sha512-/avNIHMlZhkDRl5ZMKNGuZSFZU56M3ABtt/JFQBJWEnitHtSD3Qidnfgjglq61yDbsWBv7aVrOFhdPRPTHN92A==} engines: {node: '>=18.18'} hasBin: true @@ -6728,11 +6293,11 @@ packages: micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - micromark-extension-mdx-jsx@3.0.1: - resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} micromark-extension-mdx-md@2.0.0: resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} @@ -6749,8 +6314,8 @@ packages: micromark-factory-label@2.0.1: resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-mdx-expression@2.0.2: - resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} micromark-factory-space@2.0.1: resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} @@ -6782,8 +6347,8 @@ packages: micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} micromark-util-html-tag-name@2.0.1: resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} @@ -6856,17 +6421,13 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.1: - resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -6920,9 +6481,6 @@ packages: resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} engines: {node: '>= 0.6'} - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - neotraverse@0.6.18: resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} engines: {node: '>= 10'} @@ -7021,11 +6579,11 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - nwsapi@2.2.19: - resolution: {integrity: sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==} + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} - ob1@0.81.3: - resolution: {integrity: sha512-wd8zdH0DWsn2iDVn2zT/QURihcqoc73K8FhNCmQ16qkJaoYJLNb/N+huOwdCgsbNP8Lk/s1+dPnDETx+RzsrWA==} + ob1@0.82.1: + resolution: {integrity: sha512-J4m1GAoMC0673H8LmVolj7ZERYEwJWRR4/A/M8ZB5iK9BiFLeAkjvny/VGk3XOYiMtnvq7TV6oc3MfDJ8uKpFw==} engines: {node: '>=18.18'} object-assign@4.1.1: @@ -7039,6 +6597,9 @@ packages: ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} + ohash@1.1.6: + resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} + on-finished@2.3.0: resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} engines: {node: '>= 0.8'} @@ -7062,14 +6623,14 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - oniguruma-parser@0.5.4: - resolution: {integrity: sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==} + oniguruma-parser@0.11.1: + resolution: {integrity: sha512-fX6SirDOsTUNqSUOnL3fDtD3R7PCXNWGA3WWPvv9egEfTWkNXzRLO/9CC1WkDusP6HyWRZig06kHeYPcw3mlqQ==} oniguruma-to-es@2.3.0: resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} - oniguruma-to-es@4.1.0: - resolution: {integrity: sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==} + oniguruma-to-es@4.2.0: + resolution: {integrity: sha512-MDPs6KSOLS0tKQ7joqg44dRIRZUyotfTy0r+7oEEs6VwWWP0+E2PPDYWMFN0aqOjRyWHBYq7RfKw9GQk2S2z5g==} open@7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} @@ -7083,10 +6644,6 @@ packages: resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} engines: {node: '>=6'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -7099,10 +6656,6 @@ packages: resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} engines: {node: '>=18'} - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -7126,13 +6679,16 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.1.0: - resolution: {integrity: sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==} + package-manager-detector@1.2.0: + resolution: {integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==} pagefind@1.3.0: resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==} hasBin: true + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -7154,16 +6710,9 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - password-prompt@1.1.3: - resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} - path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -7215,22 +6764,14 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pirates@3.0.2: resolution: {integrity: sha512-c5CgUJq6H2k6MJz72Ak1F5sN9n9wlSlJyEnwvpm9/y3WB4E3pHBDT2c6PEiS1vyJvq2bUxUAIu0EGf8Cx4Ic7Q==} engines: {node: '>= 4'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - plist@3.1.0: resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} @@ -7355,9 +6896,6 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} @@ -7413,9 +6951,6 @@ packages: peerDependencies: react: 19.0.0 - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} @@ -7438,26 +6973,24 @@ packages: react-native-svg: optional: true - react-native-is-edge-to-edge@1.1.6: - resolution: {integrity: sha512-1pHnFTlBahins6UAajXUqeCOHew9l9C2C8tErnpGC3IyLJzvxD+TpYAixnCbrVS52f7+NvMttbiSI290XfwN0w==} + react-native-edge-to-edge@1.6.0: + resolution: {integrity: sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og==} peerDependencies: react: 19.0.0 - react-native: '>=0.73.0' + react-native: '*' - react-native-reanimated@3.17.1: - resolution: {integrity: sha512-ECzLhLxMKLifv34a8799/MHqIazQZV9fLMNSMdixXQlzX71RyL3/ah3cz/h3ERoyhJAYRC2ySLLZho6pXSqMFQ==} + react-native-is-edge-to-edge@1.1.7: + resolution: {integrity: sha512-EH6i7E8epJGIcu7KpfXYXiV2JFIYITtq+rVS8uEb+92naMRBdxhTuS8Wn2Q7j9sqyO0B+Xbaaf9VdipIAmGW4w==} peerDependencies: - '@babel/core': ^7.0.0-0 react: 19.0.0 react-native: '*' - react-native-reanimated@4.0.0-beta.3: - resolution: {integrity: sha512-H1GmOnlctdRW3VMj+93fm1A/ioCdwlTfP86OqPZrVmqxseecxkL0dhF97QSvoPZPzJodo+pyphnlto/fFtP9yg==} + react-native-reanimated@3.17.3: + resolution: {integrity: sha512-0dN+AB7Om9Fdq3Bvq4+ClGhv2sl1o6BhKum18CFNPh4dgMKybDSdRo2vhxTaZUJq6R3LC8gFI84IV0qCZmPbiw==} peerDependencies: '@babel/core': ^7.0.0-0 react: 19.0.0 react-native: '*' - react-native-worklets: 0.1.0 react-native-safe-area-context@5.3.0: resolution: {integrity: sha512-glV9bwuozTjf/JDBIBm+ITnukHNaUT3nucgdeADwjtHsfEN3RL5UO6nq99vvdWv5j/O9yCZBvFncM1BBQ+UvpQ==} @@ -7477,21 +7010,14 @@ packages: react: 19.0.0 react-native: '*' - react-native-web@0.19.13: - resolution: {integrity: sha512-etv3bN8rJglrRCp/uL4p7l8QvUNUC++QwDbdZ8CB7BvZiMvsxfFIRM1j04vxNldG3uo2puRd6OSWR3ibtmc29A==} + react-native-web@0.20.0: + resolution: {integrity: sha512-OOSgrw+aON6R3hRosCau/xVxdLzbjEcsLysYedka0ZON4ZZe6n9xgeN9ZkoejhARM36oTlUgHIQqxGutEJ9Wxg==} peerDependencies: react: 19.0.0 - react-dom: ^18.0.0 - - react-native-worklets@0.2.0-nightly-20250401-a5236f3be: - resolution: {integrity: sha512-ZsaHYxu+ezgKXGaO6w3uHk3zC4aS76h6T6eCAoQI52vk8PL+9T3Csl8UK6QwzBZKKgknHfMhh10++ywIFBvvBg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - react: 19.0.0 - react-native: '*' + react-dom: ^18.0.0 || ^19.0.0 - react-native@0.79.0-rc.0: - resolution: {integrity: sha512-d+5wKngFaosjcPSuOnGo/IkQ5Pax482lMl1eV/2fPsWESsUi0mbzVEu7UUEiSEDY1YWlIxk9GluXhIw2RI/d4g==} + react-native@0.79.0: + resolution: {integrity: sha512-fLG/zl/YF30TWTmp2bbo3flHSFGe4WTyVkb7/wJnMEC39jjXVSCxfDtvSUVavhCc03fA/RTkWWvlmg7NEJk7Vg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -7505,6 +7031,10 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + react-remove-scroll-bar@2.3.8: resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} engines: {node: '>=10'} @@ -7554,10 +7084,6 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} - recast@0.23.11: - resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} - engines: {node: '>= 4'} - recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -7645,8 +7171,8 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} remark-smartypants@3.0.2: resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} @@ -7707,6 +7233,9 @@ packages: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} + restructure@3.0.2: + resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} + retext-latin@4.0.0: resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} @@ -7728,12 +7257,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true - - rollup@4.36.0: - resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} + rollup@4.40.0: + resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -7763,10 +7288,6 @@ packages: resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} engines: {node: '>= 10.13.0'} - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -7816,10 +7337,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} @@ -7846,8 +7363,8 @@ packages: shiki@1.29.2: resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} - shiki@3.2.1: - resolution: {integrity: sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==} + shiki@3.2.2: + resolution: {integrity: sha512-0qWBkM2t/0NXPRcVgtLhtHv6Ak3Q5yI4K/ggMqcgLRKm4+pCs3namgZlhlat/7u2CuqNtlShNs9lENOG6n7UaQ==} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -7949,8 +7466,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.8.1: - resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} stream-buffers@2.2.0: resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} @@ -8038,10 +7555,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - sudo-prompt@8.2.5: - resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -8065,8 +7578,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tailwind-merge@3.0.2: - resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} + tailwind-merge@3.2.0: + resolution: {integrity: sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==} tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} @@ -8125,6 +7638,9 @@ packages: throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -8153,21 +7669,13 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tldts-core@6.1.84: - resolution: {integrity: sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - tldts@6.1.84: - resolution: {integrity: sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==} + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} - tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -8246,38 +7754,38 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-darwin-64@2.4.4: - resolution: {integrity: sha512-5kPvRkLAfmWI0MH96D+/THnDMGXlFNmjeqNRj5grLKiry+M9pKj3pRuScddAXPdlxjO5Ptz06UNaOQrrYGTx1g==} + turbo-darwin-64@2.5.0: + resolution: {integrity: sha512-fP1hhI9zY8hv0idym3hAaXdPi80TLovmGmgZFocVAykFtOxF+GlfIgM/l4iLAV9ObIO4SUXPVWHeBZQQ+Hpjag==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.4.4: - resolution: {integrity: sha512-/gtHPqbGQXDFhrmy+Q/MFW2HUTUlThJ97WLLSe4bxkDrKHecDYhAjbZ4rN3MM93RV9STQb3Tqy4pZBtsd4DfCw==} + turbo-darwin-arm64@2.5.0: + resolution: {integrity: sha512-p9sYq7kXH7qeJwIQE86cOWv/xNqvow846l6c/qWc26Ib1ci5W7V0sI5thsrP3eH+VA0d+SHalTKg5SQXgNQBWA==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.4.4: - resolution: {integrity: sha512-SR0gri4k0bda56hw5u9VgDXLKb1Q+jrw4lM7WAhnNdXvVoep4d6LmnzgMHQQR12Wxl3KyWPbkz9d1whL6NTm2Q==} + turbo-linux-64@2.5.0: + resolution: {integrity: sha512-1iEln2GWiF3iPPPS1HQJT6ZCFXynJPd89gs9SkggH2EJsj3eRUSVMmMC8y6d7bBbhBFsiGGazwFIYrI12zs6uQ==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.4.4: - resolution: {integrity: sha512-COXXwzRd3vslQIfJhXUklgEqlwq35uFUZ7hnN+AUyXx7hUOLIiD5NblL+ETrHnhY4TzWszrbwUMfe2BYWtaPQg==} + turbo-linux-arm64@2.5.0: + resolution: {integrity: sha512-bKBcbvuQHmsX116KcxHJuAcppiiBOfivOObh2O5aXNER6mce7YDDQJy00xQQNp1DhEfcSV2uOsvb3O3nN2cbcA==} cpu: [arm64] os: [linux] - turbo-windows-64@2.4.4: - resolution: {integrity: sha512-PV9rYNouGz4Ff3fd6sIfQy5L7HT9a4fcZoEv8PKRavU9O75G7PoDtm8scpHU10QnK0QQNLbE9qNxOAeRvF0fJg==} + turbo-windows-64@2.5.0: + resolution: {integrity: sha512-9BCo8oQ7BO7J0K913Czbc3tw8QwLqn2nTe4E47k6aVYkM12ASTScweXPTuaPFP5iYXAT6z5Dsniw704Ixa5eGg==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.4.4: - resolution: {integrity: sha512-403sqp9t5sx6YGEC32IfZTVWkRAixOQomGYB8kEc6ZD+//LirSxzeCHCnM8EmSXw7l57U1G+Fb0kxgTcKPU/Lg==} + turbo-windows-arm64@2.5.0: + resolution: {integrity: sha512-OUHCV+ueXa3UzfZ4co/ueIHgeq9B2K48pZwIxKSm5VaLVuv8M13MhM7unukW09g++dpdrrE1w4IOVgxKZ0/exg==} cpu: [arm64] os: [win32] - turbo@2.4.4: - resolution: {integrity: sha512-N9FDOVaY3yz0YCOhYIgOGYad7+m2ptvinXygw27WPLQvcZDl3+0Sa77KGVlLSiuPDChOUEnTKE9VJwLSi9BPGQ==} + turbo@2.5.0: + resolution: {integrity: sha512-PvSRruOsitjy6qdqwIIyolv99+fEn57gP6gn4zhsHTEcCYgXPhv6BAxzAjleS8XKpo+Y582vTTA9nuqYDmbRuA==} hasBin: true type-detect@4.0.8: @@ -8292,8 +7800,8 @@ packages: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - type-fest@4.37.0: - resolution: {integrity: sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==} + type-fest@4.40.0: + resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} engines: {node: '>=16'} typesafe-path@0.2.2: @@ -8302,8 +7810,8 @@ packages: typescript-auto-import-cache@0.3.5: resolution: {integrity: sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==} - typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true @@ -8311,11 +7819,11 @@ packages: resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} hasBin: true - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - ultrahtml@1.5.3: - resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} + ultrahtml@1.6.0: + resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} @@ -8327,8 +7835,8 @@ packages: resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} engines: {node: '>=18.17'} - undici@7.5.0: - resolution: {integrity: sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==} + undici@7.8.0: + resolution: {integrity: sha512-vFv1GA99b7eKO1HG/4RPu2Is3FBTWBrmzqzO0mz+rLxN3yXkE4mqRcb8g8fHxzX4blEysrNZLqg5RbJLqX5buA==} engines: {node: '>=20.18.1'} unicode-canonical-property-names-ecmascript@2.0.1: @@ -8343,13 +7851,22 @@ packages: resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} engines: {node: '>=4'} + unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unifont@0.1.7: + resolution: {integrity: sha512-UyN6r/TUyl69iW/jhXaCtuwA6bP9ZSLhVViwgP8LH9EHRGk5FyIMDxvClqD5z2BV6MI9GMATzd0dyLqFxKkUmQ==} + unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -8388,8 +7905,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin@2.2.0: - resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==} + unplugin@2.3.2: + resolution: {integrity: sha512-3n7YA46rROb3zSj8fFxtxC/PqoyvYQ0llwz9wtUPUutr9ig09C8gGo5CWCwHrUzlqC1LLR43kxp5vEIyH1ac1w==} engines: {node: '>=18.12.0'} unstorage@1.15.0: @@ -8485,8 +8002,8 @@ packages: '@types/react': optional: true - use-sync-external-store@1.4.0: - resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + use-sync-external-store@1.5.0: + resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} peerDependencies: react: 19.0.0 @@ -8518,8 +8035,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@3.0.9: - resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + vite-node@3.1.1: + resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -8527,8 +8044,8 @@ packages: resolution: {integrity: sha512-1Dsuf/p2muYwAqjyDC3LpcO8gTI+Ab2SjUZA7GzlMq1ZMnypUGQyFslIHJ7v3kpz30CLJFfPu2eqTDXDcRfGqQ==} engines: {node: '>=14.0.0'} - vite@6.2.2: - resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} + vite@6.2.6: + resolution: {integrity: sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -8575,16 +8092,16 @@ packages: vite: optional: true - vitest@3.0.9: - resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + vitest@3.1.1: + resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.9 - '@vitest/ui': 3.0.9 + '@vitest/browser': 3.1.1 + '@vitest/ui': 3.1.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -8668,11 +8185,11 @@ packages: '@volar/language-service': optional: true - vscode-css-languageservice@6.3.2: - resolution: {integrity: sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==} + vscode-css-languageservice@6.3.4: + resolution: {integrity: sha512-qutdhFg4hnlf6IsOynwtfsN8W0Xc7g3SZd+KK9F2moUEjHtkcZoj5p8uH7BSwHx9hSEXjwKgSRRyHTXThfwAkQ==} - vscode-html-languageservice@5.3.1: - resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==} + vscode-html-languageservice@5.3.3: + resolution: {integrity: sha512-AK/jJM0VIWRrlfqkDBMZxNMnxYT5I2uoMVRoNJ5ePSplnSaT9mbYjqJlxxeLvUrOW7MEH0vVIDzU48u44QZE0w==} vscode-json-languageservice@4.1.8: resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} @@ -8820,10 +8337,6 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - write-file-atomic@5.0.1: - resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@6.2.3: resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: @@ -8904,8 +8417,8 @@ packages: resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} engines: {node: '>= 14'} hasBin: true @@ -8921,8 +8434,8 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.0: - resolution: {integrity: sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==} + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} yocto-spinner@0.2.1: @@ -8933,8 +8446,8 @@ packages: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} - zod-to-json-schema@3.24.4: - resolution: {integrity: sha512-0uNlcvgabyrni9Ag8Vghj21drk7+7tp7VTwwR7KxxXXc/3pbXz2PHlDgj3cICahgF1kHm4dExBFj7BXrZJXzig==} + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} peerDependencies: zod: ^3.24.1 @@ -8979,7 +8492,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@asamuzakjp/css-color@3.1.1': + '@asamuzakjp/css-color@3.1.2': dependencies: '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) @@ -8987,12 +8500,12 @@ snapshots: '@csstools/css-tokenizer': 3.0.3 lru-cache: 10.4.3 - '@astrojs/check@0.9.4(prettier@3.5.3)(typescript@5.8.2)': + '@astrojs/check@0.9.4(prettier@3.5.3)(typescript@5.8.3)': dependencies: - '@astrojs/language-server': 2.15.4(prettier@3.5.3)(typescript@5.8.2) + '@astrojs/language-server': 2.15.4(prettier@3.5.3)(typescript@5.8.3) chokidar: 4.0.3 kleur: 4.1.5 - typescript: 5.8.2 + typescript: 5.8.3 yargs: 17.7.2 transitivePeerDependencies: - prettier @@ -9002,12 +8515,12 @@ snapshots: '@astrojs/internal-helpers@0.6.1': {} - '@astrojs/language-server@2.15.4(prettier@3.5.3)(typescript@5.8.2)': + '@astrojs/language-server@2.15.4(prettier@3.5.3)(typescript@5.8.3)': dependencies: '@astrojs/compiler': 2.11.0 '@astrojs/yaml2ts': 0.2.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@volar/kit': 2.4.12(typescript@5.8.2) + '@volar/kit': 2.4.12(typescript@5.8.3) '@volar/language-core': 2.4.12 '@volar/language-server': 2.4.12 '@volar/language-service': 2.4.12 @@ -9020,7 +8533,7 @@ snapshots: volar-service-typescript: 0.0.62(@volar/language-service@2.4.12) volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.12) volar-service-yaml: 0.0.62(@volar/language-service@2.4.12) - vscode-html-languageservice: 5.3.1 + vscode-html-languageservice: 5.3.3 vscode-uri: 3.1.0 optionalDependencies: prettier: 3.5.3 @@ -9041,9 +8554,9 @@ snapshots: rehype-stringify: 10.0.1 remark-gfm: 4.0.1 remark-parse: 11.0.0 - remark-rehype: 11.1.1 + remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.2.1 + shiki: 3.2.2 smol-toml: 1.3.1 unified: 11.0.5 unist-util-remove-position: 5.0.0 @@ -9053,12 +8566,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.2.1(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))': + '@astrojs/mdx@4.2.4(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))': dependencies: '@astrojs/markdown-remark': 6.3.1 '@mdx-js/mdx': 3.1.0(acorn@8.14.1) acorn: 8.14.1 - astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + astro: 5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -9076,15 +8589,15 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/react@4.2.1(@types/node@20.17.24)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)': + '@astrojs/react@4.2.4(@types/node@20.17.30)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(jiti@1.21.7)(lightningcss@1.29.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)': dependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@vitejs/plugin-react': 4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + '@vitejs/plugin-react': 4.4.0(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - ultrahtml: 1.5.3 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + ultrahtml: 1.6.0 + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -9105,22 +8618,22 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.24.2 - '@astrojs/starlight-tailwind@3.0.0(@astrojs/starlight@0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)))(@astrojs/tailwind@6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17))(tailwindcss@3.4.17)': + '@astrojs/starlight-tailwind@3.0.1(@astrojs/starlight@0.32.6(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1)))(@astrojs/tailwind@6.0.2(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@3.4.17))(tailwindcss@3.4.17)': dependencies: - '@astrojs/starlight': 0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) - '@astrojs/tailwind': 6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17) + '@astrojs/starlight': 0.32.6(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1)) + '@astrojs/tailwind': 6.0.2(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@3.4.17) tailwindcss: 3.4.17 - '@astrojs/starlight@0.32.3(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))': + '@astrojs/starlight@0.32.6(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))': dependencies: - '@astrojs/mdx': 4.2.1(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) + '@astrojs/mdx': 4.2.4(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1)) '@astrojs/sitemap': 3.3.0 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) - astro-expressive-code: 0.40.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)) + astro: 5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) + astro-expressive-code: 0.40.2(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -9142,9 +8655,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/tailwind@6.0.0(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(tailwindcss@3.4.17)': + '@astrojs/tailwind@6.0.2(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@3.4.17)': dependencies: - astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + astro: 5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) autoprefixer: 10.4.21(postcss@8.5.3) postcss: 8.5.3 postcss-load-config: 4.0.2(postcss@8.5.3) @@ -9164,15 +8677,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vercel@8.1.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0))(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.36.0)': + '@astrojs/vercel@8.1.3(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1))(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(rollup@4.40.0)': dependencies: '@astrojs/internal-helpers': 0.6.1 '@vercel/analytics': 1.5.0(next@15.2.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) '@vercel/edge': 1.2.1 - '@vercel/nft': 0.29.2(rollup@4.36.0) + '@vercel/nft': 0.29.2(rollup@4.40.0) '@vercel/routing-utils': 5.0.4 - astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) - esbuild: 0.25.1 + astro: 5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) + esbuild: 0.25.2 tinyglobby: 0.2.12 transitivePeerDependencies: - '@remix-run/react' @@ -9188,7 +8701,7 @@ snapshots: '@astrojs/yaml2ts@0.2.2': dependencies: - yaml: 2.7.0 + yaml: 2.7.1 '@babel/code-frame@7.10.4': dependencies: @@ -9206,14 +8719,14 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 convert-source-map: 2.0.0 debug: 4.4.0 gensync: 1.0.0-beta.2 @@ -9222,19 +8735,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.10': + '@babel/generator@7.27.0': dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 - '@babel/helper-compilation-targets@7.26.5': + '@babel/helper-compilation-targets@7.27.0': dependencies: '@babel/compat-data': 7.26.8 '@babel/helper-validator-option': 7.25.9 @@ -9242,7 +8755,7 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.10)': + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 @@ -9250,22 +8763,22 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.10)': + '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.10)': + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 debug: 4.4.0 lodash.debounce: 4.0.8 @@ -9275,15 +8788,15 @@ snapshots: '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -9292,13 +8805,13 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@babel/helper-plugin-utils@7.26.5': {} @@ -9307,7 +8820,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -9316,14 +8829,14 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -9335,16 +8848,16 @@ snapshots: '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.26.10': + '@babel/helpers@7.27.0': dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 '@babel/highlight@7.25.9': dependencies: @@ -9353,49 +8866,14 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/parser@7.26.10': - dependencies: - '@babel/types': 7.26.10 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': + '@babel/parser@7.27.0': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.10 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.10 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.27.0 '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: @@ -9406,10 +8884,6 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9450,11 +8924,6 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9520,12 +8989,6 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9536,7 +8999,7 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color @@ -9549,12 +9012,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -9562,15 +9020,7 @@ snapshots: '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9579,10 +9029,10 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9591,40 +9041,13 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/template': 7.26.9 + '@babel/template': 7.27.0 '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9647,17 +9070,12 @@ snapshots: '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.26.10 + '@babel/traverse': 7.27.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9668,19 +9086,6 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9689,33 +9094,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.10 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': @@ -9731,18 +9113,10 @@ snapshots: '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-compilation-targets': 7.27.0 '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9764,7 +9138,7 @@ snapshots: '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color @@ -9773,16 +9147,11 @@ snapshots: dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -9812,7 +9181,7 @@ snapshots: '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -9822,31 +9191,20 @@ snapshots: '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 regenerator-transform: 0.15.2 - '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 - babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9874,135 +9232,24 @@ snapshots: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typeof-symbol@7.26.7(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-typescript@7.26.8(@babel/core@7.26.10)': + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.10) - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/preset-env@7.26.9(@babel/core@7.26.10)': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.26.10 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) - '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) - '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-typeof-symbol': 7.26.7(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) - babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.10) - core-js-compat: 3.41.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-flow@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/types': 7.26.10 - esutils: 2.0.3 - - '@babel/preset-react@7.26.3(@babel/core@7.26.10)': + '@babel/preset-react@7.26.3(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 @@ -10014,53 +9261,54 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.26.0(@babel/core@7.26.10)': + '@babel/preset-typescript@7.27.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/helper-plugin-utils': 7.26.5 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) transitivePeerDependencies: - supports-color - '@babel/register@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - - '@babel/runtime@7.26.10': + '@babel/runtime@7.27.0': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.26.9': + '@babel/template@7.27.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 - '@babel/traverse@7.26.10': + '@babel/traverse@7.27.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.26.10': + '@babel/types@7.27.0': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@capsizecss/metrics@3.5.0': {} + + '@capsizecss/unpack@2.4.0': + dependencies: + blob-to-buffer: 1.2.9 + cross-fetch: 3.2.0 + fontkit: 2.0.4 + transitivePeerDependencies: + - encoding + '@csstools/color-helpers@5.0.2': {} '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': @@ -10106,106 +9354,106 @@ snapshots: '@emmetio/stream-reader@2.2.0': {} - '@emnapi/runtime@1.3.1': + '@emnapi/runtime@1.4.3': dependencies: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.1': + '@esbuild/aix-ppc64@0.25.2': optional: true - '@esbuild/android-arm64@0.25.1': + '@esbuild/android-arm64@0.25.2': optional: true - '@esbuild/android-arm@0.25.1': + '@esbuild/android-arm@0.25.2': optional: true - '@esbuild/android-x64@0.25.1': + '@esbuild/android-x64@0.25.2': optional: true - '@esbuild/darwin-arm64@0.25.1': + '@esbuild/darwin-arm64@0.25.2': optional: true - '@esbuild/darwin-x64@0.25.1': + '@esbuild/darwin-x64@0.25.2': optional: true - '@esbuild/freebsd-arm64@0.25.1': + '@esbuild/freebsd-arm64@0.25.2': optional: true - '@esbuild/freebsd-x64@0.25.1': + '@esbuild/freebsd-x64@0.25.2': optional: true - '@esbuild/linux-arm64@0.25.1': + '@esbuild/linux-arm64@0.25.2': optional: true - '@esbuild/linux-arm@0.25.1': + '@esbuild/linux-arm@0.25.2': optional: true - '@esbuild/linux-ia32@0.25.1': + '@esbuild/linux-ia32@0.25.2': optional: true - '@esbuild/linux-loong64@0.25.1': + '@esbuild/linux-loong64@0.25.2': optional: true - '@esbuild/linux-mips64el@0.25.1': + '@esbuild/linux-mips64el@0.25.2': optional: true - '@esbuild/linux-ppc64@0.25.1': + '@esbuild/linux-ppc64@0.25.2': optional: true - '@esbuild/linux-riscv64@0.25.1': + '@esbuild/linux-riscv64@0.25.2': optional: true - '@esbuild/linux-s390x@0.25.1': + '@esbuild/linux-s390x@0.25.2': optional: true - '@esbuild/linux-x64@0.25.1': + '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/netbsd-arm64@0.25.1': + '@esbuild/netbsd-arm64@0.25.2': optional: true - '@esbuild/netbsd-x64@0.25.1': + '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/openbsd-arm64@0.25.1': + '@esbuild/openbsd-arm64@0.25.2': optional: true - '@esbuild/openbsd-x64@0.25.1': + '@esbuild/openbsd-x64@0.25.2': optional: true - '@esbuild/sunos-x64@0.25.1': + '@esbuild/sunos-x64@0.25.2': optional: true - '@esbuild/win32-arm64@0.25.1': + '@esbuild/win32-arm64@0.25.2': optional: true - '@esbuild/win32-ia32@0.25.1': + '@esbuild/win32-ia32@0.25.2': optional: true - '@esbuild/win32-x64@0.25.1': + '@esbuild/win32-x64@0.25.2': optional: true - '@expo/cli@1.0.0-canary-20250402-161f57b': + '@expo/cli@0.24.2': dependencies: '@0no-co/graphql.web': 1.1.2 - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 11.0.0-canary-20250402-161f57b - '@expo/config-plugins': 9.1.0-canary-20250402-161f57b - '@expo/devcert': 1.1.4 - '@expo/env': 1.0.1-canary-20250402-161f57b - '@expo/image-utils': 0.6.6-canary-20250402-161f57b - '@expo/json-file': 9.0.3-canary-20250402-161f57b - '@expo/metro-config': 0.20.0-canary-20250402-161f57b - '@expo/osascript': 2.1.7-canary-20250402-161f57b - '@expo/package-manager': 1.6.2-canary-20250402-161f57b - '@expo/plist': 0.2.3-canary-20250402-161f57b - '@expo/prebuild-config': 9.0.0-canary-20250402-161f57b + '@expo/config': 11.0.3 + '@expo/config-plugins': 9.1.4 + '@expo/devcert': 1.2.0 + '@expo/env': 1.0.3 + '@expo/image-utils': 0.7.2 + '@expo/json-file': 9.1.2 + '@expo/metro-config': 0.20.4 + '@expo/osascript': 2.2.2 + '@expo/package-manager': 1.8.2 + '@expo/plist': 0.3.2 + '@expo/prebuild-config': 9.0.0 '@expo/spawn-async': 1.7.2 '@expo/ws-tunnel': 1.0.6 '@expo/xcpretty': 4.3.2 - '@react-native/dev-middleware': 0.79.0-rc.4 + '@react-native/dev-middleware': 0.79.0 '@urql/core': 5.1.1 '@urql/exchange-retry': 1.3.1(@urql/core@5.1.1) accepts: 1.3.8 @@ -10260,11 +9508,11 @@ snapshots: node-forge: 1.3.1 nullthrows: 1.1.1 - '@expo/config-plugins@9.1.0-canary-20250402-161f57b': + '@expo/config-plugins@9.1.4': dependencies: - '@expo/config-types': 53.0.0-canary-20250402-161f57b - '@expo/json-file': 9.0.3-canary-20250402-161f57b - '@expo/plist': 0.2.3-canary-20250402-161f57b + '@expo/config-types': 53.0.0-preview.3 + '@expo/json-file': 9.1.2 + '@expo/plist': 0.3.2 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.4.0 @@ -10279,14 +9527,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/config-types@53.0.0-canary-20250402-161f57b': {} + '@expo/config-types@53.0.0-preview.3': {} - '@expo/config@11.0.0-canary-20250402-161f57b': + '@expo/config@11.0.3': dependencies: '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 9.1.0-canary-20250402-161f57b - '@expo/config-types': 53.0.0-canary-20250402-161f57b - '@expo/json-file': 9.0.3-canary-20250402-161f57b + '@expo/config-plugins': 9.1.4 + '@expo/config-types': 53.0.0-preview.3 + '@expo/json-file': 9.1.2 deepmerge: 4.3.1 getenv: 1.0.0 glob: 10.4.5 @@ -10299,24 +9547,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/devcert@1.1.4': + '@expo/devcert@1.2.0': dependencies: - application-config-path: 0.1.1 - command-exists: 1.2.9 + '@expo/sudo-prompt': 9.3.2 debug: 3.2.7 - eol: 0.9.1 - get-port: 3.2.0 glob: 10.4.5 - lodash: 4.17.21 - mkdirp: 0.5.6 - password-prompt: 1.1.3 - sudo-prompt: 8.2.5 - tmp: 0.0.33 - tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@expo/env@1.0.1-canary-20250402-161f57b': + '@expo/env@1.0.3': dependencies: chalk: 4.1.2 debug: 4.4.0 @@ -10326,7 +9565,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/fingerprint@0.11.12-canary-20250402-161f57b': + '@expo/fingerprint@0.12.2': dependencies: '@expo/spawn-async': 1.7.2 arg: 5.0.2 @@ -10341,7 +9580,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/image-utils@0.6.6-canary-20250402-161f57b': + '@expo/image-utils@0.7.2': dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 @@ -10353,20 +9592,20 @@ snapshots: temp-dir: 2.0.0 unique-string: 2.0.0 - '@expo/json-file@9.0.3-canary-20250402-161f57b': + '@expo/json-file@9.1.2': dependencies: '@babel/code-frame': 7.10.4 json5: 2.2.3 - '@expo/metro-config@0.20.0-canary-20250402-161f57b': + '@expo/metro-config@0.20.4': dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - '@expo/config': 11.0.0-canary-20250402-161f57b - '@expo/env': 1.0.1-canary-20250402-161f57b - '@expo/json-file': 9.0.3-canary-20250402-161f57b + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@expo/config': 11.0.3 + '@expo/env': 1.0.3 + '@expo/json-file': 9.1.2 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 debug: 4.4.0 @@ -10380,38 +9619,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))': + '@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': dependencies: - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - '@expo/osascript@2.1.7-canary-20250402-161f57b': + '@expo/osascript@2.2.2': dependencies: '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 - '@expo/package-manager@1.6.2-canary-20250402-161f57b': + '@expo/package-manager@1.8.2': dependencies: - '@expo/json-file': 9.0.3-canary-20250402-161f57b + '@expo/json-file': 9.1.2 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 npm-package-arg: 11.0.3 ora: 3.4.0 resolve-workspace-root: 2.0.0 - '@expo/plist@0.2.3-canary-20250402-161f57b': + '@expo/plist@0.3.2': dependencies: '@xmldom/xmldom': 0.8.10 base64-js: 1.5.1 xmlbuilder: 15.1.1 - '@expo/prebuild-config@9.0.0-canary-20250402-161f57b': + '@expo/prebuild-config@9.0.0': dependencies: - '@expo/config': 11.0.0-canary-20250402-161f57b - '@expo/config-plugins': 9.1.0-canary-20250402-161f57b - '@expo/config-types': 53.0.0-canary-20250402-161f57b - '@expo/image-utils': 0.6.6-canary-20250402-161f57b - '@expo/json-file': 9.0.3-canary-20250402-161f57b - '@react-native/normalize-colors': 0.79.0-rc.4 + '@expo/config': 11.0.3 + '@expo/config-plugins': 9.1.4 + '@expo/config-types': 53.0.0-preview.3 + '@expo/image-utils': 0.7.2 + '@expo/json-file': 9.1.2 + '@react-native/normalize-colors': 0.79.0 debug: 4.4.0 resolve-from: 5.0.0 semver: 7.7.1 @@ -10421,12 +9660,12 @@ snapshots: '@expo/sdk-runtime-versions@1.0.0': {} - '@expo/server@0.6.0-canary-20250402-161f57b': + '@expo/server@0.6.2': dependencies: abort-controller: 3.0.0 debug: 4.4.0 source-map-support: 0.5.21 - undici: 7.5.0 + undici: 7.8.0 transitivePeerDependencies: - supports-color @@ -10434,9 +9673,13 @@ snapshots: dependencies: cross-spawn: 7.0.6 - '@expo/vector-icons@14.0.4': + '@expo/sudo-prompt@9.3.2': {} + + '@expo/vector-icons@14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - prop-types: 15.8.1 + expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) '@expo/ws-tunnel@1.0.6': {} @@ -10555,7 +9798,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.3.1 + '@emnapi/runtime': 1.4.3 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -10597,14 +9840,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.24 + '@types/node': 20.17.30 jest-mock: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.17.24 + '@types/node': 20.17.30 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -10627,7 +9870,7 @@ snapshots: jest-regex-util: 29.6.3 jest-util: 29.7.0 micromatch: 4.0.8 - pirates: 4.0.6 + pirates: 4.0.7 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: @@ -10638,7 +9881,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.24 + '@types/node': 20.17.30 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -10679,7 +9922,7 @@ snapshots: '@mdx-js/mdx@3.1.0(acorn@8.14.1)': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -10696,7 +9939,7 @@ snapshots: rehype-recma: 1.0.0 remark-mdx: 3.1.0 remark-parse: 11.0.0 - remark-rehype: 11.1.1 + remark-rehype: 11.1.2 source-map: 0.7.4 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 @@ -10767,67 +10010,65 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@radix-ui/number@1.1.0': {} - - '@radix-ui/primitive@1.1.1': {} + '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-accordion@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collapsible': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-accordion@1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collapsible': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-alert-dialog@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-alert-dialog@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dialog': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dialog': 1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-arrow@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-arrow@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-aspect-ratio@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-aspect-ratio@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-avatar@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-avatar@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: @@ -10850,91 +10091,74 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-collapsible@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-collapsible@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-collection@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-collection@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-compose-refs@1.0.0(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.10 - react: 19.0.0 - - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.10)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.10 - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.10)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-context-menu@2.2.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-context-menu@2.2.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-menu': 2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menu': 2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-context@1.1.1(@types/react@19.0.10)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.10 - '@radix-ui/react-context@1.1.2(@types/react@19.0.10)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-dialog@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dialog@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-portal': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) aria-hidden: 1.2.4 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10943,108 +10167,108 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-direction@1.1.0(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-dismissable-layer@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-dropdown-menu@2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-dropdown-menu@2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-menu': 2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menu': 2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.0.10)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-focus-scope@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-hover-card@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-hover-card@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-popper': 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-id@1.1.0(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-label@2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-label@2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-menu@2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menu@2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) aria-hidden: 1.2.4 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11053,61 +10277,61 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-menubar@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-menu': 2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menubar@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-menu': 2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-navigation-menu@1.2.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-navigation-menu@1.2.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-popover@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popover@1.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) aria-hidden: 1.2.4 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11116,38 +10340,28 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-popper@1.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-popper@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-arrow': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/rect': 1.1.0 - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) - - '@radix-ui/react-portal@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-arrow': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/rect': 1.1.1 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-portal@1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: @@ -11164,15 +10378,6 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-primitive@2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-primitive@2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) @@ -11182,72 +10387,72 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-progress@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-progress@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-radio-group@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-radio-group@1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-roving-focus@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-roving-focus@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-select@2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-select@2.1.7(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) aria-hidden: 1.2.4 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11256,47 +10461,34 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-separator@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-separator@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-slider@1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-slider@1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-slot@1.0.1(react@19.0.0)': - dependencies: - '@babel/runtime': 7.26.10 - '@radix-ui/react-compose-refs': 1.0.0(react@19.0.0) - react: 19.0.0 - - '@radix-ui/react-slot@1.1.2(@types/react@19.0.10)(react@19.0.0)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.10 - '@radix-ui/react-slot@1.2.0(@types/react@19.0.10)(react@19.0.0)': dependencies: '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) @@ -11304,144 +10496,119 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-switch@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-switch@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-tabs@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-tabs@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-toggle-group@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-toggle-group@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-toggle': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-toggle': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-toggle@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-toggle@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-toolbar@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-toolbar@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-separator': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-toggle-group': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-dom: 19.0.0(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.10 - '@types/react-dom': 19.0.4(@types/react@19.0.10) - - '@radix-ui/react-tooltip@1.1.8(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': - dependencies: - '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-context': 1.1.1(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-id': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-separator': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-toggle-group': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.10)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.10 - - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.0.10)(react@19.0.0)': - dependencies: - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.10 - - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-tooltip@1.2.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.10 - - '@radix-ui/react-use-controllable-state@1.1.1(@types/react@19.0.10)(react@19.0.0)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-popper': 1.2.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.5(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.1(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-visually-hidden': 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-use-controllable-state@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-use-previous@1.1.0(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: react: 19.0.0 optionalDependencies: @@ -11453,16 +10620,9 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.10)(react@19.0.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: - '@radix-ui/rect': 1.1.0 - react: 19.0.0 - optionalDependencies: - '@types/react': 19.0.10 - - '@radix-ui/react-use-size@1.1.0(@types/react@19.0.10)(react@19.0.0)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/rect': 1.1.1 react: 19.0.0 optionalDependencies: '@types/react': 19.0.10 @@ -11474,33 +10634,33 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-visually-hidden@1.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-visually-hidden@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/rect@1.1.0': {} + '@radix-ui/rect@1.1.1': {} - '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))': + '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': dependencies: merge-options: 3.0.4 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - '@react-native/assets-registry@0.79.0-rc.0': {} + '@react-native/assets-registry@0.79.0': {} - '@react-native/babel-plugin-codegen@0.79.0-rc.4(@babel/core@7.26.10)': + '@react-native/babel-plugin-codegen@0.79.0(@babel/core@7.26.10)': dependencies: - '@babel/traverse': 7.26.10 - '@react-native/codegen': 0.79.0-rc.4(@babel/core@7.26.10) + '@babel/traverse': 7.27.0 + '@react-native/codegen': 0.79.0(@babel/core@7.26.10) transitivePeerDependencies: - '@babel/core' - supports-color - '@react-native/babel-preset@0.79.0-rc.4(@babel/core@7.26.10)': + '@react-native/babel-preset@0.79.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) @@ -11511,7 +10671,7 @@ snapshots: '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) @@ -11535,35 +10695,22 @@ snapshots: '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.26.9 - '@react-native/babel-plugin-codegen': 0.79.0-rc.4(@babel/core@7.26.10) + '@babel/template': 7.27.0 + '@react-native/babel-plugin-codegen': 0.79.0(@babel/core@7.26.10) babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) react-refresh: 0.14.2 transitivePeerDependencies: - supports-color - '@react-native/codegen@0.79.0-rc.0(@babel/preset-env@7.26.9(@babel/core@7.26.10))': - dependencies: - '@babel/parser': 7.26.10 - '@babel/preset-env': 7.26.9(@babel/core@7.26.10) - glob: 7.2.3 - hermes-parser: 0.25.1 - invariant: 2.2.4 - jscodeshift: 17.1.2(@babel/preset-env@7.26.9(@babel/core@7.26.10)) - nullthrows: 1.1.1 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - - '@react-native/codegen@0.79.0-rc.4(@babel/core@7.26.10)': + '@react-native/codegen@0.79.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 glob: 7.2.3 @@ -11572,47 +10719,27 @@ snapshots: nullthrows: 1.1.1 yargs: 17.7.2 - '@react-native/community-cli-plugin@0.79.0-rc.0': + '@react-native/community-cli-plugin@0.79.0': dependencies: - '@react-native/dev-middleware': 0.79.0-rc.0 + '@react-native/dev-middleware': 0.79.0 chalk: 4.1.2 debug: 2.6.9 invariant: 2.2.4 - metro: 0.81.3 - metro-config: 0.81.3 - metro-core: 0.81.3 + metro: 0.82.1 + metro-config: 0.82.1 + metro-core: 0.82.1 semver: 7.7.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.79.0-rc.0': {} - - '@react-native/debugger-frontend@0.79.0-rc.4': {} - - '@react-native/dev-middleware@0.79.0-rc.0': - dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.79.0-rc.0 - chrome-launcher: 0.15.2 - chromium-edge-launcher: 0.2.0 - connect: 3.7.0 - debug: 2.6.9 - invariant: 2.2.4 - nullthrows: 1.1.1 - open: 7.4.2 - serve-static: 1.16.2 - ws: 6.2.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + '@react-native/debugger-frontend@0.79.0': {} - '@react-native/dev-middleware@0.79.0-rc.4': + '@react-native/dev-middleware@0.79.0': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.79.0-rc.4 + '@react-native/debugger-frontend': 0.79.0 chrome-launcher: 0.15.2 chromium-edge-launcher: 0.2.0 connect: 3.7.0 @@ -11627,172 +10754,148 @@ snapshots: - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.79.0-rc.0': {} + '@react-native/gradle-plugin@0.79.0': {} - '@react-native/js-polyfills@0.79.0-rc.0': {} + '@react-native/js-polyfills@0.79.0': {} '@react-native/normalize-colors@0.74.89': {} - '@react-native/normalize-colors@0.77.1': {} + '@react-native/normalize-colors@0.77.2': {} - '@react-native/normalize-colors@0.79.0-rc.0': {} + '@react-native/normalize-colors@0.79.0': {} - '@react-native/normalize-colors@0.79.0-rc.4': {} - - '@react-native/virtualized-lists@0.79.0-rc.0(@types/react@19.0.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-native/virtualized-lists@0.79.0(@types/react@19.0.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) optionalDependencies: '@types/react': 19.0.10 - '@react-navigation/bottom-tabs@7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/bottom-tabs@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/elements': 2.3.3(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/core@7.4.0(react@19.0.0)': - dependencies: - '@react-navigation/routers': 7.2.0 - escape-string-regexp: 4.0.0 - nanoid: 3.3.8 - query-string: 7.1.3 - react: 19.0.0 - react-is: 18.3.1 - use-latest-callback: 0.2.3(react@19.0.0) - use-sync-external-store: 1.4.0(react@19.0.0) - - '@react-navigation/core@7.8.0(react@19.0.0)': + '@react-navigation/core@7.8.5(react@19.0.0)': dependencies: - '@react-navigation/routers': 7.3.2 + '@react-navigation/routers': 7.3.5 escape-string-regexp: 4.0.0 nanoid: 3.3.8 query-string: 7.1.3 react: 19.0.0 react-is: 18.3.1 use-latest-callback: 0.2.3(react@19.0.0) - use-sync-external-store: 1.4.0(react@19.0.0) + use-sync-external-store: 1.5.0(react@19.0.0) - '@react-navigation/elements@2.3.3(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/elements@2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack@7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/native-stack@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/elements': 2.3.3(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/native@7.0.15(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': - dependencies: - '@react-navigation/core': 7.4.0(react@19.0.0) - escape-string-regexp: 4.0.0 - fast-deep-equal: 3.1.3 - nanoid: 3.3.8 - react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - use-latest-callback: 0.2.3(react@19.0.0) - - '@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/core': 7.8.0(react@19.0.0) + '@react-navigation/core': 7.8.5(react@19.0.0) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.8 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) use-latest-callback: 0.2.3(react@19.0.0) - '@react-navigation/routers@7.2.0': + '@react-navigation/routers@7.3.5': dependencies: nanoid: 3.3.8 - '@react-navigation/routers@7.3.2': + '@rollup/pluginutils@5.1.4(rollup@4.40.0)': dependencies: - nanoid: 3.3.8 - - '@rollup/pluginutils@5.1.4(rollup@4.36.0)': - dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.36.0 + rollup: 4.40.0 + + '@rollup/rollup-android-arm-eabi@4.40.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.36.0': + '@rollup/rollup-android-arm64@4.40.0': optional: true - '@rollup/rollup-android-arm64@4.36.0': + '@rollup/rollup-darwin-arm64@4.40.0': optional: true - '@rollup/rollup-darwin-arm64@4.36.0': + '@rollup/rollup-darwin-x64@4.40.0': optional: true - '@rollup/rollup-darwin-x64@4.36.0': + '@rollup/rollup-freebsd-arm64@4.40.0': optional: true - '@rollup/rollup-freebsd-arm64@4.36.0': + '@rollup/rollup-freebsd-x64@4.40.0': optional: true - '@rollup/rollup-freebsd-x64@4.36.0': + '@rollup/rollup-linux-arm-gnueabihf@4.40.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.36.0': + '@rollup/rollup-linux-arm-musleabihf@4.40.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.36.0': + '@rollup/rollup-linux-arm64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.36.0': + '@rollup/rollup-linux-arm64-musl@4.40.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.36.0': + '@rollup/rollup-linux-loongarch64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.36.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': + '@rollup/rollup-linux-riscv64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.36.0': + '@rollup/rollup-linux-riscv64-musl@4.40.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.36.0': + '@rollup/rollup-linux-s390x-gnu@4.40.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.36.0': + '@rollup/rollup-linux-x64-gnu@4.40.0': optional: true - '@rollup/rollup-linux-x64-musl@4.36.0': + '@rollup/rollup-linux-x64-musl@4.40.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.36.0': + '@rollup/rollup-win32-arm64-msvc@4.40.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.36.0': + '@rollup/rollup-win32-ia32-msvc@4.40.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.36.0': + '@rollup/rollup-win32-x64-msvc@4.40.0': optional: true '@shikijs/core@1.29.2': @@ -11804,9 +10907,9 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/core@3.2.1': + '@shikijs/core@3.2.2': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.2.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 @@ -11817,44 +10920,44 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 2.3.0 - '@shikijs/engine-javascript@3.2.1': + '@shikijs/engine-javascript@3.2.2': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.2.2 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.1.0 + oniguruma-to-es: 4.2.0 '@shikijs/engine-oniguruma@1.29.2': dependencies: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.2.1': + '@shikijs/engine-oniguruma@3.2.2': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.2.2 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/langs@3.2.1': + '@shikijs/langs@3.2.2': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.2.2 '@shikijs/themes@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/themes@3.2.1': + '@shikijs/themes@3.2.2': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.2.2 '@shikijs/types@1.29.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.2.1': + '@shikijs/types@3.2.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -11877,12 +10980,16 @@ snapshots: dependencies: tslib: 2.8.1 - '@tanstack/history@1.114.22': {} + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@tanstack/history@1.115.0': {} - '@tanstack/react-router-devtools@1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@tanstack/router-core@1.114.25)(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tiny-invariant@1.3.3)': + '@tanstack/react-router-devtools@1.116.0(@tanstack/react-router@1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@tanstack/router-core@1.115.3)(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/react-router': 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tanstack/router-devtools-core': 1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) + '@tanstack/react-router': 1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/router-devtools-core': 1.115.3(@tanstack/router-core@1.115.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) solid-js: 1.9.5 @@ -11891,11 +10998,11 @@ snapshots: - csstype - tiny-invariant - '@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@tanstack/react-router@1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@tanstack/history': 1.114.22 + '@tanstack/history': 1.115.0 '@tanstack/react-store': 0.7.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tanstack/router-core': 1.114.25 + '@tanstack/router-core': 1.115.3 jsesc: 3.1.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11907,17 +11014,17 @@ snapshots: '@tanstack/store': 0.7.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - use-sync-external-store: 1.4.0(react@19.0.0) + use-sync-external-store: 1.5.0(react@19.0.0) - '@tanstack/router-core@1.114.25': + '@tanstack/router-core@1.115.3': dependencies: - '@tanstack/history': 1.114.22 + '@tanstack/history': 1.115.0 '@tanstack/store': 0.7.0 tiny-invariant: 1.3.3 - '@tanstack/router-devtools-core@1.114.25(@tanstack/router-core@1.114.25)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': + '@tanstack/router-devtools-core@1.115.3(@tanstack/router-core@1.115.3)(csstype@3.1.3)(solid-js@1.9.5)(tiny-invariant@1.3.3)': dependencies: - '@tanstack/router-core': 1.114.25 + '@tanstack/router-core': 1.115.3 clsx: 2.1.1 goober: 2.1.16(csstype@3.1.3) solid-js: 1.9.5 @@ -11925,55 +11032,55 @@ snapshots: optionalDependencies: csstype: 3.1.3 - '@tanstack/router-generator@1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': + '@tanstack/router-generator@1.116.0(@tanstack/react-router@1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': dependencies: - '@tanstack/virtual-file-routes': 1.114.12 + '@tanstack/virtual-file-routes': 1.115.0 prettier: 3.5.3 tsx: 4.19.3 zod: 3.24.2 optionalDependencies: - '@tanstack/react-router': 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/react-router': 1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@tanstack/router-plugin@1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': + '@tanstack/router-plugin@1.116.1(@tanstack/react-router@1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - '@tanstack/router-core': 1.114.25 - '@tanstack/router-generator': 1.114.25(@tanstack/react-router@1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) - '@tanstack/router-utils': 1.114.12 - '@tanstack/virtual-file-routes': 1.114.12 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + '@tanstack/router-core': 1.115.3 + '@tanstack/router-generator': 1.116.0(@tanstack/react-router@1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + '@tanstack/router-utils': 1.115.0 + '@tanstack/virtual-file-routes': 1.115.0 '@types/babel__core': 7.20.5 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - babel-dead-code-elimination: 1.0.9 + '@types/babel__traverse': 7.20.7 + babel-dead-code-elimination: 1.0.10 chokidar: 3.6.0 - unplugin: 2.2.0 + unplugin: 2.3.2 zod: 3.24.2 optionalDependencies: - '@tanstack/react-router': 1.114.25(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + '@tanstack/react-router': 1.116.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@tanstack/router-utils@1.114.12': + '@tanstack/router-utils@1.115.0': dependencies: - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 ansis: 3.17.0 diff: 7.0.0 '@tanstack/store@0.7.0': {} - '@tanstack/virtual-file-routes@1.114.12': {} + '@tanstack/virtual-file-routes@1.115.0': {} '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.26.2 - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -11981,9 +11088,9 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 '@testing-library/dom': 10.4.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11993,34 +11100,28 @@ snapshots: '@tsconfig/react-native@1.0.5': {} - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.6 - '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 - '@types/babel__generator': 7.6.8 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.26.10 + '@babel/types': 7.27.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.26.10 - - '@types/cookie@0.6.0': {} + '@babel/types': 7.27.0 '@types/debug@4.1.12': dependencies: @@ -12028,13 +11129,13 @@ snapshots: '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 - '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.30 '@types/hast@3.0.4': dependencies: @@ -12068,7 +11169,7 @@ snapshots: '@types/node@17.0.45': {} - '@types/node@20.17.24': + '@types/node@20.17.30': dependencies: undici-types: 6.19.8 @@ -12082,7 +11183,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.30 '@types/stack-utils@2.0.3': {} @@ -12117,10 +11218,10 @@ snapshots: '@vercel/edge@1.2.1': {} - '@vercel/nft@0.29.2(rollup@4.36.0)': + '@vercel/nft@0.29.2(rollup@4.40.0)': dependencies: '@mapbox/node-pre-gyp': 2.0.0 - '@rollup/pluginutils': 5.1.4(rollup@4.36.0) + '@rollup/pluginutils': 5.1.4(rollup@4.40.0) acorn: 8.14.1 acorn-import-attributes: 1.9.5(acorn@8.14.1) async-sema: 3.1.1 @@ -12143,63 +11244,63 @@ snapshots: optionalDependencies: ajv: 6.12.6 - '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': + '@vitejs/plugin-react@4.4.0(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + react-refresh: 0.17.0 + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - supports-color - '@vitest/expect@3.0.9': + '@vitest/expect@3.1.1': dependencies: - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.9(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': + '@vitest/mocker@3.1.1(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))': dependencies: - '@vitest/spy': 3.0.9 + '@vitest/spy': 3.1.1 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) - '@vitest/pretty-format@3.0.9': + '@vitest/pretty-format@3.1.1': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.9': + '@vitest/runner@3.1.1': dependencies: - '@vitest/utils': 3.0.9 + '@vitest/utils': 3.1.1 pathe: 2.0.3 - '@vitest/snapshot@3.0.9': + '@vitest/snapshot@3.1.1': dependencies: - '@vitest/pretty-format': 3.0.9 + '@vitest/pretty-format': 3.1.1 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.9': + '@vitest/spy@3.1.1': dependencies: tinyspy: 3.0.2 - '@vitest/utils@3.0.9': + '@vitest/utils@3.1.1': dependencies: - '@vitest/pretty-format': 3.0.9 + '@vitest/pretty-format': 3.1.1 loupe: 3.1.3 tinyrainbow: 2.0.0 - '@volar/kit@2.4.12(typescript@5.8.2)': + '@volar/kit@2.4.12(typescript@5.8.3)': dependencies: '@volar/language-service': 2.4.12 '@volar/typescript': 2.4.12 typesafe-path: 0.2.2 - typescript: 5.8.2 + typescript: 5.8.3 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 @@ -12246,7 +11347,7 @@ snapshots: '@xmldom/xmldom@0.8.10': {} - abbrev@3.0.0: {} + abbrev@3.0.1: {} abort-controller@3.0.0: dependencies: @@ -12330,8 +11431,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - application-config-path@0.1.1: {} - arg@5.0.2: {} argparse@1.0.10: @@ -12358,26 +11457,23 @@ snapshots: assertion-error@2.0.1: {} - ast-types@0.16.1: - dependencies: - tslib: 2.8.1 - astring@1.9.0: {} - astro-expressive-code@0.40.2(astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)): + astro-expressive-code@0.40.2(astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1)): dependencies: - astro: 5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0) + astro: 5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1) rehype-expressive-code: 0.40.2 - astro@5.5.3(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.36.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0): + astro@5.7.0(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(rollup@4.40.0)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1): dependencies: '@astrojs/compiler': 2.11.0 '@astrojs/internal-helpers': 0.6.1 '@astrojs/markdown-remark': 6.3.1 '@astrojs/telemetry': 3.2.0 + '@capsizecss/metrics': 3.5.0 + '@capsizecss/unpack': 2.4.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.4(rollup@4.36.0) - '@types/cookie': 0.6.0 + '@rollup/pluginutils': 5.1.4(rollup@4.40.0) acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -12385,7 +11481,7 @@ snapshots: ci-info: 4.2.0 clsx: 2.1.1 common-ancestor-path: 1.0.1 - cookie: 0.7.2 + cookie: 1.0.2 cssesc: 3.0.0 debug: 4.4.0 deterministic-object-hash: 2.0.2 @@ -12394,7 +11490,7 @@ snapshots: dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 1.6.0 - esbuild: 0.25.1 + esbuild: 0.25.2 estree-walker: 3.0.3 flattie: 1.1.1 github-slugger: 2.0.0 @@ -12408,27 +11504,28 @@ snapshots: neotraverse: 0.6.18 p-limit: 6.2.0 p-queue: 8.1.0 - package-manager-detector: 1.1.0 + package-manager-detector: 1.2.0 picomatch: 4.0.2 prompts: 2.4.2 rehype: 13.0.2 semver: 7.7.1 - shiki: 3.2.1 + shiki: 3.2.2 tinyexec: 0.3.2 tinyglobby: 0.2.12 - tsconfck: 3.1.5(typescript@5.8.2) - ultrahtml: 1.5.3 + tsconfck: 3.1.5(typescript@5.8.3) + ultrahtml: 1.6.0 + unifont: 0.1.7 unist-util-visit: 5.0.0 unstorage: 1.15.0 vfile: 6.0.3 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - vitefu: 1.0.6(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) + vitefu: 1.0.6(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.1 zod: 3.24.2 - zod-to-json-schema: 3.24.4(zod@3.24.2) - zod-to-ts: 1.2.0(typescript@5.8.2)(zod@3.24.2) + zod-to-json-schema: 3.24.5(zod@3.24.2) + zod-to-ts: 1.2.0(typescript@5.8.3)(zod@3.24.2) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -12448,6 +11545,7 @@ snapshots: - '@vercel/kv' - aws4fetch - db0 + - encoding - idb-keyval - ioredis - jiti @@ -12469,12 +11567,10 @@ snapshots: async-sema@3.1.1: {} - asynckit@0.4.0: {} - autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001706 + caniuse-lite: 1.0.30001713 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -12485,12 +11581,12 @@ snapshots: b4a@1.6.7: {} - babel-dead-code-elimination@1.0.9: + babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 transitivePeerDependencies: - supports-color @@ -12519,16 +11615,16 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.10 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 - babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.10): + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): dependencies: '@babel/compat-data': 7.26.8 '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -12536,15 +11632,15 @@ snapshots: babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) core-js-compat: 3.41.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.10): + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.10) + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) transitivePeerDependencies: - supports-color @@ -12579,7 +11675,7 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) - babel-preset-expo@13.0.0-canary-20250402-161f57b(@babel/core@7.26.10): + babel-preset-expo@13.1.4(@babel/core@7.26.10): dependencies: '@babel/helper-module-imports': 7.25.9 '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) @@ -12594,8 +11690,8 @@ snapshots: '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) '@babel/preset-react': 7.26.3(@babel/core@7.26.10) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) - '@react-native/babel-preset': 0.79.0-rc.4(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + '@react-native/babel-preset': 0.79.0(@babel/core@7.26.10) babel-plugin-react-native-web: 0.19.13 babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) @@ -12619,21 +11715,19 @@ snapshots: bare-events@2.5.4: optional: true - bare-fs@4.0.1: + bare-fs@4.1.2: dependencies: bare-events: 2.5.4 bare-path: 3.0.0 bare-stream: 2.6.5(bare-events@2.5.4) - transitivePeerDependencies: - - bare-buffer optional: true - bare-os@3.6.0: + bare-os@3.6.1: optional: true bare-path@3.0.0: dependencies: - bare-os: 3.6.0 + bare-os: 3.6.1 optional: true bare-stream@2.6.5(bare-events@2.5.4): @@ -12673,6 +11767,8 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + blob-to-buffer@1.2.9: {} + boolbase@1.0.0: {} boxen@8.0.1: @@ -12682,7 +11778,7 @@ snapshots: chalk: 5.4.1 cli-boxes: 3.0.0 string-width: 7.2.0 - type-fest: 4.37.0 + type-fest: 4.40.0 widest-line: 5.0.0 wrap-ansi: 9.0.0 @@ -12711,10 +11807,14 @@ snapshots: dependencies: fill-range: 7.1.1 + brotli@1.3.3: + dependencies: + base64-js: 1.5.1 + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001706 - electron-to-chromium: 1.5.120 + caniuse-lite: 1.0.30001713 + electron-to-chromium: 1.5.137 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -12729,9 +11829,9 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-require@5.1.0(esbuild@0.25.1): + bundle-require@5.1.0(esbuild@0.25.2): dependencies: - esbuild: 0.25.1 + esbuild: 0.25.2 load-tsconfig: 0.2.5 busboy@1.6.0: @@ -12742,11 +11842,6 @@ snapshots: cac@6.7.14: {} - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - caller-callsite@2.0.0: dependencies: callsites: 2.0.0 @@ -12765,7 +11860,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001706: {} + caniuse-lite@1.0.30001713: {} ccount@2.0.1: {} @@ -12822,7 +11917,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.30 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -12831,7 +11926,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.30 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -12866,14 +11961,10 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone-deep@4.0.1: - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - clone@1.0.4: {} + clone@2.1.2: {} + clsx@2.1.1: {} collapse-white-space@2.1.0: {} @@ -12900,14 +11991,8 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} - command-exists@1.2.9: {} - commander@12.1.0: {} commander@2.20.3: {} @@ -12926,8 +12011,6 @@ snapshots: common-ancestor-path@1.0.1: {} - commondir@1.0.1: {} - compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -12961,7 +12044,7 @@ snapshots: cookie-es@1.2.2: {} - cookie@0.7.2: {} + cookie@1.0.2: {} core-js-compat@3.41.0: dependencies: @@ -13006,20 +12089,25 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 - css-selector-parser@3.1.1: {} + css-selector-parser@3.1.2: {} css-tree@1.1.3: dependencies: mdn-data: 2.0.14 source-map: 0.6.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css-what@6.1.0: {} cssesc@3.0.0: {} cssstyle@4.3.0: dependencies: - '@asamuzakjp/css-color': 3.1.1 + '@asamuzakjp/css-color': 3.1.2 rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -13071,13 +12159,11 @@ snapshots: defu@6.1.4: {} - delayed-stream@1.0.0: {} - depd@2.0.0: {} dequal@2.0.3: {} - destr@2.0.3: {} + destr@2.0.5: {} destroy@1.2.0: {} @@ -13097,6 +12183,8 @@ snapshots: dependencies: dequal: 2.0.3 + dfa@1.2.0: {} + didyoumean@1.2.2: {} diff@5.2.0: {} @@ -13135,17 +12223,11 @@ snapshots: dset@3.1.4: {} - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - eastasianwidth@0.2.0: {} ee-first@1.1.1: {} - electron-to-chromium@1.5.120: {} + electron-to-chromium@1.5.137: {} emmet@2.4.11: dependencies: @@ -13172,8 +12254,6 @@ snapshots: env-editor@0.4.2: {} - eol@0.9.1: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -13182,23 +12262,8 @@ snapshots: dependencies: stackframe: 1.3.4 - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - es-module-lexer@1.6.0: {} - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - esast-util-from-estree@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -13213,33 +12278,33 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild@0.25.1: + esbuild@0.25.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.1 - '@esbuild/android-arm': 0.25.1 - '@esbuild/android-arm64': 0.25.1 - '@esbuild/android-x64': 0.25.1 - '@esbuild/darwin-arm64': 0.25.1 - '@esbuild/darwin-x64': 0.25.1 - '@esbuild/freebsd-arm64': 0.25.1 - '@esbuild/freebsd-x64': 0.25.1 - '@esbuild/linux-arm': 0.25.1 - '@esbuild/linux-arm64': 0.25.1 - '@esbuild/linux-ia32': 0.25.1 - '@esbuild/linux-loong64': 0.25.1 - '@esbuild/linux-mips64el': 0.25.1 - '@esbuild/linux-ppc64': 0.25.1 - '@esbuild/linux-riscv64': 0.25.1 - '@esbuild/linux-s390x': 0.25.1 - '@esbuild/linux-x64': 0.25.1 - '@esbuild/netbsd-arm64': 0.25.1 - '@esbuild/netbsd-x64': 0.25.1 - '@esbuild/openbsd-arm64': 0.25.1 - '@esbuild/openbsd-x64': 0.25.1 - '@esbuild/sunos-x64': 0.25.1 - '@esbuild/win32-arm64': 0.25.1 - '@esbuild/win32-ia32': 0.25.1 - '@esbuild/win32-x64': 0.25.1 + '@esbuild/aix-ppc64': 0.25.2 + '@esbuild/android-arm': 0.25.2 + '@esbuild/android-arm64': 0.25.2 + '@esbuild/android-x64': 0.25.2 + '@esbuild/darwin-arm64': 0.25.2 + '@esbuild/darwin-x64': 0.25.2 + '@esbuild/freebsd-arm64': 0.25.2 + '@esbuild/freebsd-x64': 0.25.2 + '@esbuild/linux-arm': 0.25.2 + '@esbuild/linux-arm64': 0.25.2 + '@esbuild/linux-ia32': 0.25.2 + '@esbuild/linux-loong64': 0.25.2 + '@esbuild/linux-mips64el': 0.25.2 + '@esbuild/linux-ppc64': 0.25.2 + '@esbuild/linux-riscv64': 0.25.2 + '@esbuild/linux-s390x': 0.25.2 + '@esbuild/linux-x64': 0.25.2 + '@esbuild/netbsd-arm64': 0.25.2 + '@esbuild/netbsd-x64': 0.25.2 + '@esbuild/openbsd-arm64': 0.25.2 + '@esbuild/openbsd-x64': 0.25.2 + '@esbuild/sunos-x64': 0.25.2 + '@esbuild/win32-arm64': 0.25.2 + '@esbuild/win32-ia32': 0.25.2 + '@esbuild/win32-x64': 0.25.2 escalade@3.2.0: {} @@ -13257,7 +12322,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-build-jsx@3.0.1: dependencies: @@ -13270,7 +12335,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -13288,9 +12353,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.6 - - esutils@2.0.3: {} + '@types/estree': 1.0.7 etag@1.8.1: {} @@ -13314,55 +12377,55 @@ snapshots: expand-template@2.0.3: {} - expect-type@1.2.0: {} + expect-type@1.2.1: {} - expo-asset@12.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-asset@11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - '@expo/image-utils': 0.6.6-canary-20250402-161f57b - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + '@expo/image-utils': 0.7.2 + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): + expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: - '@expo/config': 11.0.0-canary-20250402-161f57b - '@expo/env': 1.0.1-canary-20250402-161f57b - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + '@expo/config': 11.0.3 + '@expo/env': 1.0.3 + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-file-system@19.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): + expo-file-system@18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) web-streams-polyfill: 3.3.3 - expo-font@14.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) fontfaceobserver: 2.3.0 react: 19.0.0 - expo-keep-awake@15.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-keep-awake@14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) invariant: 2.2.4 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - expo - supports-color - expo-modules-autolinking@3.0.0-canary-20250402-161f57b: + expo-modules-autolinking@2.1.4: dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 @@ -13372,103 +12435,105 @@ snapshots: require-from-string: 2.0.2 resolve-from: 5.0.0 - expo-modules-core@3.0.0-canary-20250402-161f57b: + expo-modules-core@2.3.5: dependencies: invariant: 2.2.4 - expo-navigation-bar@5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-navigation-bar@4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - '@react-native/normalize-colors': 0.79.0-rc.4 + '@react-native/normalize-colors': 0.79.0 debug: 4.4.0 - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - ? expo-router@5.0.0-canary-20250402-161f57b(expo-constants@18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + ? expo-router@5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) : dependencies: - '@expo/metro-runtime': 5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - '@expo/server': 0.6.0-canary-20250402-161f57b - '@radix-ui/react-slot': 1.0.1(react@19.0.0) - '@react-navigation/bottom-tabs': 7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack': 7.3.5(@react-navigation/native@7.1.1(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@expo/metro-runtime': 5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + '@expo/server': 0.6.2 + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + '@react-navigation/bottom-tabs': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native-stack': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) client-only: 0.0.1 - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - expo-linking: 7.1.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-linking: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) invariant: 2.2.4 react-fast-compare: 3.2.2 - react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) schema-utils: 4.3.0 semver: 7.6.3 server-only: 0.0.1 shallowequal: 1.1.0 optionalDependencies: - react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - '@react-native-masked-view/masked-view' + - '@types/react' - react - react-native - supports-color - expo-splash-screen@0.29.23-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): + expo-splash-screen@0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): dependencies: - '@expo/prebuild-config': 9.0.0-canary-20250402-161f57b - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@expo/prebuild-config': 9.0.0 + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - expo-status-bar@2.0.2-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-status-bar@2.2.1(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-edge-to-edge: 1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-system-ui@5.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)): + expo-system-ui@5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: - '@react-native/normalize-colors': 0.79.0-rc.4 + '@react-native/normalize-colors': 0.79.0 debug: 4.4.0 - expo: 53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) optionalDependencies: - react-native-web: 0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - supports-color - - expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - '@babel/runtime': 7.26.10 - '@expo/cli': 1.0.0-canary-20250402-161f57b - '@expo/config': 11.0.0-canary-20250402-161f57b - '@expo/config-plugins': 9.1.0-canary-20250402-161f57b - '@expo/fingerprint': 0.11.12-canary-20250402-161f57b - '@expo/metro-config': 0.20.0-canary-20250402-161f57b - '@expo/vector-icons': 14.0.4 - babel-preset-expo: 13.0.0-canary-20250402-161f57b(@babel/core@7.26.10) - expo-asset: 12.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 18.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - expo-file-system: 19.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) - expo-font: 14.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-keep-awake: 15.0.0-canary-20250402-161f57b(expo@53.0.0-canary-20250402-161f57b(@babel/core@7.26.10)(@expo/metro-runtime@5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-modules-autolinking: 3.0.0-canary-20250402-161f57b - expo-modules-core: 3.0.0-canary-20250402-161f57b - react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native-web: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.27.0 + '@expo/cli': 0.24.2 + '@expo/config': 11.0.3 + '@expo/config-plugins': 9.1.4 + '@expo/fingerprint': 0.12.2 + '@expo/metro-config': 0.20.4 + '@expo/vector-icons': 14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + babel-preset-expo: 13.1.4(@babel/core@7.26.10) + expo-asset: 11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-file-system: 18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-keep-awake: 14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-modules-autolinking: 2.1.4 + expo-modules-core: 2.3.5 + react: 19.0.0 + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-edge-to-edge: 1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) web-streams-polyfill: 3.3.3 whatwg-url-without-unicode: 8.0.0-3 optionalDependencies: - '@expo/metro-runtime': 5.0.0-canary-20250402-161f57b(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0)) + '@expo/metro-runtime': 5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) transitivePeerDependencies: - '@babel/core' - babel-plugin-react-compiler - bufferutil - graphql - - react-compiler-runtime - supports-color - utf-8-validate @@ -13497,8 +12562,6 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-loops@1.1.4: {} - fast-uri@3.0.6: {} fastq@1.19.1: @@ -13547,16 +12610,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-cache-dir@2.1.0: - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -13571,9 +12624,7 @@ snapshots: flow-enums-runtime@0.0.6: {} - flow-parser@0.265.3: {} - - flow-remove-types@2.265.3: + flow-remove-types@2.267.0: dependencies: hermes-parser: 0.25.1 pirates: 3.0.2 @@ -13581,18 +12632,23 @@ snapshots: fontfaceobserver@2.3.0: {} + fontkit@2.0.4: + dependencies: + '@swc/helpers': 0.5.17 + brotli: 1.3.3 + clone: 2.1.2 + dfa: 1.2.0 + fast-deep-equal: 3.1.3 + restructure: 3.0.2 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - fraction.js@4.3.7: {} freeport-async@2.0.0: {} @@ -13614,30 +12670,10 @@ snapshots: get-east-asian-width@1.3.0: {} - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - get-nonce@1.0.1: {} get-package-type@0.1.0: {} - get-port@3.2.0: {} - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - get-stream@6.0.1: {} get-tsconfig@4.10.0: @@ -13682,8 +12718,6 @@ snapshots: dependencies: csstype: 3.1.3 - gopd@1.2.0: {} - graceful-fs@4.2.11: {} h3@1.15.1: @@ -13691,11 +12725,11 @@ snapshots: cookie-es: 1.2.2 crossws: 0.3.4 defu: 6.1.4 - destr: 2.0.3 + destr: 2.0.5 iron-webcrypto: 1.2.1 node-mock-http: 1.0.0 radix3: 1.1.2 - ufo: 1.5.4 + ufo: 1.6.1 uncrypto: 0.1.3 has-flag@3.0.0: {} @@ -13704,12 +12738,6 @@ snapshots: has-own-prop@2.0.0: {} - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -13803,7 +12831,7 @@ snapshots: '@types/unist': 3.0.3 bcp-47-match: 2.0.3 comma-separated-tokens: 2.0.3 - css-selector-parser: 3.1.1 + css-selector-parser: 3.1.2 devlop: 1.1.0 direction: 2.0.1 hast-util-has-property: 3.0.0 @@ -13817,7 +12845,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -13852,7 +12880,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -13953,7 +12981,7 @@ snapshots: i18next@23.16.8: dependencies: - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 iconv-lite@0.6.3: dependencies: @@ -13961,7 +12989,7 @@ snapshots: ieee754@1.2.1: {} - image-size@1.2.0: + image-size@1.2.1: dependencies: queue: 6.0.2 @@ -13985,10 +13013,9 @@ snapshots: inline-style-parser@0.2.4: {} - inline-style-prefixer@6.0.4: + inline-style-prefixer@7.0.1: dependencies: css-in-js-utils: 3.1.0 - fast-loops: 1.1.4 internal-ip@6.1.0: dependencies: @@ -14050,10 +13077,6 @@ snapshots: is-plain-obj@4.1.0: {} - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - is-potential-custom-element-name@1.0.1: {} is-stream@2.0.1: {} @@ -14068,14 +13091,12 @@ snapshots: isexe@2.0.0: {} - isobject@3.0.1: {} - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 + '@babel/parser': 7.27.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -14093,7 +13114,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.24 + '@types/node': 20.17.30 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -14103,7 +13124,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.24 + '@types/node': 20.17.30 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -14130,7 +13151,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.24 + '@types/node': 20.17.30 jest-util: 29.7.0 jest-regex-util@29.6.3: {} @@ -14138,7 +13159,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.24 + '@types/node': 20.17.30 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -14155,7 +13176,7 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.30 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14179,42 +13200,16 @@ snapshots: jsc-safe-url@0.2.4: {} - jscodeshift@17.1.2(@babel/preset-env@7.26.9(@babel/core@7.26.10)): - dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) - '@babel/preset-flow': 7.25.9(@babel/core@7.26.10) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) - '@babel/register': 7.25.9(@babel/core@7.26.10) - flow-parser: 0.265.3 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - neo-async: 2.6.2 - picocolors: 1.1.1 - recast: 0.23.11 - tmp: 0.2.3 - write-file-atomic: 5.0.1 - optionalDependencies: - '@babel/preset-env': 7.26.9(@babel/core@7.26.10) - transitivePeerDependencies: - - supports-color - - jsdom@26.0.0: + jsdom@26.1.0: dependencies: cssstyle: 4.3.0 data-urls: 5.0.0 decimal.js: 10.5.0 - form-data: 4.0.2 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.19 + nwsapi: 2.2.20 parse5: 7.2.1 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -14249,8 +13244,6 @@ snapshots: jsonc-parser@3.3.1: {} - kind-of@6.0.3: {} - kleur@3.0.3: {} kleur@4.1.5: {} @@ -14262,7 +13255,7 @@ snapshots: lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 - marky: 1.2.5 + marky: 1.3.0 transitivePeerDependencies: - supports-color @@ -14362,11 +13355,6 @@ snapshots: load-tsconfig@0.2.5: {} - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -14401,11 +13389,11 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react-native@0.482.0(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + lucide-react-native@0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-svg: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) lucide-react@0.476.0(react@19.0.0): dependencies: @@ -14419,15 +13407,10 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 source-map-js: 1.2.1 - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -14436,9 +13419,7 @@ snapshots: markdown-table@3.0.4: {} - marky@1.2.5: {} - - math-intrinsics@1.1.0: {} + marky@1.3.0: {} mdast-util-definitions@6.0.0: dependencies: @@ -14625,6 +13606,8 @@ snapshots: mdn-data@2.0.14: {} + mdn-data@2.12.2: {} + memoize-one@5.2.1: {} memoize-one@6.0.0: {} @@ -14637,7 +13620,7 @@ snapshots: merge2@1.4.1: {} - metro-babel-transformer@0.81.3: + metro-babel-transformer@0.82.1: dependencies: '@babel/core': 7.26.10 flow-enums-runtime: 0.0.6 @@ -14646,40 +13629,40 @@ snapshots: transitivePeerDependencies: - supports-color - metro-cache-key@0.81.3: + metro-cache-key@0.82.1: dependencies: flow-enums-runtime: 0.0.6 - metro-cache@0.81.3: + metro-cache@0.82.1: dependencies: exponential-backoff: 3.1.2 flow-enums-runtime: 0.0.6 - metro-core: 0.81.3 + metro-core: 0.82.1 - metro-config@0.81.3: + metro-config@0.82.1: dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.81.3 - metro-cache: 0.81.3 - metro-core: 0.81.3 - metro-runtime: 0.81.3 + metro: 0.82.1 + metro-cache: 0.82.1 + metro-core: 0.82.1 + metro-runtime: 0.82.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - metro-core@0.81.3: + metro-core@0.82.1: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 - metro-resolver: 0.81.3 + metro-resolver: 0.82.1 - metro-file-map@0.81.3: + metro-file-map@0.82.1: dependencies: - debug: 2.6.9 + debug: 4.4.0 fb-watchman: 2.0.2 flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 @@ -14691,112 +13674,112 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.81.3: + metro-minify-terser@0.82.1: dependencies: flow-enums-runtime: 0.0.6 terser: 5.39.0 - metro-resolver@0.81.3: + metro-resolver@0.82.1: dependencies: flow-enums-runtime: 0.0.6 - metro-runtime@0.81.3: + metro-runtime@0.82.1: dependencies: - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 flow-enums-runtime: 0.0.6 - metro-source-map@0.81.3: + metro-source-map@0.82.1: dependencies: - '@babel/traverse': 7.26.10 - '@babel/traverse--for-generate-function-map': '@babel/traverse@7.26.10' - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.27.0' + '@babel/types': 7.27.0 flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.81.3 + metro-symbolicate: 0.82.1 nullthrows: 1.1.1 - ob1: 0.81.3 + ob1: 0.82.1 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-symbolicate@0.81.3: + metro-symbolicate@0.82.1: dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-source-map: 0.81.3 + metro-source-map: 0.82.1 nullthrows: 1.1.1 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - metro-transform-plugins@0.81.3: + metro-transform-plugins@0.82.1: dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-transform-worker@0.81.3: + metro-transform-worker@0.82.1: dependencies: '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/types': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 flow-enums-runtime: 0.0.6 - metro: 0.81.3 - metro-babel-transformer: 0.81.3 - metro-cache: 0.81.3 - metro-cache-key: 0.81.3 - metro-minify-terser: 0.81.3 - metro-source-map: 0.81.3 - metro-transform-plugins: 0.81.3 + metro: 0.82.1 + metro-babel-transformer: 0.82.1 + metro-cache: 0.82.1 + metro-cache-key: 0.82.1 + metro-minify-terser: 0.82.1 + metro-source-map: 0.82.1 + metro-transform-plugins: 0.82.1 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - metro@0.81.3: + metro@0.82.1: dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/parser': 7.26.10 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 connect: 3.7.0 - debug: 2.6.9 + debug: 4.4.0 error-stack-parser: 2.1.4 flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 hermes-parser: 0.25.1 - image-size: 1.2.0 + image-size: 1.2.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.81.3 - metro-cache: 0.81.3 - metro-cache-key: 0.81.3 - metro-config: 0.81.3 - metro-core: 0.81.3 - metro-file-map: 0.81.3 - metro-resolver: 0.81.3 - metro-runtime: 0.81.3 - metro-source-map: 0.81.3 - metro-symbolicate: 0.81.3 - metro-transform-plugins: 0.81.3 - metro-transform-worker: 0.81.3 + metro-babel-transformer: 0.82.1 + metro-cache: 0.82.1 + metro-cache-key: 0.82.1 + metro-config: 0.82.1 + metro-core: 0.82.1 + metro-file-map: 0.82.1 + metro-resolver: 0.82.1 + metro-runtime: 0.82.1 + metro-source-map: 0.82.1 + metro-symbolicate: 0.82.1 + metro-transform-plugins: 0.82.1 + metro-transform-worker: 0.82.1 mime-types: 2.1.35 nullthrows: 1.1.1 serialize-error: 2.1.0 @@ -14896,27 +13879,26 @@ snapshots: micromark-util-combine-extensions: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-mdx-expression@3.0.0: + micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.2 + micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 + micromark-util-events-to-acorn: 2.0.3 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-extension-mdx-jsx@3.0.1: + micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.2 + micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 + micromark-util-events-to-acorn: 2.0.3 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 vfile-message: 4.0.2 @@ -14927,11 +13909,11 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 + micromark-util-events-to-acorn: 2.0.3 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 @@ -14941,8 +13923,8 @@ snapshots: dependencies: acorn: 8.14.1 acorn-jsx: 5.3.2(acorn@8.14.1) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 micromark-extension-mdxjs-esm: 3.0.0 micromark-util-combine-extensions: 2.0.1 @@ -14961,13 +13943,13 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-mdx-expression@2.0.2: + micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.2 + micromark-util-events-to-acorn: 2.0.3 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 @@ -15025,10 +14007,9 @@ snapshots: micromark-util-encode@2.0.1: {} - micromark-util-events-to-acorn@2.0.2: + micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -15118,17 +14099,12 @@ snapshots: minipass@7.1.2: {} - minizlib@3.0.1: + minizlib@3.0.2: dependencies: minipass: 7.1.2 - rimraf: 5.0.10 mkdirp-classic@0.5.3: {} - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - mkdirp@1.0.4: {} mkdirp@3.0.1: {} @@ -15153,25 +14129,11 @@ snapshots: napi-build-utils@2.0.0: {} - nativewind@4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): - dependencies: - comment-json: 4.2.5 - debug: 4.4.0 - react-native-css-interop: 0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) - tailwindcss: 3.4.17 - transitivePeerDependencies: - - react - - react-native - - react-native-reanimated - - react-native-safe-area-context - - react-native-svg - - supports-color - - nativewind@4.1.23(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + nativewind@4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: comment-json: 4.2.5 debug: 4.4.0 - react-native-css-interop: 0.1.22(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + react-native-css-interop: 0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) tailwindcss: 3.4.17 transitivePeerDependencies: - react @@ -15185,8 +14147,6 @@ snapshots: negotiator@0.6.4: {} - neo-async@2.6.2: {} - neotraverse@0.6.18: {} nested-error-stacks@2.0.1: {} @@ -15197,7 +14157,7 @@ snapshots: '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001706 + caniuse-lite: 1.0.30001713 postcss: 8.4.31 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -15246,7 +14206,7 @@ snapshots: nopt@8.1.0: dependencies: - abbrev: 3.0.0 + abbrev: 3.0.1 normalize-path@3.0.0: {} @@ -15269,9 +14229,9 @@ snapshots: nullthrows@1.1.1: {} - nwsapi@2.2.19: {} + nwsapi@2.2.20: {} - ob1@0.81.3: + ob1@0.82.1: dependencies: flow-enums-runtime: 0.0.6 @@ -15281,9 +14241,11 @@ snapshots: ofetch@1.4.1: dependencies: - destr: 2.0.3 + destr: 2.0.5 node-fetch-native: 1.6.6 - ufo: 1.5.4 + ufo: 1.6.1 + + ohash@1.1.6: {} on-finished@2.3.0: dependencies: @@ -15307,7 +14269,7 @@ snapshots: dependencies: mimic-fn: 2.1.0 - oniguruma-parser@0.5.4: {} + oniguruma-parser@0.11.1: {} oniguruma-to-es@2.3.0: dependencies: @@ -15315,10 +14277,10 @@ snapshots: regex: 5.1.1 regex-recursion: 5.1.1 - oniguruma-to-es@4.1.0: + oniguruma-to-es@4.2.0: dependencies: emoji-regex-xs: 1.0.0 - oniguruma-parser: 0.5.4 + oniguruma-parser: 0.11.1 regex: 6.0.1 regex-recursion: 6.0.2 @@ -15342,8 +14304,6 @@ snapshots: strip-ansi: 5.2.0 wcwidth: 1.0.1 - os-tmpdir@1.0.2: {} - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -15354,11 +14314,7 @@ snapshots: p-limit@6.2.0: dependencies: - yocto-queue: 1.2.0 - - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 + yocto-queue: 1.2.1 p-locate@4.1.0: dependencies: @@ -15379,7 +14335,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.1.0: {} + package-manager-detector@1.2.0: {} pagefind@1.3.0: optionalDependencies: @@ -15389,6 +14345,8 @@ snapshots: '@pagefind/linux-x64': 1.3.0 '@pagefind/windows-x64': 1.3.0 + pako@0.2.9: {} + parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -15423,15 +14381,8 @@ snapshots: parseurl@1.3.3: {} - password-prompt@1.1.3: - dependencies: - ansi-escapes: 4.3.2 - cross-spawn: 7.0.6 - path-browserify@1.0.1: {} - path-exists@3.0.0: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -15463,17 +14414,11 @@ snapshots: pify@2.3.0: {} - pify@4.0.1: {} - pirates@3.0.2: dependencies: node-modules-regexp: 1.0.0 - pirates@4.0.6: {} - - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 + pirates@4.0.7: {} plist@3.1.0: dependencies: @@ -15498,18 +14443,18 @@ snapshots: postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.3 - yaml: 2.7.0 + yaml: 2.7.1 optionalDependencies: postcss: 8.5.3 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(yaml@2.7.0): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(yaml@2.7.1): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.3 tsx: 4.19.3 - yaml: 2.7.0 + yaml: 2.7.1 postcss-nested@6.2.0(postcss@8.5.3): dependencies: @@ -15594,12 +14539,6 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - property-information@6.5.0: {} property-information@7.0.0: {} @@ -15656,73 +14595,39 @@ snapshots: dependencies: react: 19.0.0 - react-is@16.13.1: {} - react-is@17.0.2: {} react-is@18.3.1: {} - react-native-css-interop@0.1.22(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): - dependencies: - '@babel/helper-module-imports': 7.25.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 - debug: 4.4.0 - lightningcss: 1.29.3 - react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - semver: 7.7.1 - tailwindcss: 3.4.17 - optionalDependencies: - react-native-safe-area-context: 5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-svg: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - supports-color - - react-native-css-interop@0.1.22(react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + react-native-css-interop@0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: '@babel/helper-module-imports': 7.25.9 - '@babel/traverse': 7.26.10 - '@babel/types': 7.26.10 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 debug: 4.4.0 lightningcss: 1.29.3 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated: 4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) semver: 7.7.1 tailwindcss: 3.4.17 optionalDependencies: - react-native-svg: 15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-is-edge-to-edge@1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-edge-to-edge@1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-is-edge-to-edge@1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) - convert-source-map: 2.0.0 - invariant: 2.2.4 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - supports-color + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated@4.0.0-beta.3(@babel/core@7.26.10)(react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) @@ -15733,42 +14638,41 @@ snapshots: '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/preset-typescript': 7.26.0(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) convert-source-map: 2.0.0 invariant: 2.2.4 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.6(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-worklets: 0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-safe-area-context@5.3.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-screens@4.10.0(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-freeze: 1.0.4(react@19.0.0) - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 - react-native-svg@15.11.2(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: css-select: 5.1.0 css-tree: 1.1.3 react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 - react-native-web@0.19.13(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 '@react-native/normalize-colors': 0.74.89 fbjs: 3.0.5 - inline-style-prefixer: 6.0.4 + inline-style-prefixer: 7.0.1 memoize-one: 6.0.0 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 @@ -15778,22 +14682,16 @@ snapshots: transitivePeerDependencies: - encoding - react-native-worklets@0.2.0-nightly-20250401-a5236f3be(@babel/core@7.26.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - '@babel/core': 7.26.10 - react: 19.0.0 - react-native: 0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0) - - react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0): + react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.79.0-rc.0 - '@react-native/codegen': 0.79.0-rc.0(@babel/preset-env@7.26.9(@babel/core@7.26.10)) - '@react-native/community-cli-plugin': 0.79.0-rc.0 - '@react-native/gradle-plugin': 0.79.0-rc.0 - '@react-native/js-polyfills': 0.79.0-rc.0 - '@react-native/normalize-colors': 0.79.0-rc.0 - '@react-native/virtualized-lists': 0.79.0-rc.0(@types/react@19.0.10)(react-native@0.79.0-rc.0(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-native/assets-registry': 0.79.0 + '@react-native/codegen': 0.79.0(@babel/core@7.26.10) + '@react-native/community-cli-plugin': 0.79.0 + '@react-native/gradle-plugin': 0.79.0 + '@react-native/js-polyfills': 0.79.0 + '@react-native/normalize-colors': 0.79.0 + '@react-native/virtualized-lists': 0.79.0(@types/react@19.0.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -15808,8 +14706,8 @@ snapshots: invariant: 2.2.4 jest-environment-node: 29.7.0 memoize-one: 5.2.1 - metro-runtime: 0.81.3 - metro-source-map: 0.81.3 + metro-runtime: 0.82.1 + metro-source-map: 0.82.1 nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 @@ -15827,7 +14725,6 @@ snapshots: '@types/react': 19.0.10 transitivePeerDependencies: - '@babel/core' - - '@babel/preset-env' - '@react-native-community/cli' - bufferutil - supports-color @@ -15835,6 +14732,8 @@ snapshots: react-refresh@0.14.2: {} + react-refresh@0.17.0: {} + react-remove-scroll-bar@2.3.8(@types/react@19.0.10)(react@19.0.0): dependencies: react: 19.0.0 @@ -15880,17 +14779,9 @@ snapshots: readdirp@4.1.2: {} - recast@0.23.11: - dependencies: - ast-types: 0.16.1 - esprima: 4.0.1 - source-map: 0.6.1 - tiny-invariant: 1.3.3 - tslib: 2.8.1 - recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 @@ -15906,14 +14797,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -15930,7 +14821,7 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.26.10 + '@babel/runtime': 7.27.0 regex-recursion@5.1.1: dependencies: @@ -15989,7 +14880,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -16044,7 +14935,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-rehype@11.1.1: + remark-rehype@11.1.2: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -16106,6 +14997,8 @@ snapshots: onetime: 2.0.1 signal-exit: 3.0.7 + restructure@3.0.2: {} + retext-latin@4.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -16137,33 +15030,30 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@5.0.10: - dependencies: - glob: 10.4.5 - - rollup@4.36.0: + rollup@4.40.0: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.36.0 - '@rollup/rollup-android-arm64': 4.36.0 - '@rollup/rollup-darwin-arm64': 4.36.0 - '@rollup/rollup-darwin-x64': 4.36.0 - '@rollup/rollup-freebsd-arm64': 4.36.0 - '@rollup/rollup-freebsd-x64': 4.36.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 - '@rollup/rollup-linux-arm-musleabihf': 4.36.0 - '@rollup/rollup-linux-arm64-gnu': 4.36.0 - '@rollup/rollup-linux-arm64-musl': 4.36.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 - '@rollup/rollup-linux-riscv64-gnu': 4.36.0 - '@rollup/rollup-linux-s390x-gnu': 4.36.0 - '@rollup/rollup-linux-x64-gnu': 4.36.0 - '@rollup/rollup-linux-x64-musl': 4.36.0 - '@rollup/rollup-win32-arm64-msvc': 4.36.0 - '@rollup/rollup-win32-ia32-msvc': 4.36.0 - '@rollup/rollup-win32-x64-msvc': 4.36.0 + '@rollup/rollup-android-arm-eabi': 4.40.0 + '@rollup/rollup-android-arm64': 4.40.0 + '@rollup/rollup-darwin-arm64': 4.40.0 + '@rollup/rollup-darwin-x64': 4.40.0 + '@rollup/rollup-freebsd-arm64': 4.40.0 + '@rollup/rollup-freebsd-x64': 4.40.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 + '@rollup/rollup-linux-arm-musleabihf': 4.40.0 + '@rollup/rollup-linux-arm64-gnu': 4.40.0 + '@rollup/rollup-linux-arm64-musl': 4.40.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-gnu': 4.40.0 + '@rollup/rollup-linux-riscv64-musl': 4.40.0 + '@rollup/rollup-linux-s390x-gnu': 4.40.0 + '@rollup/rollup-linux-x64-gnu': 4.40.0 + '@rollup/rollup-linux-x64-musl': 4.40.0 + '@rollup/rollup-win32-arm64-msvc': 4.40.0 + '@rollup/rollup-win32-ia32-msvc': 4.40.0 + '@rollup/rollup-win32-x64-msvc': 4.40.0 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -16191,8 +15081,6 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - semver@5.7.2: {} - semver@6.3.1: {} semver@7.6.3: {} @@ -16258,10 +15146,6 @@ snapshots: setprototypeof@1.2.0: {} - shallow-clone@3.0.1: - dependencies: - kind-of: 6.0.3 - shallowequal@1.1.0: {} sharp@0.32.6: @@ -16323,14 +15207,14 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shiki@3.2.1: + shiki@3.2.2: dependencies: - '@shikijs/core': 3.2.1 - '@shikijs/engine-javascript': 3.2.1 - '@shikijs/engine-oniguruma': 3.2.1 - '@shikijs/langs': 3.2.1 - '@shikijs/themes': 3.2.1 - '@shikijs/types': 3.2.1 + '@shikijs/core': 3.2.2 + '@shikijs/engine-javascript': 3.2.2 + '@shikijs/engine-oniguruma': 3.2.2 + '@shikijs/langs': 3.2.2 + '@shikijs/themes': 3.2.2 + '@shikijs/types': 3.2.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -16418,7 +15302,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.8.1: {} + std-env@3.9.0: {} stream-buffers@2.2.0: {} @@ -16504,11 +15388,9 @@ snapshots: glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.6 + pirates: 4.0.7 ts-interface-checker: 0.1.13 - sudo-prompt@8.2.5: {} - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -16530,7 +15412,7 @@ snapshots: symbol-tree@3.2.4: {} - tailwind-merge@3.0.2: {} + tailwind-merge@3.2.0: {} tailwindcss-animate@1.0.7(tailwindcss@3.4.17): dependencies: @@ -16575,7 +15457,7 @@ snapshots: pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.0.1 + bare-fs: 4.1.2 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -16599,7 +15481,7 @@ snapshots: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.1 + minizlib: 3.0.2 mkdirp: 3.0.1 yallist: 5.0.0 @@ -16637,6 +15519,8 @@ snapshots: throat@5.0.0: {} + tiny-inflate@1.0.3: {} + tiny-invariant@1.3.3: {} tiny-warning@1.0.3: {} @@ -16656,17 +15540,11 @@ snapshots: tinyspy@3.0.2: {} - tldts-core@6.1.84: {} - - tldts@6.1.84: - dependencies: - tldts-core: 6.1.84 + tldts-core@6.1.86: {} - tmp@0.0.33: + tldts@6.1.86: dependencies: - os-tmpdir: 1.0.2 - - tmp@0.2.3: {} + tldts-core: 6.1.86 tmpl@1.0.5: {} @@ -16678,7 +15556,7 @@ snapshots: tough-cookie@5.1.2: dependencies: - tldts: 6.1.84 + tldts: 6.1.86 tr46@0.0.3: {} @@ -16698,25 +15576,25 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.1.5(typescript@5.8.2): + tsconfck@3.1.5(typescript@5.8.3): optionalDependencies: - typescript: 5.8.2 + typescript: 5.8.3 tslib@2.8.1: {} - tsup@8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0): + tsup@8.4.0(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(typescript@5.8.3)(yaml@2.7.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.1) + bundle-require: 5.1.0(esbuild@0.25.2) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 debug: 4.4.0 - esbuild: 0.25.1 + esbuild: 0.25.2 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(yaml@2.7.0) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.3)(tsx@4.19.3)(yaml@2.7.1) resolve-from: 5.0.0 - rollup: 4.36.0 + rollup: 4.40.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 @@ -16724,7 +15602,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: postcss: 8.5.3 - typescript: 5.8.2 + typescript: 5.8.3 transitivePeerDependencies: - jiti - supports-color @@ -16733,7 +15611,7 @@ snapshots: tsx@4.19.3: dependencies: - esbuild: 0.25.1 + esbuild: 0.25.2 get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 @@ -16742,32 +15620,32 @@ snapshots: dependencies: safe-buffer: 5.2.1 - turbo-darwin-64@2.4.4: + turbo-darwin-64@2.5.0: optional: true - turbo-darwin-arm64@2.4.4: + turbo-darwin-arm64@2.5.0: optional: true - turbo-linux-64@2.4.4: + turbo-linux-64@2.5.0: optional: true - turbo-linux-arm64@2.4.4: + turbo-linux-arm64@2.5.0: optional: true - turbo-windows-64@2.4.4: + turbo-windows-64@2.5.0: optional: true - turbo-windows-arm64@2.4.4: + turbo-windows-arm64@2.5.0: optional: true - turbo@2.4.4: + turbo@2.5.0: optionalDependencies: - turbo-darwin-64: 2.4.4 - turbo-darwin-arm64: 2.4.4 - turbo-linux-64: 2.4.4 - turbo-linux-arm64: 2.4.4 - turbo-windows-64: 2.4.4 - turbo-windows-arm64: 2.4.4 + turbo-darwin-64: 2.5.0 + turbo-darwin-arm64: 2.5.0 + turbo-linux-64: 2.5.0 + turbo-linux-arm64: 2.5.0 + turbo-windows-64: 2.5.0 + turbo-windows-arm64: 2.5.0 type-detect@4.0.8: {} @@ -16775,7 +15653,7 @@ snapshots: type-fest@0.7.1: {} - type-fest@4.37.0: {} + type-fest@4.40.0: {} typesafe-path@0.2.2: {} @@ -16783,13 +15661,13 @@ snapshots: dependencies: semver: 7.7.1 - typescript@5.8.2: {} + typescript@5.8.3: {} ua-parser-js@1.0.40: {} - ufo@1.5.4: {} + ufo@1.6.1: {} - ultrahtml@1.5.3: {} + ultrahtml@1.6.0: {} uncrypto@0.1.3: {} @@ -16797,7 +15675,7 @@ snapshots: undici@6.21.2: {} - undici@7.5.0: {} + undici@7.8.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -16808,8 +15686,18 @@ snapshots: unicode-match-property-value-ecmascript@2.2.0: {} + unicode-properties@1.4.1: + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + unicode-property-aliases-ecmascript@2.1.0: {} + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -16820,6 +15708,11 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unifont@0.1.7: + dependencies: + css-tree: 3.1.0 + ohash: 1.1.6 + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -16872,21 +15765,22 @@ snapshots: unpipe@1.0.0: {} - unplugin@2.2.0: + unplugin@2.3.2: dependencies: acorn: 8.14.1 + picomatch: 4.0.2 webpack-virtual-modules: 0.6.2 unstorage@1.15.0: dependencies: anymatch: 3.1.3 chokidar: 4.0.3 - destr: 2.0.3 + destr: 2.0.5 h3: 1.15.1 lru-cache: 10.4.3 node-fetch-native: 1.6.6 ofetch: 1.4.1 - ufo: 1.5.4 + ufo: 1.6.1 update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: @@ -16918,7 +15812,7 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 - use-sync-external-store@1.4.0(react@19.0.0): + use-sync-external-store@1.5.0(react@19.0.0): dependencies: react: 19.0.0 @@ -16947,13 +15841,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.0.9(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): + vite-node@3.1.1(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -16970,52 +15864,52 @@ snapshots: vite-plugin-react-native-web@2.1.1: dependencies: - flow-remove-types: 2.265.3 + flow-remove-types: 2.267.0 - vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): + vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1): dependencies: - esbuild: 0.25.1 + esbuild: 0.25.2 postcss: 8.5.3 - rollup: 4.36.0 + rollup: 4.40.0 optionalDependencies: - '@types/node': 20.17.24 + '@types/node': 20.17.30 fsevents: 2.3.3 jiti: 1.21.7 lightningcss: 1.29.3 terser: 5.39.0 tsx: 4.19.3 - yaml: 2.7.0 + yaml: 2.7.1 - vitefu@1.0.6(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)): + vitefu@1.0.6(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)): optionalDependencies: - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) - vitest@3.0.9(@types/debug@4.1.12)(@types/node@20.17.24)(jiti@1.21.7)(jsdom@26.0.0)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): + vitest@3.1.1(@types/debug@4.1.12)(@types/node@20.17.30)(jiti@1.21.7)(jsdom@26.1.0)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1): dependencies: - '@vitest/expect': 3.0.9 - '@vitest/mocker': 3.0.9(vite@6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.9 - '@vitest/runner': 3.0.9 - '@vitest/snapshot': 3.0.9 - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 + '@vitest/expect': 3.1.1 + '@vitest/mocker': 3.1.1(vite@6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1)) + '@vitest/pretty-format': 3.1.1 + '@vitest/runner': 3.1.1 + '@vitest/snapshot': 3.1.1 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 chai: 5.2.0 debug: 4.4.0 - expect-type: 1.2.0 + expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - std-env: 3.8.1 + std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.2(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - vite-node: 3.0.9(@types/node@20.17.24)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) + vite: 6.2.6(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) + vite-node: 3.1.1(@types/node@20.17.30)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 20.17.24 - jsdom: 26.0.0 + '@types/node': 20.17.30 + jsdom: 26.1.0 transitivePeerDependencies: - jiti - less @@ -17036,7 +15930,7 @@ snapshots: volar-service-css@0.0.62(@volar/language-service@2.4.12): dependencies: - vscode-css-languageservice: 6.3.2 + vscode-css-languageservice: 6.3.4 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: @@ -17053,7 +15947,7 @@ snapshots: volar-service-html@0.0.62(@volar/language-service@2.4.12): dependencies: - vscode-html-languageservice: 5.3.1 + vscode-html-languageservice: 5.3.3 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.1.0 optionalDependencies: @@ -17090,14 +15984,14 @@ snapshots: optionalDependencies: '@volar/language-service': 2.4.12 - vscode-css-languageservice@6.3.2: + vscode-css-languageservice@6.3.4: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12 vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 - vscode-html-languageservice@5.3.1: + vscode-html-languageservice@5.3.3: dependencies: '@vscode/l10n': 0.0.18 vscode-languageserver-textdocument: 1.0.12 @@ -17246,11 +16140,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@5.0.1: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - ws@6.2.3: dependencies: async-limiter: 1.0.1 @@ -17302,7 +16191,7 @@ snapshots: yaml@2.2.2: {} - yaml@2.7.0: {} + yaml@2.7.1: {} yargs-parser@21.1.1: {} @@ -17318,7 +16207,7 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.2.0: {} + yocto-queue@1.2.1: {} yocto-spinner@0.2.1: dependencies: @@ -17326,21 +16215,21 @@ snapshots: yoctocolors@2.1.1: {} - zod-to-json-schema@3.24.4(zod@3.24.2): + zod-to-json-schema@3.24.5(zod@3.24.2): dependencies: zod: 3.24.2 - zod-to-ts@1.2.0(typescript@5.8.2)(zod@3.24.2): + zod-to-ts@1.2.0(typescript@5.8.3)(zod@3.24.2): dependencies: - typescript: 5.8.2 + typescript: 5.8.3 zod: 3.24.2 zod@3.24.2: {} - zustand@5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.4.0(react@19.0.0)): + zustand@5.0.3(@types/react@19.0.10)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)): optionalDependencies: '@types/react': 19.0.10 react: 19.0.0 - use-sync-external-store: 1.4.0(react@19.0.0) + use-sync-external-store: 1.5.0(react@19.0.0) zwitch@2.0.4: {} From 0f6e6e8ff9aea081b200485a06d469bfacd4c506 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Tue, 15 Apr 2025 15:21:49 -0400 Subject: [PATCH 071/106] fix(expo-nativewind): alert-dialog content animation --- .../components/ui/alert-dialog.tsx | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/apps/expo-nativewind/components/ui/alert-dialog.tsx b/apps/expo-nativewind/components/ui/alert-dialog.tsx index b05cf30f..e058e509 100644 --- a/apps/expo-nativewind/components/ui/alert-dialog.tsx +++ b/apps/expo-nativewind/components/ui/alert-dialog.tsx @@ -53,18 +53,21 @@ function AlertDialogContent({ return ( - + + {/* AlertDialogPrimitive.Content uses `nativeID` for accessibility, so it prevents the entering animation from working https://docs.swmansion.com/react-native-reanimated/docs/layout-animations/entering-exiting-animations/#remarks */} + + ); From 81fd51bf3e9985a3b38edc56a72701e291572aa7 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Thu, 17 Apr 2025 16:37:13 +0200 Subject: [PATCH 072/106] feat(progress): implement progress v2 --- packages/progress/package.json | 19 +++-- packages/progress/src/base-types.ts | 7 ++ packages/progress/src/index.ts | 4 +- packages/progress/src/native/index.ts | 2 + .../src/native/progress-native.native.tsx | 45 ++++++++++++ .../progress/src/native/progress-native.tsx | 17 +++++ packages/progress/src/native/types.ts | 11 +++ packages/progress/src/progress.tsx | 72 ------------------- packages/progress/src/progress.web.tsx | 52 -------------- packages/progress/src/types.ts | 14 ---- packages/progress/src/universal/index.ts | 2 + packages/progress/src/universal/progress.tsx | 12 ++++ .../progress/src/universal/progress.web.tsx | 27 +++++++ packages/progress/src/universal/types.ts | 24 +++++++ packages/progress/src/web/index.ts | 3 + packages/progress/src/web/progress-web.tsx | 17 +++++ .../progress/src/web/progress-web.web.tsx | 12 ++++ packages/progress/src/web/types.ts | 11 +++ packages/progress/tsconfig.json | 14 ++-- packages/progress/tsup.config.ts | 23 +++++- pnpm-lock.yaml | 3 + 21 files changed, 233 insertions(+), 158 deletions(-) create mode 100644 packages/progress/src/base-types.ts create mode 100644 packages/progress/src/native/index.ts create mode 100644 packages/progress/src/native/progress-native.native.tsx create mode 100644 packages/progress/src/native/progress-native.tsx create mode 100644 packages/progress/src/native/types.ts delete mode 100644 packages/progress/src/progress.tsx delete mode 100644 packages/progress/src/progress.web.tsx delete mode 100644 packages/progress/src/types.ts create mode 100644 packages/progress/src/universal/index.ts create mode 100644 packages/progress/src/universal/progress.tsx create mode 100644 packages/progress/src/universal/progress.web.tsx create mode 100644 packages/progress/src/universal/types.ts create mode 100644 packages/progress/src/web/index.ts create mode 100644 packages/progress/src/web/progress-web.tsx create mode 100644 packages/progress/src/web/progress-web.web.tsx create mode 100644 packages/progress/src/web/types.ts diff --git a/packages/progress/package.json b/packages/progress/package.json index 8fd0f2e1..11ac7a05 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/progress", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive progress", "license": "MIT", "main": "dist/index.js", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/progress": { - "import": "./dist/progress.mjs", - "require": "./dist/progress.js", - "types": "./dist/progress.d.ts", - "default": "./dist/progress.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -33,6 +39,7 @@ }, "dependencies": { "@radix-ui/react-progress": "^1.1.0", + "@rn-primitives/core": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*" }, diff --git a/packages/progress/src/base-types.ts b/packages/progress/src/base-types.ts new file mode 100644 index 00000000..25717011 --- /dev/null +++ b/packages/progress/src/base-types.ts @@ -0,0 +1,7 @@ +import type { IndicatorProps as IndicatorPropsWeb, RootProps as RootPropsWeb } from './web/types'; + +type BaseRootProps = Pick; + +type BaseIndicatorProps = Pick; + +export type { BaseRootProps, BaseIndicatorProps }; diff --git a/packages/progress/src/index.ts b/packages/progress/src/index.ts index ebcecdc6..0738834f 100644 --- a/packages/progress/src/index.ts +++ b/packages/progress/src/index.ts @@ -1,2 +1,2 @@ -export * from './progress'; -export * from './types'; +export { Indicator, Root } from './universal/progress'; +export type { IndicatorProps, RootProps } from './universal/types'; diff --git a/packages/progress/src/native/index.ts b/packages/progress/src/native/index.ts new file mode 100644 index 00000000..38fafbd7 --- /dev/null +++ b/packages/progress/src/native/index.ts @@ -0,0 +1,2 @@ +export { Indicator, Root } from './progress-native'; +export type { IndicatorProps, RootProps } from './types'; diff --git a/packages/progress/src/native/progress-native.native.tsx b/packages/progress/src/native/progress-native.native.tsx new file mode 100644 index 00000000..93c5168c --- /dev/null +++ b/packages/progress/src/native/progress-native.native.tsx @@ -0,0 +1,45 @@ +import { View } from '@rn-primitives/core/dist/native'; +import type { IndicatorProps, RootProps } from './types'; + +const DEFAULT_MAX = 100; + +function Root({ + value: valueProp, + max: maxProp, + getValueLabel = defaultGetValueLabel, + ...props +}: RootProps) { + const max = maxProp ?? DEFAULT_MAX; + const value = isValidValueNumber(valueProp, max) ? valueProp : 0; + + return ( + + ); +} + +function Indicator(props: IndicatorProps) { + return ; +} + +export { Indicator, Root }; + +function defaultGetValueLabel(value: number, max: number) { + return `${Math.round((value / max) * 100)}%`; +} + +function isValidValueNumber(value: any, max: number): value is number { + return typeof value === 'number' && !isNaN(value) && value <= max && value >= 0; +} diff --git a/packages/progress/src/native/progress-native.tsx b/packages/progress/src/native/progress-native.tsx new file mode 100644 index 00000000..db1a6c5c --- /dev/null +++ b/packages/progress/src/native/progress-native.tsx @@ -0,0 +1,17 @@ +import type { IndicatorProps, RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/progress/native is only supported on native.'); + } + return null; +} + +function Indicator(props: IndicatorProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Indicator` from @rn-primitives/progress/native is only supported on native.'); + } + return null; +} + +export { Indicator, Root }; diff --git a/packages/progress/src/native/types.ts b/packages/progress/src/native/types.ts new file mode 100644 index 00000000..688298ce --- /dev/null +++ b/packages/progress/src/native/types.ts @@ -0,0 +1,11 @@ +import type { ViewProps } from '@rn-primitives/core/dist/native'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps, BaseIndicatorProps } from '../base-types'; + +type RootProps = Prettify; +type RootPropsNativeOnly = ViewProps; + +type IndicatorProps = Prettify; +type IndicatorPropsNativeOnly = ViewProps; + +export type { RootProps, RootPropsNativeOnly, IndicatorProps, IndicatorPropsNativeOnly }; diff --git a/packages/progress/src/progress.tsx b/packages/progress/src/progress.tsx deleted file mode 100644 index e15969b6..00000000 --- a/packages/progress/src/progress.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { View } from 'react-native'; -import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; - -// This project uses code from WorkOS/Radix Primitives. -// The code is licensed under the MIT License. -// https://github.com/radix-ui/primitives/tree/main - -const DEFAULT_MAX = 100; - -const Root = ( - { - ref, - asChild, - value: valueProp, - max: maxProp, - getValueLabel = defaultGetValueLabel, - ...props - }: RootProps & { - ref: React.RefObject; - } -) => { - const max = maxProp ?? DEFAULT_MAX; - const value = isValidValueNumber(valueProp, max) ? valueProp : 0; - - const Component = asChild ? Slot : View; - return ( - - ); -}; - -Root.displayName = 'RootProgress'; - -const Indicator = ( - { - ref, - asChild, - ...props - }: IndicatorProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : View; - return ; -}; - -Indicator.displayName = 'IndicatorProgress'; - -export { Indicator, Root }; - -function defaultGetValueLabel(value: number, max: number) { - return `${Math.round((value / max) * 100)}%`; -} - -function isValidValueNumber(value: any, max: number): value is number { - return typeof value === 'number' && !isNaN(value) && value <= max && value >= 0; -} diff --git a/packages/progress/src/progress.web.tsx b/packages/progress/src/progress.web.tsx deleted file mode 100644 index d8272185..00000000 --- a/packages/progress/src/progress.web.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import * as Progress from '@radix-ui/react-progress'; -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { View } from 'react-native'; -import type { IndicatorProps, IndicatorRef, RootProps, RootRef } from './types'; - -const ProgressContext = React.createContext(null); - -const Root = ( - { - ref, - asChild, - value, - max, - getValueLabel, - ...props - }: RootProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); -}; - -Root.displayName = 'RootProgress'; - -const Indicator = ( - { - ref, - asChild, - ...props - }: IndicatorProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : View; - return ( - - - - ); -}; - -Indicator.displayName = 'IndicatorProgress'; - -export { Indicator, Root }; diff --git a/packages/progress/src/types.ts b/packages/progress/src/types.ts deleted file mode 100644 index f8163649..00000000 --- a/packages/progress/src/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { SlottableViewProps, ViewRef } from '@rn-primitives/types'; - -type RootProps = SlottableViewProps & { - value?: number | null | undefined; - max?: number; - getValueLabel?(value: number, max: number): string; -}; - -type IndicatorProps = SlottableViewProps; - -type RootRef = ViewRef; -type IndicatorRef = ViewRef; - -export type { IndicatorProps, IndicatorRef, RootProps, RootRef }; diff --git a/packages/progress/src/universal/index.ts b/packages/progress/src/universal/index.ts new file mode 100644 index 00000000..492b28cc --- /dev/null +++ b/packages/progress/src/universal/index.ts @@ -0,0 +1,2 @@ +export { Indicator, Root } from './progress'; +export type { IndicatorProps, RootProps } from './types'; diff --git a/packages/progress/src/universal/progress.tsx b/packages/progress/src/universal/progress.tsx new file mode 100644 index 00000000..3fa37f88 --- /dev/null +++ b/packages/progress/src/universal/progress.tsx @@ -0,0 +1,12 @@ +import { Indicator as IndicatorNative, Root as RootNative } from '../native'; +import type { RootProps, IndicatorProps } from './types'; + +function Root({ web: _web, native, ...props }: RootProps) { + return ; +} + +function Indicator({ web: _web, native, ...props }: IndicatorProps) { + return ; +} + +export { Indicator, Root }; diff --git a/packages/progress/src/universal/progress.web.tsx b/packages/progress/src/universal/progress.web.tsx new file mode 100644 index 00000000..a296a79e --- /dev/null +++ b/packages/progress/src/universal/progress.web.tsx @@ -0,0 +1,27 @@ +import { View } from '@rn-primitives/core'; +import { Indicator as IndicatorWeb, Root as RootWeb } from '../web'; +import type { IndicatorProps, RootProps } from './types'; + +function Root({ native: _native, web, style, ...props }: RootProps) { + if (style) { + return ( + + + + ); + } + return ; +} + +function Indicator({ native: _native, web, style, ...props }: IndicatorProps) { + if (style) { + return ( + + + + ); + } + return ; +} + +export { Indicator, Root }; diff --git a/packages/progress/src/universal/types.ts b/packages/progress/src/universal/types.ts new file mode 100644 index 00000000..d7d41b2d --- /dev/null +++ b/packages/progress/src/universal/types.ts @@ -0,0 +1,24 @@ +import { ViewPropsUniversal } from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps, BaseIndicatorProps } from '../base-types'; +import type { RootPropsNativeOnly, IndicatorPropsNativeOnly } from '../native/types'; +import type { RootPropsWebOnly, IndicatorPropsWebOnly } from '../web/types'; + +type BaseWithPlatformProps = Prettify< + B & { + native?: N; + web?: W; + } +>; + +type RootProps = BaseWithPlatformProps & + ViewPropsUniversal; + +type IndicatorProps = BaseWithPlatformProps< + BaseIndicatorProps, + IndicatorPropsNativeOnly, + IndicatorPropsWebOnly +> & + ViewPropsUniversal; + +export type { RootProps, IndicatorProps }; diff --git a/packages/progress/src/web/index.ts b/packages/progress/src/web/index.ts new file mode 100644 index 00000000..1cf42f1c --- /dev/null +++ b/packages/progress/src/web/index.ts @@ -0,0 +1,3 @@ +export { Root, Indicator } from './progress-web'; + +export type { RootProps, IndicatorProps } from './types'; diff --git a/packages/progress/src/web/progress-web.tsx b/packages/progress/src/web/progress-web.tsx new file mode 100644 index 00000000..4e229ff5 --- /dev/null +++ b/packages/progress/src/web/progress-web.tsx @@ -0,0 +1,17 @@ +import type { RootProps, IndicatorProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/progress/web is only supported on web.'); + } + return null; +} + +function Indicator(props: IndicatorProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Indicator` from @rn-primitives/progress/web is only supported on web.'); + } + return null; +} + +export { Root, Indicator }; diff --git a/packages/progress/src/web/progress-web.web.tsx b/packages/progress/src/web/progress-web.web.tsx new file mode 100644 index 00000000..c679caf0 --- /dev/null +++ b/packages/progress/src/web/progress-web.web.tsx @@ -0,0 +1,12 @@ +import { Progress, ProgressIndicator } from '@radix-ui/react-progress'; +import type { RootProps, IndicatorProps } from './types'; + +function Root(props: RootProps) { + return ; +} + +function Indicator(props: IndicatorProps) { + return ; +} + +export { Root, Indicator }; diff --git a/packages/progress/src/web/types.ts b/packages/progress/src/web/types.ts new file mode 100644 index 00000000..1eba5f2e --- /dev/null +++ b/packages/progress/src/web/types.ts @@ -0,0 +1,11 @@ +import type { Root, Indicator } from '@radix-ui/react-progress'; + +type RootProps = React.ComponentProps; + +type RootPropsWebOnly = React.ComponentProps<'div'>; + +type IndicatorProps = React.ComponentProps; + +type IndicatorPropsWebOnly = React.ComponentProps<'div'>; + +export type { RootProps, RootPropsWebOnly, IndicatorProps, IndicatorPropsWebOnly }; diff --git a/packages/progress/tsconfig.json b/packages/progress/tsconfig.json index 60ce1f95..5f55dd33 100644 --- a/packages/progress/tsconfig.json +++ b/packages/progress/tsconfig.json @@ -1,8 +1,6 @@ { "extends": "@tsconfig/react-native/tsconfig.json", - "include": [ - "./src/**/*" - ], + "include": ["./src/**/*"], "compilerOptions": { "lib": [ "dom", @@ -19,11 +17,7 @@ "es2022.array", "es2022.object", "es2022.string" - ], + ] }, - "exclude": [ - "dist", - "build", - "node_modules" - ], -} \ No newline at end of file + "exclude": ["dist", "build", "node_modules"] +} diff --git a/packages/progress/tsup.config.ts b/packages/progress/tsup.config.ts index e7e556c5..1b0b2d54 100644 --- a/packages/progress/tsup.config.ts +++ b/packages/progress/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/progress.tsx', 'src/progress.web.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/progress.tsx', + 'src/universal/progress.web.tsx', + 'src/native/index.ts', + 'src/native/progress-native.tsx', + 'src/native/progress-native.native.tsx', + 'src/web/index.ts', + 'src/web/progress-web.tsx', + 'src/web/progress-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './progress'], + external: [ + 'react', + './universal', + './progress', + '../native', + './progress-native', + '../web', + './progress-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d742dcc9..3c29fa0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1467,6 +1467,9 @@ importers: '@radix-ui/react-progress': specifier: ^1.1.0 version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rn-primitives/core': + specifier: workspace:* + version: link:../core '@rn-primitives/slot': specifier: workspace:* version: link:../slot From 99c29e80a7f8920a72ddf15b47852659d2bac4e9 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Mon, 21 Apr 2025 13:50:48 +0200 Subject: [PATCH 073/106] use withRNPrimitives util --- packages/progress/src/web/progress-web.web.tsx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/progress/src/web/progress-web.web.tsx b/packages/progress/src/web/progress-web.web.tsx index c679caf0..d688a616 100644 --- a/packages/progress/src/web/progress-web.web.tsx +++ b/packages/progress/src/web/progress-web.web.tsx @@ -1,12 +1,7 @@ import { Progress, ProgressIndicator } from '@radix-ui/react-progress'; -import type { RootProps, IndicatorProps } from './types'; +import { withRNPrimitives } from '@rn-primitives/utils'; -function Root(props: RootProps) { - return ; -} - -function Indicator(props: IndicatorProps) { - return ; -} +const Root = withRNPrimitives(Progress, 'view'); +const Indicator = withRNPrimitives(ProgressIndicator, 'view'); export { Root, Indicator }; From 4709e1e7da36557f98e0223f5078f9c37f71176e Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Mon, 21 Apr 2025 13:51:04 +0200 Subject: [PATCH 074/106] remove accessibilityValue prop for native --- packages/progress/src/native/progress-native.native.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/progress/src/native/progress-native.native.tsx b/packages/progress/src/native/progress-native.native.tsx index 93c5168c..ef8d7b19 100644 --- a/packages/progress/src/native/progress-native.native.tsx +++ b/packages/progress/src/native/progress-native.native.tsx @@ -19,12 +19,6 @@ function Root({ aria-valuemin={0} aria-valuenow={value} aria-valuetext={getValueLabel(value, max)} - accessibilityValue={{ - min: 0, - max, - now: value, - text: getValueLabel(value, max), - }} {...props} /> ); From 3ce47c1285547d3fed735e0dd0b6620cb92dd4e2 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Mon, 21 Apr 2025 13:51:48 +0200 Subject: [PATCH 075/106] update example apps with Progress v2 --- .../components/ui/progress.tsx | 7 +--- apps/nextjs-nativewind/src/app/page.tsx | 5 +++ .../src/components/ui/progress.tsx | 7 +--- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 7 +++- .../src/components/ui/progress.tsx | 34 +++++++++++++++++++ apps/vite-tanstack-router/package.json | 1 + .../src/components/ui/progress.tsx | 34 +++++++++++++++++++ .../vite-tanstack-router/src/routes/index.tsx | 6 ++++ packages/progress/package.json | 3 +- pnpm-lock.yaml | 9 +++++ 11 files changed, 100 insertions(+), 14 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/progress.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/progress.tsx diff --git a/apps/expo-nativewind/components/ui/progress.tsx b/apps/expo-nativewind/components/ui/progress.tsx index 82196bb4..9003b1de 100644 --- a/apps/expo-nativewind/components/ui/progress.tsx +++ b/apps/expo-nativewind/components/ui/progress.tsx @@ -11,19 +11,15 @@ import Animated, { import { cn } from '~/lib/utils'; const Progress = ({ - ref, className, value, indicatorClassName, ...props -}: React.ComponentPropsWithoutRef & { +}: ProgressPrimitive.RootProps & { indicatorClassName?: string; -} & { - ref?: React.RefObject>; }) => { return ( @@ -31,7 +27,6 @@ const Progress = ({ ); }; -Progress.displayName = ProgressPrimitive.Root.displayName; export { Progress }; diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 30aabd48..1a5ff962 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -109,6 +109,7 @@ export default function Home() { + {/* @@ -456,3 +457,7 @@ function TableExample() {
); } + +function ProgressExample() { + return ; +} diff --git a/apps/nextjs-nativewind/src/components/ui/progress.tsx b/apps/nextjs-nativewind/src/components/ui/progress.tsx index 9dc2febf..288c4769 100644 --- a/apps/nextjs-nativewind/src/components/ui/progress.tsx +++ b/apps/nextjs-nativewind/src/components/ui/progress.tsx @@ -1,23 +1,19 @@ 'use client'; import * as ProgressPrimitive from '@rn-primitives/progress'; -import * as React from 'react'; import { View } from 'react-native'; import { cn } from '~/lib/utils'; const Progress = ({ - ref, className, value, indicatorClassName, ...props -}: React.ComponentPropsWithoutRef & { +}: ProgressPrimitive.RootProps & { indicatorClassName?: string; - ref?: React.RefObject>; }) => { return ( @@ -25,7 +21,6 @@ const Progress = ({ ); }; -Progress.displayName = ProgressPrimitive.Root.displayName; export { Progress }; diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index edfdb8cc..5346c726 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -19,6 +19,7 @@ "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", + "@rn-primitives/progress": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "next": "15.2.2", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index c631f3fc..9cc9dabf 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -22,7 +22,7 @@ import { AspectRatio } from '~/components/ui/aspect-ratio'; import { Button } from '~/components/ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '~/components/ui/avatar'; import { Checkbox } from '~/components/ui/checkbox'; - +import { Progress } from '~/components/ui/progress'; export default function Home() { return (
@@ -38,6 +38,7 @@ export default function Home() { +
); @@ -141,3 +142,7 @@ function CheckboxExample() {
); } + +function ProgressExample() { + return ; +} diff --git a/apps/nextjs-no-rn/src/components/ui/progress.tsx b/apps/nextjs-no-rn/src/components/ui/progress.tsx new file mode 100644 index 00000000..ee154aba --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/progress.tsx @@ -0,0 +1,34 @@ +import * as ProgressPrimitive from '@rn-primitives/progress'; +import { View } from '@rn-primitives/core'; +import { cn } from '~/lib/utils'; + +const Progress = ({ + className, + value, + indicatorClassName, + ...props +}: ProgressPrimitive.RootProps & { + indicatorClassName?: string; +}) => { + return ( + + + + ); +}; + +export { Progress }; + +function Indicator({ value, className }: { value: number | undefined | null; className?: string }) { + return ( + + + + ); +} diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index 8779bbc9..09f2b395 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -17,6 +17,7 @@ "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", "@rn-primitives/checkbox": "workspace:*", + "@rn-primitives/progress": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", "@tanstack/react-router": "^1.114.3", diff --git a/apps/vite-tanstack-router/src/components/ui/progress.tsx b/apps/vite-tanstack-router/src/components/ui/progress.tsx new file mode 100644 index 00000000..516c9f90 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/progress.tsx @@ -0,0 +1,34 @@ +import * as ProgressPrimitive from '@rn-primitives/progress'; +import { View } from '@rn-primitives/core'; +import { cn } from '@/lib/utils'; + +const Progress = ({ + className, + value, + indicatorClassName, + ...props +}: ProgressPrimitive.RootProps & { + indicatorClassName?: string; +}) => { + return ( + + + + ); +}; + +export { Progress }; + +function Indicator({ value, className }: { value: number | undefined | null; className?: string }) { + return ( + + + + ); +} diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx index 69f8e72d..5408238d 100644 --- a/apps/vite-tanstack-router/src/routes/index.tsx +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -17,6 +17,7 @@ import { CardTitle, } from '@/components/ui/card'; import { Checkbox } from '@/components/ui/checkbox'; +import { Progress } from '@/components/ui/progress'; import { Text } from '@/components/ui/text'; import { View } from '@rn-primitives/core'; import { createFileRoute } from '@tanstack/react-router'; @@ -43,6 +44,7 @@ export function App() { + ); @@ -143,3 +145,7 @@ function CheckboxExample() {
); } + +function ProgressExample() { + return ; +} diff --git a/packages/progress/package.json b/packages/progress/package.json index 11ac7a05..d734124e 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -41,7 +41,8 @@ "@radix-ui/react-progress": "^1.1.0", "@rn-primitives/core": "workspace:*", "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c29fa0d..f85d7d6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -713,6 +713,9 @@ importers: '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core + '@rn-primitives/progress': + specifier: workspace:* + version: link:../../packages/progress '@rn-primitives/slot': specifier: workspace:* version: link:../../packages/slot @@ -783,6 +786,9 @@ importers: '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core + '@rn-primitives/progress': + specifier: workspace:* + version: link:../../packages/progress '@rn-primitives/slot': specifier: workspace:* version: link:../../packages/slot @@ -1476,6 +1482,9 @@ importers: '@rn-primitives/types': specifier: workspace:* version: link:../types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils react-native-web: specifier: '*' version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) From ac3440d8fc039dac244bf94ed40e0d7e5fac2dbe Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Mon, 21 Apr 2025 13:57:30 +0200 Subject: [PATCH 076/106] auto-generated app.json change by expo --- apps/expo-nativewind/app.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/expo-nativewind/app.json b/apps/expo-nativewind/app.json index cdbf479f..63489597 100644 --- a/apps/expo-nativewind/app.json +++ b/apps/expo-nativewind/app.json @@ -23,7 +23,8 @@ "adaptiveIcon": { "foregroundImage": "./assets/images/adaptive-icon.png", "backgroundColor": "#ffffff" - } + }, + "package": "com.anonymous.starterbase" }, "web": { "bundler": "metro", From 5d01181980d8bb44484bcf8e560b0a387e4a0486 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Mon, 21 Apr 2025 21:04:41 +0200 Subject: [PATCH 077/106] toggle v2 --- apps/expo-nativewind/components/ui/toggle.tsx | 9 +- .../src/components/ui/toggle.tsx | 9 +- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 6 ++ .../nextjs-no-rn/src/components/ui/toggle.tsx | 84 +++++++++++++++++++ .../src/components/ui/toggle.tsx | 84 +++++++++++++++++++ packages/toggle/package.json | 22 +++-- packages/toggle/src/base-types.ts | 8 ++ packages/toggle/src/index.ts | 4 +- packages/toggle/src/native/index.ts | 2 + .../src/native/toggle-native.native.tsx | 43 ++++++++++ packages/toggle/src/native/toggle-native.tsx | 10 +++ packages/toggle/src/native/types.ts | 8 ++ packages/toggle/src/toggle.tsx | 46 ---------- packages/toggle/src/toggle.web.tsx | 35 -------- packages/toggle/src/types.ts | 11 --- packages/toggle/src/universal/index.ts | 2 + packages/toggle/src/universal/toggle.tsx | 8 ++ packages/toggle/src/universal/toggle.web.tsx | 13 +++ packages/toggle/src/universal/types.ts | 17 ++++ packages/toggle/src/web/index.ts | 2 + packages/toggle/src/web/toggle-web.tsx | 10 +++ packages/toggle/src/web/toggle-web.web.tsx | 6 ++ packages/toggle/src/web/types.ts | 7 ++ pnpm-lock.yaml | 9 ++ 25 files changed, 339 insertions(+), 117 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/toggle.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/toggle.tsx create mode 100644 packages/toggle/src/base-types.ts create mode 100644 packages/toggle/src/native/index.ts create mode 100644 packages/toggle/src/native/toggle-native.native.tsx create mode 100644 packages/toggle/src/native/toggle-native.tsx create mode 100644 packages/toggle/src/native/types.ts delete mode 100644 packages/toggle/src/toggle.tsx delete mode 100644 packages/toggle/src/toggle.web.tsx delete mode 100644 packages/toggle/src/types.ts create mode 100644 packages/toggle/src/universal/index.ts create mode 100644 packages/toggle/src/universal/toggle.tsx create mode 100644 packages/toggle/src/universal/toggle.web.tsx create mode 100644 packages/toggle/src/universal/types.ts create mode 100644 packages/toggle/src/web/index.ts create mode 100644 packages/toggle/src/web/toggle-web.tsx create mode 100644 packages/toggle/src/web/toggle-web.web.tsx create mode 100644 packages/toggle/src/web/types.ts diff --git a/apps/expo-nativewind/components/ui/toggle.tsx b/apps/expo-nativewind/components/ui/toggle.tsx index 842f16a2..aa08d9d8 100644 --- a/apps/expo-nativewind/components/ui/toggle.tsx +++ b/apps/expo-nativewind/components/ui/toggle.tsx @@ -46,15 +46,11 @@ const toggleTextVariants = cva('text-sm native:text-base text-foreground font-me }); const Toggle = ({ - ref, className, variant, size, ...props -}: React.ComponentPropsWithoutRef & - VariantProps & { - ref?: React.RefObject>; - }) => ( +}: TogglePrimitive.RootProps & VariantProps) => ( ); -Toggle.displayName = TogglePrimitive.Root.displayName; - function ToggleIcon({ className, icon: Icon, diff --git a/apps/nextjs-nativewind/src/components/ui/toggle.tsx b/apps/nextjs-nativewind/src/components/ui/toggle.tsx index 4b759a3d..39eebc3e 100644 --- a/apps/nextjs-nativewind/src/components/ui/toggle.tsx +++ b/apps/nextjs-nativewind/src/components/ui/toggle.tsx @@ -48,15 +48,11 @@ const toggleTextVariants = cva('text-sm native:text-base text-foreground font-me }); const Toggle = ({ - ref, className, variant, size, ...props -}: React.ComponentPropsWithoutRef & - VariantProps & { - ref?: React.RefObject>; - }) => ( +}: TogglePrimitive.RootProps & VariantProps) => ( ); -Toggle.displayName = TogglePrimitive.Root.displayName; - function ToggleIcon({ className, icon: Icon, diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index 5346c726..0e6df765 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -20,6 +20,7 @@ "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", "@rn-primitives/progress": "workspace:*", + "@rn-primitives/toggle": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "next": "15.2.2", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index 9cc9dabf..360b9535 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -23,6 +23,7 @@ import { Button } from '~/components/ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '~/components/ui/avatar'; import { Checkbox } from '~/components/ui/checkbox'; import { Progress } from '~/components/ui/progress'; +import { Toggle } from '~/components/ui/toggle'; export default function Home() { return (
@@ -39,6 +40,7 @@ export default function Home() { +
); @@ -146,3 +148,7 @@ function CheckboxExample() { function ProgressExample() { return ; } + +function ToggleExample() { + return {}} />; +} diff --git a/apps/nextjs-no-rn/src/components/ui/toggle.tsx b/apps/nextjs-no-rn/src/components/ui/toggle.tsx new file mode 100644 index 00000000..aa08d9d8 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/toggle.tsx @@ -0,0 +1,84 @@ +import { cva, type VariantProps } from 'class-variance-authority'; +import type { LucideIcon } from 'lucide-react-native'; +import * as React from 'react'; +import { TextClassContext } from '~/components/ui/text'; +import * as TogglePrimitive from '@rn-primitives/toggle'; +import { cn } from '~/lib/utils'; + +const toggleVariants = cva( + 'web:group web:inline-flex items-center justify-center rounded-md web:ring-offset-background web:transition-colors web:hover:bg-muted active:bg-muted web:focus-visible:outline-none web:focus-visible:ring-2 web:focus-visible:ring-ring web:focus-visible:ring-offset-2', + { + variants: { + variant: { + default: 'bg-transparent', + outline: + 'border border-input bg-transparent web:hover:bg-accent active:bg-accent active:bg-accent', + }, + size: { + default: 'h-10 px-3 native:h-12 native:px-[12]', + sm: 'h-9 px-2.5 native:h-10 native:px-[9]', + lg: 'h-11 px-5 native:h-14 native:px-6', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + } +); + +const toggleTextVariants = cva('text-sm native:text-base text-foreground font-medium', { + variants: { + variant: { + default: '', + outline: 'web:group-hover:text-accent-foreground web:group-active:text-accent-foreground', + }, + size: { + default: '', + sm: '', + lg: '', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, +}); + +const Toggle = ({ + className, + variant, + size, + ...props +}: TogglePrimitive.RootProps & VariantProps) => ( + + + +); + +function ToggleIcon({ + className, + icon: Icon, + ...props +}: React.ComponentPropsWithoutRef & { + icon: LucideIcon; +}) { + const textClass = React.useContext(TextClassContext); + return ; +} + +export { Toggle, ToggleIcon, toggleTextVariants, toggleVariants }; diff --git a/apps/vite-tanstack-router/src/components/ui/toggle.tsx b/apps/vite-tanstack-router/src/components/ui/toggle.tsx new file mode 100644 index 00000000..0baf0bdd --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/toggle.tsx @@ -0,0 +1,84 @@ +import { cva, type VariantProps } from 'class-variance-authority'; +import type { LucideIcon } from 'lucide-react-native'; +import * as React from 'react'; +import { TextClassContext } from '@/components/ui/text'; +import * as TogglePrimitive from '@rn-primitives/toggle'; +import { cn } from '@/lib/utils'; + +const toggleVariants = cva( + 'web:group web:inline-flex items-center justify-center rounded-md web:ring-offset-background web:transition-colors web:hover:bg-muted active:bg-muted web:focus-visible:outline-none web:focus-visible:ring-2 web:focus-visible:ring-ring web:focus-visible:ring-offset-2', + { + variants: { + variant: { + default: 'bg-transparent', + outline: + 'border border-input bg-transparent web:hover:bg-accent active:bg-accent active:bg-accent', + }, + size: { + default: 'h-10 px-3 native:h-12 native:px-[12]', + sm: 'h-9 px-2.5 native:h-10 native:px-[9]', + lg: 'h-11 px-5 native:h-14 native:px-6', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, + } +); + +const toggleTextVariants = cva('text-sm native:text-base text-foreground font-medium', { + variants: { + variant: { + default: '', + outline: 'web:group-hover:text-accent-foreground web:group-active:text-accent-foreground', + }, + size: { + default: '', + sm: '', + lg: '', + }, + }, + defaultVariants: { + variant: 'default', + size: 'default', + }, +}); + +const Toggle = ({ + className, + variant, + size, + ...props +}: TogglePrimitive.RootProps & VariantProps) => ( + + + +); + +function ToggleIcon({ + className, + icon: Icon, + ...props +}: React.ComponentPropsWithoutRef & { + icon: LucideIcon; +}) { + const textClass = React.useContext(TextClassContext); + return ; +} + +export { Toggle, ToggleIcon, toggleTextVariants, toggleVariants }; diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 9fab9402..4cb0a70f 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/toggle", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive toggle", "license": "MIT", "main": "dist/index.js", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/toggle": { - "import": "./dist/toggle.mjs", - "require": "./dist/toggle.js", - "types": "./dist/toggle.d.ts", - "default": "./dist/toggle.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -33,8 +39,10 @@ }, "dependencies": { "@radix-ui/react-toggle": "^1.1.0", + "@rn-primitives/core": "workspace:*", "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/toggle/src/base-types.ts b/packages/toggle/src/base-types.ts new file mode 100644 index 00000000..ae19ced3 --- /dev/null +++ b/packages/toggle/src/base-types.ts @@ -0,0 +1,8 @@ +import type { RootProps as RootPropsWeb } from './web/types'; + +type BaseRootProps = Pick< + RootPropsWeb, + 'defaultPressed' | 'pressed' | 'onPressedChange' | 'disabled' | 'asChild' +>; + +export type { BaseRootProps }; diff --git a/packages/toggle/src/index.ts b/packages/toggle/src/index.ts index 80c9d773..587914b0 100644 --- a/packages/toggle/src/index.ts +++ b/packages/toggle/src/index.ts @@ -1,2 +1,2 @@ -export * from './toggle'; -export * from './types'; +export { Root } from './universal/toggle'; +export type { RootProps, RootRef } from './universal/types'; diff --git a/packages/toggle/src/native/index.ts b/packages/toggle/src/native/index.ts new file mode 100644 index 00000000..691a3247 --- /dev/null +++ b/packages/toggle/src/native/index.ts @@ -0,0 +1,2 @@ +export { Root } from './toggle-native'; +export type { RootProps } from './types'; diff --git a/packages/toggle/src/native/toggle-native.native.tsx b/packages/toggle/src/native/toggle-native.native.tsx new file mode 100644 index 00000000..d664107e --- /dev/null +++ b/packages/toggle/src/native/toggle-native.native.tsx @@ -0,0 +1,43 @@ +import { Pressable } from '@rn-primitives/core/dist/native'; +import * as React from 'react'; +import type { GestureResponderEvent } from 'react-native'; +import type { RootProps } from './types'; + +const Root = ({ + asChild, + pressed, + onPressedChange, + disabled, + onPress: onPressProp, + ...props +}: RootProps) => { + const onPress = (ev: GestureResponderEvent) => { + if (disabled) return; + + if (typeof onPressedChange === 'function') { + const newValue = !pressed; + onPressedChange(newValue); + } + + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }; + + return ( + + ); +}; + +export { Root }; diff --git a/packages/toggle/src/native/toggle-native.tsx b/packages/toggle/src/native/toggle-native.tsx new file mode 100644 index 00000000..1226187b --- /dev/null +++ b/packages/toggle/src/native/toggle-native.tsx @@ -0,0 +1,10 @@ +import type { RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/toggle/native is only supported on native.'); + } + return null; +} + +export { Root }; diff --git a/packages/toggle/src/native/types.ts b/packages/toggle/src/native/types.ts new file mode 100644 index 00000000..307afc10 --- /dev/null +++ b/packages/toggle/src/native/types.ts @@ -0,0 +1,8 @@ +import type { PressableProps } from '@rn-primitives/core/dist/native'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps } from '../base-types'; + +type RootProps = Prettify; +type RootPropsNativeOnly = PressableProps; + +export type { RootProps, RootPropsNativeOnly }; diff --git a/packages/toggle/src/toggle.tsx b/packages/toggle/src/toggle.tsx deleted file mode 100644 index e0cf0964..00000000 --- a/packages/toggle/src/toggle.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { Pressable, type GestureResponderEvent } from 'react-native'; -import type { RootProps, RootRef } from './types'; - -const Root = ( - { - ref, - asChild, - pressed, - onPressedChange, - disabled, - onPress: onPressProp, - ...props - }: RootProps & { - ref: React.RefObject; - } -) => { - function onPress(ev: GestureResponderEvent) { - if (disabled) return; - const newValue = !pressed; - onPressedChange(newValue); - onPressProp?.(ev); - } - - const Component = asChild ? Slot : Pressable; - return ( - - ); -}; - -Root.displayName = 'RootNativeToggle'; - -export { Root }; diff --git a/packages/toggle/src/toggle.web.tsx b/packages/toggle/src/toggle.web.tsx deleted file mode 100644 index 4744edc5..00000000 --- a/packages/toggle/src/toggle.web.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import * as Toggle from '@radix-ui/react-toggle'; -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { Pressable, type GestureResponderEvent } from 'react-native'; -import type { RootProps, RootRef } from './types'; - -const Root = ( - { - ref, - asChild, - pressed, - onPressedChange, - disabled, - onPress: onPressProp, - ...props - }: RootProps & { - ref: React.RefObject; - } -) => { - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - onPressedChange(!pressed); - } - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); -}; - -Root.displayName = 'RootWebToggle'; - -export { Root }; diff --git a/packages/toggle/src/types.ts b/packages/toggle/src/types.ts deleted file mode 100644 index fd809111..00000000 --- a/packages/toggle/src/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PressableRef, SlottablePressableProps } from '@rn-primitives/types'; - -type RootProps = SlottablePressableProps & { - pressed: boolean; - onPressedChange: (pressed: boolean) => void; - disabled?: boolean; -}; - -type RootRef = PressableRef; - -export type { RootProps, RootRef }; diff --git a/packages/toggle/src/universal/index.ts b/packages/toggle/src/universal/index.ts new file mode 100644 index 00000000..ee2579f9 --- /dev/null +++ b/packages/toggle/src/universal/index.ts @@ -0,0 +1,2 @@ +export { Root } from './toggle'; +export type { RootProps } from './types'; diff --git a/packages/toggle/src/universal/toggle.tsx b/packages/toggle/src/universal/toggle.tsx new file mode 100644 index 00000000..4bc45236 --- /dev/null +++ b/packages/toggle/src/universal/toggle.tsx @@ -0,0 +1,8 @@ +import { Root as RootNative } from '../native'; +import type { RootProps } from './types'; + +function Root({ web: _web, native, disabled, ...props }: RootProps) { + return ; +} + +export { Root }; diff --git a/packages/toggle/src/universal/toggle.web.tsx b/packages/toggle/src/universal/toggle.web.tsx new file mode 100644 index 00000000..7d950cb5 --- /dev/null +++ b/packages/toggle/src/universal/toggle.web.tsx @@ -0,0 +1,13 @@ +import { Pressable } from '@rn-primitives/core'; +import { Root as RootWeb } from '../web'; +import type { RootProps } from './types'; + +function Root({ native: _native, web, ...props }: RootProps) { + return ( + + + + ); +} + +export { Root }; diff --git a/packages/toggle/src/universal/types.ts b/packages/toggle/src/universal/types.ts new file mode 100644 index 00000000..8a9f863b --- /dev/null +++ b/packages/toggle/src/universal/types.ts @@ -0,0 +1,17 @@ +import { PressablePropsUniversal } from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps } from '../base-types'; +import type { RootPropsNativeOnly } from '../native/types'; +import type { RootPropsWebOnly } from '../web/types'; + +type RootProps = Prettify< + BaseRootProps & + PressablePropsUniversal & { + native?: RootPropsNativeOnly; + web?: RootPropsWebOnly; + } +>; + +type RootRef = RootProps['ref']; + +export type { RootProps, RootRef }; diff --git a/packages/toggle/src/web/index.ts b/packages/toggle/src/web/index.ts new file mode 100644 index 00000000..630cf72a --- /dev/null +++ b/packages/toggle/src/web/index.ts @@ -0,0 +1,2 @@ +export { Root } from './toggle-web'; +export type { RootProps } from './types'; diff --git a/packages/toggle/src/web/toggle-web.tsx b/packages/toggle/src/web/toggle-web.tsx new file mode 100644 index 00000000..cb18b20a --- /dev/null +++ b/packages/toggle/src/web/toggle-web.tsx @@ -0,0 +1,10 @@ +import type { RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/toggle/web is only supported on web.'); + } + return null; +} + +export { Root }; diff --git a/packages/toggle/src/web/toggle-web.web.tsx b/packages/toggle/src/web/toggle-web.web.tsx new file mode 100644 index 00000000..9c0a1e9f --- /dev/null +++ b/packages/toggle/src/web/toggle-web.web.tsx @@ -0,0 +1,6 @@ +import { withRNPrimitives } from '@rn-primitives/utils'; +import { Toggle } from '@radix-ui/react-toggle'; + +const Root = withRNPrimitives(Toggle, 'pressable'); + +export { Root }; diff --git a/packages/toggle/src/web/types.ts b/packages/toggle/src/web/types.ts new file mode 100644 index 00000000..20ec09c1 --- /dev/null +++ b/packages/toggle/src/web/types.ts @@ -0,0 +1,7 @@ +import { Root } from '@radix-ui/react-toggle'; + +type RootProps = React.ComponentProps; + +type RootPropsWebOnly = React.ComponentProps<'button'>; + +export type { RootProps, RootPropsWebOnly }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f85d7d6c..52c0edcd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -719,6 +719,9 @@ importers: '@rn-primitives/slot': specifier: workspace:* version: link:../../packages/slot + '@rn-primitives/toggle': + specifier: workspace:* + version: link:../../packages/toggle '@rn-primitives/types': specifier: workspace:* version: link:../../packages/types @@ -1783,12 +1786,18 @@ importers: '@radix-ui/react-toggle': specifier: ^1.1.0 version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rn-primitives/core': + specifier: workspace:* + version: link:../core '@rn-primitives/slot': specifier: workspace:* version: link:../slot '@rn-primitives/types': specifier: workspace:* version: link:../types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils react-native-web: specifier: '*' version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) From 1a92e4ada097289efd7be4737dcb4f25c46ebae7 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Tue, 22 Apr 2025 12:16:57 +0200 Subject: [PATCH 078/106] fix ref type for native toggle --- packages/toggle/src/universal/toggle.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/toggle/src/universal/toggle.tsx b/packages/toggle/src/universal/toggle.tsx index 4bc45236..5f866b95 100644 --- a/packages/toggle/src/universal/toggle.tsx +++ b/packages/toggle/src/universal/toggle.tsx @@ -1,8 +1,10 @@ -import { Root as RootNative } from '../native'; +import { Root as RootNative, RootProps as RootPropsNative } from '../native'; import type { RootProps } from './types'; -function Root({ web: _web, native, disabled, ...props }: RootProps) { - return ; +function Root({ web: _web, native, ref, disabled, ...props }: RootProps) { + return ( + + ); } export { Root }; From 97d8b24e67c93db53c7d1133db4ea5c865ddfede Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Tue, 22 Apr 2025 13:24:27 +0200 Subject: [PATCH 079/106] update example apps --- apps/nextjs-nativewind/src/app/page.tsx | 3 +- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 2 +- .../nextjs-no-rn/src/components/ui/toggle.tsx | 46 +++++++++++-------- apps/vite-tanstack-router/package.json | 1 + .../src/components/ui/toggle.tsx | 44 ++++++++++-------- .../vite-tanstack-router/src/routes/index.tsx | 6 +++ packages/toggle/tsup.config.ts | 23 +++++++++- pnpm-lock.yaml | 15 ++++++ 9 files changed, 100 insertions(+), 41 deletions(-) diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 1a5ff962..00d4099a 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -110,6 +110,7 @@ export default function Home() { + {/* @@ -119,7 +120,6 @@ export default function Home() { - @@ -127,7 +127,6 @@ export default function Home() { - */} diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index 0e6df765..636e287e 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -23,6 +23,7 @@ "@rn-primitives/toggle": "workspace:*", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "lucide-react": "^0.503.0", "next": "15.2.2", "react": "19.0.0", "react-dom": "19.0.0", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index 360b9535..1a9ef978 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -150,5 +150,5 @@ function ProgressExample() { } function ToggleExample() { - return {}} />; + return ; } diff --git a/apps/nextjs-no-rn/src/components/ui/toggle.tsx b/apps/nextjs-no-rn/src/components/ui/toggle.tsx index aa08d9d8..1a159104 100644 --- a/apps/nextjs-no-rn/src/components/ui/toggle.tsx +++ b/apps/nextjs-no-rn/src/components/ui/toggle.tsx @@ -1,9 +1,12 @@ +'use client'; + import { cva, type VariantProps } from 'class-variance-authority'; -import type { LucideIcon } from 'lucide-react-native'; +import type { LucideIcon } from 'lucide-react'; import * as React from 'react'; import { TextClassContext } from '~/components/ui/text'; import * as TogglePrimitive from '@rn-primitives/toggle'; import { cn } from '~/lib/utils'; +import { Bold } from 'lucide-react'; const toggleVariants = cva( 'web:group web:inline-flex items-center justify-center rounded-md web:ring-offset-background web:transition-colors web:hover:bg-muted active:bg-muted web:focus-visible:outline-none web:focus-visible:ring-2 web:focus-visible:ring-ring web:focus-visible:ring-offset-2', @@ -50,25 +53,32 @@ const Toggle = ({ variant, size, ...props -}: TogglePrimitive.RootProps & VariantProps) => ( - - ) => { + const [pressed, setPressed] = React.useState(props.pressed); + return ( + - -); + > + + + + + ); +}; function ToggleIcon({ className, diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index 09f2b395..291c7b85 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -18,6 +18,7 @@ "@rn-primitives/avatar": "workspace:*", "@rn-primitives/checkbox": "workspace:*", "@rn-primitives/progress": "workspace:*", + "@rn-primitives/toggle": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", "@tanstack/react-router": "^1.114.3", diff --git a/apps/vite-tanstack-router/src/components/ui/toggle.tsx b/apps/vite-tanstack-router/src/components/ui/toggle.tsx index 0baf0bdd..2a4a1cb7 100644 --- a/apps/vite-tanstack-router/src/components/ui/toggle.tsx +++ b/apps/vite-tanstack-router/src/components/ui/toggle.tsx @@ -1,5 +1,6 @@ import { cva, type VariantProps } from 'class-variance-authority'; -import type { LucideIcon } from 'lucide-react-native'; +import type { LucideIcon } from 'lucide-react'; +import { Bold } from 'lucide-react'; import * as React from 'react'; import { TextClassContext } from '@/components/ui/text'; import * as TogglePrimitive from '@rn-primitives/toggle'; @@ -50,25 +51,32 @@ const Toggle = ({ variant, size, ...props -}: TogglePrimitive.RootProps & VariantProps) => ( - - ) => { + const [pressed, setPressed] = React.useState(props.pressed); + return ( + - -); + > + + + + + ); +}; function ToggleIcon({ className, diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx index 5408238d..ce45e4f2 100644 --- a/apps/vite-tanstack-router/src/routes/index.tsx +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -19,6 +19,7 @@ import { import { Checkbox } from '@/components/ui/checkbox'; import { Progress } from '@/components/ui/progress'; import { Text } from '@/components/ui/text'; +import { Toggle } from '@/components/ui/toggle'; import { View } from '@rn-primitives/core'; import { createFileRoute } from '@tanstack/react-router'; @@ -45,6 +46,7 @@ export function App() { + ); @@ -149,3 +151,7 @@ function CheckboxExample() { function ProgressExample() { return ; } + +function ToggleExample() { + return ; +} diff --git a/packages/toggle/tsup.config.ts b/packages/toggle/tsup.config.ts index eeb30441..c7a85ff0 100644 --- a/packages/toggle/tsup.config.ts +++ b/packages/toggle/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/toggle.tsx', 'src/toggle.web.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/toggle.tsx', + 'src/universal/toggle.web.tsx', + 'src/native/index.ts', + 'src/native/toggle-native.tsx', + 'src/native/toggle-native.native.tsx', + 'src/web/index.ts', + 'src/web/toggle-web.tsx', + 'src/web/toggle-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './toggle'], + external: [ + 'react', + './universal', + './toggle', + '../native', + './toggle-native', + '../web', + './toggle-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 52c0edcd..c52c4b6e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -734,6 +734,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + lucide-react: + specifier: ^0.503.0 + version: 0.503.0(react@19.0.0) next: specifier: 15.2.2 version: 15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -795,6 +798,9 @@ importers: '@rn-primitives/slot': specifier: workspace:* version: link:../../packages/slot + '@rn-primitives/toggle': + specifier: workspace:* + version: link:../../packages/toggle '@rn-primitives/types': specifier: workspace:* version: link:../../packages/types @@ -6129,6 +6135,11 @@ packages: peerDependencies: react: 19.0.0 + lucide-react@0.503.0: + resolution: {integrity: sha512-HGGkdlPWQ0vTF8jJ5TdIqhQXZi6uh3LnNgfZ8MHiuxFfX3RZeA79r2MW2tHAZKlAVfoNE8esm3p+O6VkIvpj6w==} + peerDependencies: + react: 19.0.0 + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -13420,6 +13431,10 @@ snapshots: dependencies: react: 19.0.0 + lucide-react@0.503.0(react@19.0.0): + dependencies: + react: 19.0.0 + lz-string@1.5.0: {} magic-string@0.30.17: From 34f7c7237093a4afa930c3673c2d9abedb249efd Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Tue, 22 Apr 2025 15:57:39 +0200 Subject: [PATCH 080/106] Update types.ts --- packages/toggle/src/web/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/toggle/src/web/types.ts b/packages/toggle/src/web/types.ts index 20ec09c1..c7688c93 100644 --- a/packages/toggle/src/web/types.ts +++ b/packages/toggle/src/web/types.ts @@ -1,6 +1,6 @@ -import { Root } from '@radix-ui/react-toggle'; +import type { ToggleProps } from '@radix-ui/react-toggle'; -type RootProps = React.ComponentProps; +type RootProps = ToggleProps; type RootPropsWebOnly = React.ComponentProps<'button'>; From 375d8abc952ae7e247e95581b4dd45c7906e735e Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Tue, 22 Apr 2025 23:42:32 +0200 Subject: [PATCH 081/106] Update universal toggle web component --- packages/toggle/src/universal/toggle.web.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/toggle/src/universal/toggle.web.tsx b/packages/toggle/src/universal/toggle.web.tsx index 7d950cb5..c2e12814 100644 --- a/packages/toggle/src/universal/toggle.web.tsx +++ b/packages/toggle/src/universal/toggle.web.tsx @@ -2,12 +2,15 @@ import { Pressable } from '@rn-primitives/core'; import { Root as RootWeb } from '../web'; import type { RootProps } from './types'; -function Root({ native: _native, web, ...props }: RootProps) { - return ( - - - - ); +function Root({ native: _native, web, style, ...props }: RootProps) { + if (style) { + return ( + + + + ); + } + return ; } export { Root }; From 51094cac0e7f8c4c55d167a67d4e5007247d1db1 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Wed, 23 Apr 2025 11:51:36 -0400 Subject: [PATCH 082/106] fix: various little things -- update radix-ui deps + organize imports + use mergeProps fn + fix types + fix core exports + add usecontrollablestate to toggle --- .../app/(components)/progress.tsx | 2 +- .../app/(components)/toggle.tsx | 2 +- .../nextjs-no-rn/src/components/ui/toggle.tsx | 9 +- apps/vite-tanstack-router/package.json | 2 +- .../accordion/src/universal/accordion.web.tsx | 5 +- .../src/universal/alert-dialog.web.tsx | 9 +- .../checkbox/src/universal/checkbox.web.tsx | 5 +- packages/core/package.json | 18 +++ packages/progress/package.json | 2 +- packages/progress/src/base-types.ts | 8 +- packages/progress/src/native/types.ts | 4 +- packages/progress/src/universal/progress.tsx | 2 +- .../progress/src/universal/progress.web.tsx | 4 +- packages/progress/src/universal/types.ts | 10 +- packages/progress/src/web/index.ts | 4 +- packages/progress/src/web/progress-web.tsx | 4 +- .../progress/src/web/progress-web.web.tsx | 2 +- packages/progress/src/web/types.ts | 4 +- packages/toggle/package.json | 9 +- packages/toggle/src/base-types.ts | 2 +- .../src/native/toggle-native.native.tsx | 38 ++++--- packages/toggle/src/universal/toggle.web.tsx | 30 +++-- packages/toggle/src/web/toggle-web.tsx | 6 +- pnpm-lock.yaml | 105 +++++++++++++++--- 24 files changed, 202 insertions(+), 84 deletions(-) diff --git a/apps/expo-nativewind/app/(components)/progress.tsx b/apps/expo-nativewind/app/(components)/progress.tsx index ae2766a5..77ddf2d8 100644 --- a/apps/expo-nativewind/app/(components)/progress.tsx +++ b/apps/expo-nativewind/app/(components)/progress.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { View } from 'react-native'; +import { View } from '@rn-primitives/core'; import { Button } from '~/components/ui/button'; import { Progress } from '~/components/ui/progress'; import { Text } from '~/components/ui/text'; diff --git a/apps/expo-nativewind/app/(components)/toggle.tsx b/apps/expo-nativewind/app/(components)/toggle.tsx index 47c75e9c..8c439724 100644 --- a/apps/expo-nativewind/app/(components)/toggle.tsx +++ b/apps/expo-nativewind/app/(components)/toggle.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { View } from 'react-native'; +import { View } from '@rn-primitives/core'; import { Toggle, ToggleIcon } from '~/components/ui/toggle'; import { Bold } from '~/lib/icons/Bold'; diff --git a/apps/nextjs-no-rn/src/components/ui/toggle.tsx b/apps/nextjs-no-rn/src/components/ui/toggle.tsx index 1a159104..2dc96612 100644 --- a/apps/nextjs-no-rn/src/components/ui/toggle.tsx +++ b/apps/nextjs-no-rn/src/components/ui/toggle.tsx @@ -54,12 +54,13 @@ const Toggle = ({ size, ...props }: TogglePrimitive.RootProps & VariantProps) => { - const [pressed, setPressed] = React.useState(props.pressed); + const [pressed, setPressed] = React.useState(!!props.pressed); + return ( @@ -67,12 +68,12 @@ const Toggle = ({ className={cn( toggleVariants({ variant, size }), props.disabled && 'web:pointer-events-none opacity-50', - props.pressed && 'bg-accent', + pressed && 'bg-accent', className )} - {...props} pressed={pressed} onPressedChange={setPressed} + {...props} >
diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index 291c7b85..61681f3c 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -26,7 +26,7 @@ "@tanstack/router-plugin": "^1.114.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "lucide-react": "^0.476.0", + "lucide-react": "^0.503.0", "react": "19.0.0", "react-dom": "19.0.0", "tailwind-merge": "^3.0.2", diff --git a/packages/accordion/src/universal/accordion.web.tsx b/packages/accordion/src/universal/accordion.web.tsx index 2a082e61..18c4112b 100644 --- a/packages/accordion/src/universal/accordion.web.tsx +++ b/packages/accordion/src/universal/accordion.web.tsx @@ -1,4 +1,5 @@ import { Pressable, View } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; import * as React from 'react'; import { Content as ContentWeb, @@ -55,10 +56,12 @@ function Item({ native: _native, style, web, ...props }: ItemProps) { return ; } +const DEFAULT_PRESSABLE_WEB = { as: 'button' } as const; + function Trigger({ native: _native, web, ...props }: TriggerProps) { return ( - + ); } diff --git a/packages/alert-dialog/src/universal/alert-dialog.web.tsx b/packages/alert-dialog/src/universal/alert-dialog.web.tsx index edcaa9fc..d8048188 100644 --- a/packages/alert-dialog/src/universal/alert-dialog.web.tsx +++ b/packages/alert-dialog/src/universal/alert-dialog.web.tsx @@ -1,4 +1,5 @@ import { Pressable, Text, View } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; import * as React from 'react'; import { Action as ActionWeb, @@ -77,10 +78,12 @@ function Title({ web, native: _native, style, ...props }: TitleProps) { return ; } +const DEFAULT_PRESSABLE_WEB = { as: 'button' } as const; + function Trigger({ native: _native, web, ...props }: TriggerProps) { return ( - + ); } @@ -88,7 +91,7 @@ function Trigger({ native: _native, web, ...props }: TriggerProps) { function Action({ native: _native, web, ...props }: ActionProps) { return ( - + ); } @@ -96,7 +99,7 @@ function Action({ native: _native, web, ...props }: ActionProps) { function Cancel({ native: _native, web, ...props }: CancelProps) { return ( - + ); } diff --git a/packages/checkbox/src/universal/checkbox.web.tsx b/packages/checkbox/src/universal/checkbox.web.tsx index 52c5715b..04d86867 100644 --- a/packages/checkbox/src/universal/checkbox.web.tsx +++ b/packages/checkbox/src/universal/checkbox.web.tsx @@ -1,11 +1,14 @@ import { Pressable, View } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; import { Indicator as IndicatorWeb, Root as RootWeb } from '../web'; import type { IndicatorProps, RootProps } from './types'; +const DEFAULT_PRESSABLE_WEB = { as: 'button' } as const; + function Root({ web, native: _native, style, ...props }: RootProps) { return ( - + ); } diff --git a/packages/core/package.json b/packages/core/package.json index f886d1d1..69b2e02a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -19,17 +19,35 @@ "types": "./dist/native/index.d.ts", "default": "./dist/native/index.js" }, + "./dist/native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, "./native-only-reanimated": { "import": "./dist/native/reanimated/index.mjs", "require": "./dist/native/reanimated/index.js", "types": "./dist/native/reanimated/index.d.ts", "default": "./dist/native/reanimated/index.js" }, + "./dist/native/reanimated": { + "import": "./dist/native/reanimated/index.mjs", + "require": "./dist/native/reanimated/index.js", + "types": "./dist/native/reanimated/index.d.ts", + "default": "./dist/native/reanimated/index.js" + }, "./web": { "import": "./dist/web/index.mjs", "require": "./dist/web/index.js", "types": "./dist/web/index.d.ts", "default": "./dist/web/index.js" + }, + "./dist/web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ diff --git a/packages/progress/package.json b/packages/progress/package.json index d734124e..828fe3ba 100644 --- a/packages/progress/package.json +++ b/packages/progress/package.json @@ -38,7 +38,7 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-progress": "^1.1.0", + "@radix-ui/react-progress": "^1.1.4", "@rn-primitives/core": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*", diff --git a/packages/progress/src/base-types.ts b/packages/progress/src/base-types.ts index 25717011..d3df935f 100644 --- a/packages/progress/src/base-types.ts +++ b/packages/progress/src/base-types.ts @@ -1,7 +1,7 @@ -import type { IndicatorProps as IndicatorPropsWeb, RootProps as RootPropsWeb } from './web/types'; +import type { RootProps as RootPropsWeb } from './web/types'; -type BaseRootProps = Pick; +type BaseRootProps = Pick; -type BaseIndicatorProps = Pick; +type BaseIndicatorProps = {}; -export type { BaseRootProps, BaseIndicatorProps }; +export type { BaseIndicatorProps, BaseRootProps }; diff --git a/packages/progress/src/native/types.ts b/packages/progress/src/native/types.ts index 688298ce..6741a64d 100644 --- a/packages/progress/src/native/types.ts +++ b/packages/progress/src/native/types.ts @@ -1,6 +1,6 @@ import type { ViewProps } from '@rn-primitives/core/dist/native'; import type { Prettify } from '@rn-primitives/types'; -import type { BaseRootProps, BaseIndicatorProps } from '../base-types'; +import type { BaseIndicatorProps, BaseRootProps } from '../base-types'; type RootProps = Prettify; type RootPropsNativeOnly = ViewProps; @@ -8,4 +8,4 @@ type RootPropsNativeOnly = ViewProps; type IndicatorProps = Prettify; type IndicatorPropsNativeOnly = ViewProps; -export type { RootProps, RootPropsNativeOnly, IndicatorProps, IndicatorPropsNativeOnly }; +export type { IndicatorProps, IndicatorPropsNativeOnly, RootProps, RootPropsNativeOnly }; diff --git a/packages/progress/src/universal/progress.tsx b/packages/progress/src/universal/progress.tsx index 3fa37f88..a49aa44f 100644 --- a/packages/progress/src/universal/progress.tsx +++ b/packages/progress/src/universal/progress.tsx @@ -1,5 +1,5 @@ import { Indicator as IndicatorNative, Root as RootNative } from '../native'; -import type { RootProps, IndicatorProps } from './types'; +import type { IndicatorProps, RootProps } from './types'; function Root({ web: _web, native, ...props }: RootProps) { return ; diff --git a/packages/progress/src/universal/progress.web.tsx b/packages/progress/src/universal/progress.web.tsx index a296a79e..47410b12 100644 --- a/packages/progress/src/universal/progress.web.tsx +++ b/packages/progress/src/universal/progress.web.tsx @@ -6,11 +6,11 @@ function Root({ native: _native, web, style, ...props }: RootProps) { if (style) { return ( - + ); } - return ; + return ; } function Indicator({ native: _native, web, style, ...props }: IndicatorProps) { diff --git a/packages/progress/src/universal/types.ts b/packages/progress/src/universal/types.ts index d7d41b2d..249460c5 100644 --- a/packages/progress/src/universal/types.ts +++ b/packages/progress/src/universal/types.ts @@ -1,8 +1,8 @@ -import { ViewPropsUniversal } from '@rn-primitives/core'; +import type { ViewPropsUniversal } from '@rn-primitives/core'; import type { Prettify } from '@rn-primitives/types'; -import type { BaseRootProps, BaseIndicatorProps } from '../base-types'; -import type { RootPropsNativeOnly, IndicatorPropsNativeOnly } from '../native/types'; -import type { RootPropsWebOnly, IndicatorPropsWebOnly } from '../web/types'; +import type { BaseIndicatorProps, BaseRootProps } from '../base-types'; +import type { IndicatorPropsNativeOnly, RootPropsNativeOnly } from '../native/types'; +import type { IndicatorPropsWebOnly, RootPropsWebOnly } from '../web/types'; type BaseWithPlatformProps = Prettify< B & { @@ -21,4 +21,4 @@ type IndicatorProps = BaseWithPlatformProps< > & ViewPropsUniversal; -export type { RootProps, IndicatorProps }; +export type { IndicatorProps, RootProps }; diff --git a/packages/progress/src/web/index.ts b/packages/progress/src/web/index.ts index 1cf42f1c..7aff9060 100644 --- a/packages/progress/src/web/index.ts +++ b/packages/progress/src/web/index.ts @@ -1,3 +1,3 @@ -export { Root, Indicator } from './progress-web'; +export { Indicator, Root } from './progress-web'; -export type { RootProps, IndicatorProps } from './types'; +export type { IndicatorProps, RootProps } from './types'; diff --git a/packages/progress/src/web/progress-web.tsx b/packages/progress/src/web/progress-web.tsx index 4e229ff5..88e2a0b4 100644 --- a/packages/progress/src/web/progress-web.tsx +++ b/packages/progress/src/web/progress-web.tsx @@ -1,4 +1,4 @@ -import type { RootProps, IndicatorProps } from './types'; +import type { IndicatorProps, RootProps } from './types'; function Root(props: RootProps) { if (process.env.NODE_ENV === 'development') { @@ -14,4 +14,4 @@ function Indicator(props: IndicatorProps) { return null; } -export { Root, Indicator }; +export { Indicator, Root }; diff --git a/packages/progress/src/web/progress-web.web.tsx b/packages/progress/src/web/progress-web.web.tsx index d688a616..b6a34dd4 100644 --- a/packages/progress/src/web/progress-web.web.tsx +++ b/packages/progress/src/web/progress-web.web.tsx @@ -4,4 +4,4 @@ import { withRNPrimitives } from '@rn-primitives/utils'; const Root = withRNPrimitives(Progress, 'view'); const Indicator = withRNPrimitives(ProgressIndicator, 'view'); -export { Root, Indicator }; +export { Indicator, Root }; diff --git a/packages/progress/src/web/types.ts b/packages/progress/src/web/types.ts index 1eba5f2e..61cf8dd5 100644 --- a/packages/progress/src/web/types.ts +++ b/packages/progress/src/web/types.ts @@ -1,4 +1,4 @@ -import type { Root, Indicator } from '@radix-ui/react-progress'; +import type { Indicator, Root } from '@radix-ui/react-progress'; type RootProps = React.ComponentProps; @@ -8,4 +8,4 @@ type IndicatorProps = React.ComponentProps; type IndicatorPropsWebOnly = React.ComponentProps<'div'>; -export type { RootProps, RootPropsWebOnly, IndicatorProps, IndicatorPropsWebOnly }; +export type { IndicatorProps, IndicatorPropsWebOnly, RootProps, RootPropsWebOnly }; diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 4cb0a70f..73a6e39e 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -38,8 +38,9 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-toggle": "^1.1.0", + "@radix-ui/react-toggle": "^1.1.6", "@rn-primitives/core": "workspace:*", + "@rn-primitives/hooks": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*" @@ -53,15 +54,11 @@ }, "peerDependencies": { "react": ">=19.0.0", - "react-native": "*", - "react-native-web": "*" + "react-native": "*" }, "peerDependenciesMeta": { "react-native": { "optional": true - }, - "react-native-web": { - "optional": true } } } diff --git a/packages/toggle/src/base-types.ts b/packages/toggle/src/base-types.ts index ae19ced3..2a6b6ec2 100644 --- a/packages/toggle/src/base-types.ts +++ b/packages/toggle/src/base-types.ts @@ -2,7 +2,7 @@ import type { RootProps as RootPropsWeb } from './web/types'; type BaseRootProps = Pick< RootPropsWeb, - 'defaultPressed' | 'pressed' | 'onPressedChange' | 'disabled' | 'asChild' + 'defaultPressed' | 'pressed' | 'onPressedChange' | 'disabled' >; export type { BaseRootProps }; diff --git a/packages/toggle/src/native/toggle-native.native.tsx b/packages/toggle/src/native/toggle-native.native.tsx index d664107e..46862ff2 100644 --- a/packages/toggle/src/native/toggle-native.native.tsx +++ b/packages/toggle/src/native/toggle-native.native.tsx @@ -1,39 +1,41 @@ import { Pressable } from '@rn-primitives/core/dist/native'; +import { useControllableState } from '@rn-primitives/hooks'; import * as React from 'react'; import type { GestureResponderEvent } from 'react-native'; import type { RootProps } from './types'; const Root = ({ asChild, - pressed, - onPressedChange, + pressed: pressedProp, + onPressedChange: onPressedChangeProp, disabled, onPress: onPressProp, + defaultPressed, ...props }: RootProps) => { - const onPress = (ev: GestureResponderEvent) => { - if (disabled) return; + const [pressed = false, onPressedChange] = useControllableState({ + prop: pressedProp, + defaultProp: defaultPressed, + onChange: onPressedChangeProp, + }); - if (typeof onPressedChange === 'function') { - const newValue = !pressed; - onPressedChange(newValue); - } + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + onPressedChange((prev) => !prev); - if (typeof onPressProp === 'function') { - onPressProp(ev); - } - }; + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [onPressedChange, onPressProp] + ); return ( diff --git a/packages/toggle/src/universal/toggle.web.tsx b/packages/toggle/src/universal/toggle.web.tsx index c2e12814..893761ea 100644 --- a/packages/toggle/src/universal/toggle.web.tsx +++ b/packages/toggle/src/universal/toggle.web.tsx @@ -1,16 +1,28 @@ import { Pressable } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; import { Root as RootWeb } from '../web'; import type { RootProps } from './types'; -function Root({ native: _native, web, style, ...props }: RootProps) { - if (style) { - return ( - - - - ); - } - return ; +const DEFAULT_PRESSABLE_WEB = { as: 'button' } as const; + +function Root({ + native: _native, + web, + onPressedChange, + defaultPressed, + pressed, + ...props +}: RootProps) { + return ( + + + + ); } export { Root }; diff --git a/packages/toggle/src/web/toggle-web.tsx b/packages/toggle/src/web/toggle-web.tsx index cb18b20a..aff3e3b6 100644 --- a/packages/toggle/src/web/toggle-web.tsx +++ b/packages/toggle/src/web/toggle-web.tsx @@ -1,10 +1,10 @@ -import type { RootProps } from './types'; +import type { Toggle } from '@radix-ui/react-toggle'; -function Root(props: RootProps) { +const Root = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Root` from @rn-primitives/toggle/web is only supported on web.'); } return null; -} +}) as unknown as typeof Toggle; export { Root }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c52c4b6e..15250af4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -823,8 +823,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 lucide-react: - specifier: ^0.476.0 - version: 0.476.0(react@19.0.0) + specifier: ^0.503.0 + version: 0.503.0(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1480,8 +1480,8 @@ importers: packages/progress: dependencies: '@radix-ui/react-progress': - specifier: ^1.1.0 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^1.1.4 + version: 1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -1790,11 +1790,14 @@ importers: packages/toggle: dependencies: '@radix-ui/react-toggle': - specifier: ^1.1.0 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core + '@rn-primitives/hooks': + specifier: workspace:* + version: link:../hooks '@rn-primitives/slot': specifier: workspace:* version: link:../slot @@ -1804,9 +1807,6 @@ importers: '@rn-primitives/utils': specifier: workspace:* version: link:../utils - react-native-web: - specifier: '*' - version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) devDependencies: '@tsconfig/react-native': specifier: ^1.0.1 @@ -3507,8 +3507,21 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-progress@1.1.3': - resolution: {integrity: sha512-F56aZPGTPb4qJQ/vDjnAq63oTu/DRoIG/Asb5XKOWj8rpefNLtUllR969j5QDN2sRrTk9VXIqQDRj5VvAuquaw==} + '@radix-ui/react-primitive@2.1.0': + resolution: {integrity: sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.4': + resolution: {integrity: sha512-8rl9w7lJdcVPor47Dhws9mUHRHLE+8JEgyJRdNWCpGPa6HIlr3eh+Yn9gyx1CnCLbw5naHsI2gaO9dBWO50vzw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -3646,6 +3659,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-toggle@1.1.6': + resolution: {integrity: sha512-3SeJxKeO3TO1zVw1Nl++Cp0krYk6zHDHMCUXXVkosIzl6Nxcvb07EerQpyD2wXQSJ5RZajrYAmPaydU8Hk1IyQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-toolbar@1.1.3': resolution: {integrity: sha512-yTZ8ooxlBqljSiruO6y6azKXSXYBpnzd23yohjyFesun4nm8yh+D91J1yCqhtnRtSjRWuAmr9vFgGxmGwLjTfg==} peerDependencies: @@ -3690,6 +3716,24 @@ packages: '@types/react': optional: true + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-use-escape-keydown@1.1.1': resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} peerDependencies: @@ -10419,10 +10463,19 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) - '@radix-ui/react-progress@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-primitive@2.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + + '@radix-ui/react-progress@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) - '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: @@ -10585,6 +10638,17 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-toggle@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-primitive': 2.1.0(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-toolbar@1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.2 @@ -10633,6 +10697,21 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.0.10)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.0.10)(react@19.0.0)': dependencies: '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.10)(react@19.0.0) From 7e1e8c88cbd8fe01e9daf695adf3cfdc9f56ed72 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Thu, 24 Apr 2025 15:35:50 +0200 Subject: [PATCH 083/106] feat(toggle-group): implement toggle-group v2 --- packages/toggle-group/package.json | 19 ++- packages/toggle-group/src/base-types.ts | 14 ++ packages/toggle-group/src/index.ts | 4 +- packages/toggle-group/src/native/index.ts | 2 + .../src/native/toggle-group-native.native.tsx | 64 +++++++++ .../src/native/toggle-group-native.tsx | 33 +++++ packages/toggle-group/src/native/types.ts | 11 ++ packages/toggle-group/src/toggle-group.tsx | 124 ------------------ .../toggle-group/src/toggle-group.web.tsx | 124 ------------------ packages/toggle-group/src/types.ts | 47 ------- packages/toggle-group/src/universal/index.ts | 2 + .../src/universal/toggle-group.tsx | 13 ++ .../src/universal/toggle-group.web.tsx | 24 ++++ packages/toggle-group/src/universal/types.ts | 27 ++++ packages/toggle-group/src/utils/contexts.ts | 33 +++++ .../toggle-group/src/utils/get-is-selected.ts | 9 ++ .../src/utils/get-new-multiple-value.ts | 15 +++ .../src/utils/get-new-single-value.ts | 6 + packages/toggle-group/src/web/index.ts | 2 + .../toggle-group/src/web/toggle-group-web.tsx | 32 +++++ .../src/web/toggle-group-web.web.tsx | 76 +++++++++++ packages/toggle-group/src/web/types.ts | 16 +++ packages/toggle-group/tsup.config.ts | 23 +++- packages/toggle/src/base-types.ts | 4 +- packages/toggle/src/universal/types.ts | 4 +- pnpm-lock.yaml | 3 + 26 files changed, 422 insertions(+), 309 deletions(-) create mode 100644 packages/toggle-group/src/base-types.ts create mode 100644 packages/toggle-group/src/native/index.ts create mode 100644 packages/toggle-group/src/native/toggle-group-native.native.tsx create mode 100644 packages/toggle-group/src/native/toggle-group-native.tsx create mode 100644 packages/toggle-group/src/native/types.ts delete mode 100644 packages/toggle-group/src/toggle-group.tsx delete mode 100644 packages/toggle-group/src/toggle-group.web.tsx delete mode 100644 packages/toggle-group/src/types.ts create mode 100644 packages/toggle-group/src/universal/index.ts create mode 100644 packages/toggle-group/src/universal/toggle-group.tsx create mode 100644 packages/toggle-group/src/universal/toggle-group.web.tsx create mode 100644 packages/toggle-group/src/universal/types.ts create mode 100644 packages/toggle-group/src/utils/contexts.ts create mode 100644 packages/toggle-group/src/utils/get-is-selected.ts create mode 100644 packages/toggle-group/src/utils/get-new-multiple-value.ts create mode 100644 packages/toggle-group/src/utils/get-new-single-value.ts create mode 100644 packages/toggle-group/src/web/index.ts create mode 100644 packages/toggle-group/src/web/toggle-group-web.tsx create mode 100644 packages/toggle-group/src/web/toggle-group-web.web.tsx create mode 100644 packages/toggle-group/src/web/types.ts diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index ce48e08f..c237eaf3 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/toggle-group", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive toggle group", "license": "MIT", "main": "dist/index.js", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/toggle-group": { - "import": "./dist/toggle-group.mjs", - "require": "./dist/toggle-group.js", - "types": "./dist/toggle-group.d.ts", - "default": "./dist/toggle-group.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -33,6 +39,7 @@ }, "dependencies": { "@radix-ui/react-toggle-group": "^1.1.0", + "@rn-primitives/core": "workspace:*", "@rn-primitives/utils": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*" diff --git a/packages/toggle-group/src/base-types.ts b/packages/toggle-group/src/base-types.ts new file mode 100644 index 00000000..320e0d2a --- /dev/null +++ b/packages/toggle-group/src/base-types.ts @@ -0,0 +1,14 @@ +import type { RootProps as RootPropsWeb, ItemProps as ItemPropsWeb } from './web/types'; + +type BaseRootProps = Pick< + RootPropsWeb, + 'type' | 'value' | 'onValueChange' | 'disabled' | 'asChild' +>; + +type BaseItemProps = Pick; + +type BaseRootContext = Pick | null; + +type BaseItemContext = Pick | null; + +export type { BaseRootProps, BaseItemProps, BaseRootContext, BaseItemContext }; diff --git a/packages/toggle-group/src/index.ts b/packages/toggle-group/src/index.ts index 82692cfa..b0de7533 100644 --- a/packages/toggle-group/src/index.ts +++ b/packages/toggle-group/src/index.ts @@ -1,2 +1,2 @@ -export * from './toggle-group'; -export * from './types'; +export { Root } from './universal/toggle-group'; +export type { RootProps, RootRef } from './universal/types'; diff --git a/packages/toggle-group/src/native/index.ts b/packages/toggle-group/src/native/index.ts new file mode 100644 index 00000000..504f5ec2 --- /dev/null +++ b/packages/toggle-group/src/native/index.ts @@ -0,0 +1,2 @@ +export { Root, Item, useItemContext, useRootContext } from './toggle-group-native'; +export type { RootProps, ItemProps } from './types'; diff --git a/packages/toggle-group/src/native/toggle-group-native.native.tsx b/packages/toggle-group/src/native/toggle-group-native.native.tsx new file mode 100644 index 00000000..ee9dd674 --- /dev/null +++ b/packages/toggle-group/src/native/toggle-group-native.native.tsx @@ -0,0 +1,64 @@ +import * as React from 'react'; +import { View, Pressable } from '@rn-primitives/core/dist/native'; +import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; +import type { ItemProps, RootProps } from './types'; +import type { GestureResponderEvent } from 'react-native'; +import { getIsSelected } from '../utils/get-is-selected'; +import { getNewMultipleValue } from '../utils/get-new-multiple-value'; +import { getNewSingleValue } from '../utils/get-new-single-value'; + +const Root = ({ asChild, type, value, onValueChange, disabled = false, ...props }: RootProps) => { + return ( + + + + ); +}; + +const Item = ({ + asChild, + value: itemValue, + disabled: disabledProp = false, + onPress: onPressProp, + ...props +}: ItemProps) => { + const id = React.useId(); + const { type, disabled, value, onValueChange } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + if (disabled || disabledProp) return; + if (type === 'single') { + onValueChange(getNewSingleValue(value, itemValue)); + } + if (type === 'multiple') { + onValueChange(getNewMultipleValue(value, itemValue)); + } + onPressProp?.(ev); + } + + const isChecked = type === 'single' ? getIsSelected(value, itemValue) : undefined; + const isSelected = type === 'multiple' ? getIsSelected(value, itemValue) : undefined; + + return ( + + + + ); +}; + +export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/native/toggle-group-native.tsx b/packages/toggle-group/src/native/toggle-group-native.tsx new file mode 100644 index 00000000..09ea6bcc --- /dev/null +++ b/packages/toggle-group/src/native/toggle-group-native.tsx @@ -0,0 +1,33 @@ +import { ItemContextReturnType } from '../utils/contexts'; +import { RootContextReturnType } from '../utils/contexts'; +import type { ItemProps, RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/toggle-group/native is only supported on native.'); + } + return null; +} + +function Item(props: ItemProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Item` from @rn-primitives/toggle-group/native is only supported on native.'); + } + return null; +} + +const useRootContext = () => { + throw new Error( + 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/accordion/native`' + ); + return {} as RootContextReturnType; +}; + +const useItemContext = () => { + throw new Error( + 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/native`' + ); + return {} as ItemContextReturnType; +}; + +export { Root, Item, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/native/types.ts b/packages/toggle-group/src/native/types.ts new file mode 100644 index 00000000..961b3aa5 --- /dev/null +++ b/packages/toggle-group/src/native/types.ts @@ -0,0 +1,11 @@ +import type { PressableProps, ViewProps } from '@rn-primitives/core/dist/native'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseItemProps, BaseRootProps } from '../base-types'; + +type ItemProps = Prettify; +type ItemPropsNativeOnly = PressableProps; + +type RootProps = Prettify; +type RootPropsNativeOnly = ViewProps; + +export type { ItemProps, ItemPropsNativeOnly, RootProps, RootPropsNativeOnly }; diff --git a/packages/toggle-group/src/toggle-group.tsx b/packages/toggle-group/src/toggle-group.tsx deleted file mode 100644 index 02d4947f..00000000 --- a/packages/toggle-group/src/toggle-group.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import { ToggleGroupUtils } from '@rn-primitives/utils'; -import * as React from 'react'; -import { Pressable, View, type GestureResponderEvent } from 'react-native'; -import type { ItemProps, ItemRef, RootProps, RootRef } from './types'; - -const ToggleGroupContext = React.createContext(null); - -const Root = ( - { - ref, - asChild, - type, - value, - onValueChange, - disabled = false, - rovingFocus: _rovingFocus, - orientation: _orientation, - dir: _dir, - loop: _loop, - ...viewProps - }: RootProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : View; - return ( - - - - ); -}; - -Root.displayName = 'RootToggleGroup'; - -function useRootContext() { - const context = React.useContext(ToggleGroupContext); - if (!context) { - throw new Error( - 'ToggleGroup compound components cannot be rendered outside the ToggleGroup component' - ); - } - return context; -} - -const ItemContext = React.createContext(null); - -const Item = ( - { - ref, - asChild, - value: itemValue, - disabled: disabledProp = false, - onPress: onPressProp, - ...props - }: ItemProps & { - ref: React.RefObject; - } -) => { - const id = React.useId(); - const { type, disabled, value, onValueChange } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - if (disabled || disabledProp) return; - if (type === 'single') { - onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); - } - if (type === 'multiple') { - onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); - } - onPressProp?.(ev); - } - - const isChecked = - type === 'single' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - const isSelected = - type === 'multiple' ? ToggleGroupUtils.getIsSelected(value, itemValue) : undefined; - - const Component = asChild ? Slot : Pressable; - return ( - - - - ); -}; - -Item.displayName = 'ItemToggleGroup'; - -function useItemContext() { - const context = React.useContext(ItemContext); - if (!context) { - throw new Error( - 'ToggleGroupItem compound components cannot be rendered outside the ToggleGroupItem component' - ); - } - return context; -} - -const utils = ToggleGroupUtils; - -export { Item, Root, useItemContext, useRootContext, utils }; diff --git a/packages/toggle-group/src/toggle-group.web.tsx b/packages/toggle-group/src/toggle-group.web.tsx deleted file mode 100644 index 5306b0f2..00000000 --- a/packages/toggle-group/src/toggle-group.web.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import * as ToggleGroup from '@radix-ui/react-toggle-group'; -import { Slot } from '@rn-primitives/slot'; -import { ToggleGroupUtils } from '@rn-primitives/utils'; -import * as React from 'react'; -import { Pressable, View, type GestureResponderEvent } from 'react-native'; -import type { ItemProps, ItemRef, RootProps, RootRef } from './types'; - -const ToggleGroupContext = React.createContext(null); - -const Root = ( - { - ref, - asChild, - type, - value, - onValueChange, - disabled = false, - rovingFocus, - orientation, - dir, - loop, - ...viewProps - }: RootProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : View; - return ( - - - - - - ); -}; - -Root.displayName = 'RootToggleGroup'; - -function useRootContext() { - const context = React.useContext(ToggleGroupContext); - if (!context) { - throw new Error( - 'ToggleGroup compound components cannot be rendered outside the ToggleGroup component' - ); - } - return context; -} - -const ItemContext = React.createContext(null); - -const Item = ( - { - ref, - asChild, - value: itemValue, - disabled: disabledProp = false, - onPress: onPressProp, - ...props - }: ItemProps & { - ref: React.RefObject; - } -) => { - const { type, disabled, value, onValueChange } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - if (type === 'single') { - onValueChange(ToggleGroupUtils.getNewSingleValue(value, itemValue)); - } - if (type === 'multiple') { - onValueChange(ToggleGroupUtils.getNewMultipleValue(value, itemValue)); - } - } - - const Component = asChild ? Slot : Pressable; - return ( - - - - - - ); -}; - -Item.displayName = 'ItemToggleGroup'; - -function useItemContext() { - const context = React.useContext(ItemContext); - if (!context) { - throw new Error( - 'ToggleGroupItem compound components cannot be rendered outside the ToggleGroupItem component' - ); - } - return context; -} - -const utils = ToggleGroupUtils; - -export { Item, Root, useItemContext, useRootContext, utils }; diff --git a/packages/toggle-group/src/types.ts b/packages/toggle-group/src/types.ts deleted file mode 100644 index 223017bb..00000000 --- a/packages/toggle-group/src/types.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - PressableRef, - SlottablePressableProps, - SlottableViewProps, - ViewRef, -} from '@rn-primitives/types'; - -type SingleRootProps = { - type: 'single'; - value: string | undefined; - onValueChange: (val: string | undefined) => void; -}; - -type MultipleRootProps = { - type: 'multiple'; - value: string[]; - onValueChange: (val: string[]) => void; -}; - -type RootProps = (SingleRootProps | MultipleRootProps) & { - disabled?: boolean; - /** - * Platform: WEB ONLY - */ - rovingFocus?: boolean; - /** - * Platform: WEB ONLY - */ - orientation?: 'horizontal' | 'vertical'; - /** - * Platform: WEB ONLY - */ - dir?: 'ltr' | 'rtl'; - /** - * Platform: WEB ONLY - */ - loop?: boolean; -} & SlottableViewProps; - -type ItemProps = SlottablePressableProps & { - value: string; -}; - -type RootRef = ViewRef; -type ItemRef = PressableRef; - -export type { ItemProps, ItemRef, RootProps, RootRef }; diff --git a/packages/toggle-group/src/universal/index.ts b/packages/toggle-group/src/universal/index.ts new file mode 100644 index 00000000..96d68da8 --- /dev/null +++ b/packages/toggle-group/src/universal/index.ts @@ -0,0 +1,2 @@ +export { Item, Root, useItemContext, useRootContext } from './toggle-group'; +export type { ItemProps, RootProps } from './types'; diff --git a/packages/toggle-group/src/universal/toggle-group.tsx b/packages/toggle-group/src/universal/toggle-group.tsx new file mode 100644 index 00000000..97b71756 --- /dev/null +++ b/packages/toggle-group/src/universal/toggle-group.tsx @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { Item as ItemNative, Root as RootNative, useItemContext, useRootContext } from '../native'; +import type { ItemProps, RootProps } from './types'; + +function Root({ web: _web, native, ...props }: RootProps) { + return ; +} + +function Item({ web: _web, native, ...props }: ItemProps) { + return ; +} + +export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/universal/toggle-group.web.tsx b/packages/toggle-group/src/universal/toggle-group.web.tsx new file mode 100644 index 00000000..bc18cb0c --- /dev/null +++ b/packages/toggle-group/src/universal/toggle-group.web.tsx @@ -0,0 +1,24 @@ +import { Pressable, View } from '@rn-primitives/core'; +import { Root as RootWeb, Item as ItemWeb, useRootContext, useItemContext } from '../web'; +import type { RootProps, ItemProps } from './types'; + +function Root({ native: _native, web, style, ...props }: RootProps) { + if (style) { + return ( + + + + ); + } + return ; +} + +function Item({ native: _native, web, ...props }: ItemProps) { + return ( + + + + ); +} + +export { Item, Root, useRootContext, useItemContext }; diff --git a/packages/toggle-group/src/universal/types.ts b/packages/toggle-group/src/universal/types.ts new file mode 100644 index 00000000..fcbbca91 --- /dev/null +++ b/packages/toggle-group/src/universal/types.ts @@ -0,0 +1,27 @@ +import { PressablePropsUniversal, ViewPropsUniversal } from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseItemProps, BaseRootProps } from '../base-types'; +import type { ItemPropsNativeOnly, RootPropsNativeOnly } from '../native/types'; +import type { ItemPropsWebOnly, RootPropsWebOnly } from '../web/types'; + +type RootProps = Prettify< + BaseRootProps & + ViewPropsUniversal & { + native?: RootPropsNativeOnly; + web?: RootPropsWebOnly; + } +>; + +type RootRef = RootProps['ref']; + +type ItemProps = Prettify< + BaseItemProps & + PressablePropsUniversal & { + native?: ItemPropsNativeOnly; + web?: ItemPropsWebOnly; + } +>; + +type ItemRef = ItemProps['ref']; + +export type { ItemProps, ItemRef, RootProps, RootRef }; diff --git a/packages/toggle-group/src/utils/contexts.ts b/packages/toggle-group/src/utils/contexts.ts new file mode 100644 index 00000000..1fd93b94 --- /dev/null +++ b/packages/toggle-group/src/utils/contexts.ts @@ -0,0 +1,33 @@ +import * as React from 'react'; +import type { BaseItemContext, BaseRootContext } from '../base-types'; + +const RootContext = React.createContext(null); +function useRootContext() { + const context = React.useContext(RootContext); + if (!context) { + throw new Error( + 'ToggleGroup compound components cannot be rendered outside the ToggleGroup component' + ); + } + return context; +} + +type RootContextReturnType = ReturnType; + +const ItemContext = React.createContext(null); + +function useItemContext() { + const context = React.useContext(ItemContext); + if (!context) { + throw new Error( + 'ToggleGroupItem compound components cannot be rendered outside the ToggleGroupItem component' + ); + } + return context; +} + +type ItemContextReturnType = ReturnType; + +export { ItemContext, RootContext, useItemContext, useRootContext }; + +export type { ItemContextReturnType, RootContextReturnType }; diff --git a/packages/toggle-group/src/utils/get-is-selected.ts b/packages/toggle-group/src/utils/get-is-selected.ts new file mode 100644 index 00000000..e07ee764 --- /dev/null +++ b/packages/toggle-group/src/utils/get-is-selected.ts @@ -0,0 +1,9 @@ +export function getIsSelected(value: string | string[] | undefined, itemValue: string) { + if (value === undefined) { + return false; + } + if (typeof value === 'string') { + return value === itemValue; + } + return value.includes(itemValue); +} diff --git a/packages/toggle-group/src/utils/get-new-multiple-value.ts b/packages/toggle-group/src/utils/get-new-multiple-value.ts new file mode 100644 index 00000000..e8bc88e0 --- /dev/null +++ b/packages/toggle-group/src/utils/get-new-multiple-value.ts @@ -0,0 +1,15 @@ +export function getNewMultipleValue( + originalValue: string | string[] | undefined, + itemValue: string +) { + if (originalValue === undefined) { + return [itemValue]; + } + if (typeof originalValue === 'string') { + return originalValue === itemValue ? [] : [originalValue, itemValue]; + } + if (originalValue.includes(itemValue)) { + return originalValue.filter((v) => v !== itemValue); + } + return [...originalValue, itemValue]; +} diff --git a/packages/toggle-group/src/utils/get-new-single-value.ts b/packages/toggle-group/src/utils/get-new-single-value.ts new file mode 100644 index 00000000..3928acdc --- /dev/null +++ b/packages/toggle-group/src/utils/get-new-single-value.ts @@ -0,0 +1,6 @@ +export function getNewSingleValue(originalValue: string | string[] | undefined, itemValue: string) { + if (originalValue === itemValue) { + return undefined; + } + return itemValue; +} diff --git a/packages/toggle-group/src/web/index.ts b/packages/toggle-group/src/web/index.ts new file mode 100644 index 00000000..37cb0f06 --- /dev/null +++ b/packages/toggle-group/src/web/index.ts @@ -0,0 +1,2 @@ +export { Root, Item, useItemContext, useRootContext } from './toggle-group-web'; +export type { RootProps, ItemProps } from './types'; diff --git a/packages/toggle-group/src/web/toggle-group-web.tsx b/packages/toggle-group/src/web/toggle-group-web.tsx new file mode 100644 index 00000000..72cfd10a --- /dev/null +++ b/packages/toggle-group/src/web/toggle-group-web.tsx @@ -0,0 +1,32 @@ +import type { RootProps, ItemProps } from './types'; +import type { RootContextReturnType, ItemContextReturnType } from '../utils/contexts'; + +const Root = (props: RootProps) => { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/toggle-group/web is only supported on web.'); + } + return null; +}; + +const Item = (props: ItemProps) => { + if (process.env.NODE_ENV === 'development') { + console.log('`Item` from @rn-primitives/toggle-group/web is only supported on web.'); + } + return null; +}; + +const useRootContext = () => { + throw new Error( + 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/native`' + ); + return {} as RootContextReturnType; +}; + +const useItemContext = () => { + throw new Error( + 'Cannot access the web useItemContext on a native platform. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/native`' + ); + return {} as ItemContextReturnType; +}; + +export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/web/toggle-group-web.web.tsx b/packages/toggle-group/src/web/toggle-group-web.web.tsx new file mode 100644 index 00000000..3e66e851 --- /dev/null +++ b/packages/toggle-group/src/web/toggle-group-web.web.tsx @@ -0,0 +1,76 @@ +import * as ToggleGroup from '@radix-ui/react-toggle-group'; +import * as React from 'react'; +import { View, Pressable } from '@rn-primitives/core/dist/web'; +import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; +import { getNewMultipleValue } from '../utils/get-new-multiple-value'; +import { getNewSingleValue } from '../utils/get-new-single-value'; +import type { GestureResponderEvent } from 'react-native'; +import type { ItemProps, RootProps } from './types'; + +const Root = ({ + asChild, + type, + value, + onValueChange, + disabled = false, + rovingFocus, + orientation, + dir, + loop, + ...props +}: RootProps) => { + return ( + + + + + + ); +}; + +const Item = ({ + asChild, + value: itemValue, + disabled: disabledProp = false, + onPress: onPressProp, + ...props +}: ItemProps) => { + const { type, disabled, value, onValueChange } = useRootContext(); + + function onPress(ev: GestureResponderEvent) { + onPressProp?.(ev); + if (type === 'single') { + onValueChange(getNewSingleValue(value, itemValue)); + } + if (type === 'multiple') { + onValueChange(getNewMultipleValue(value, itemValue)); + } + } + + return ( + + + + + + ); +}; + +export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/web/types.ts b/packages/toggle-group/src/web/types.ts new file mode 100644 index 00000000..b5aacbca --- /dev/null +++ b/packages/toggle-group/src/web/types.ts @@ -0,0 +1,16 @@ +import type { + ToggleGroupItemProps, + ToggleGroupMultipleProps, + ToggleGroupSingleProps, +} from '@radix-ui/react-toggle-group'; + +type RootProps = ToggleGroupSingleProps | ToggleGroupMultipleProps; + +type ItemProps = ToggleGroupItemProps; + +type RootPropsWebOnly = React.ComponentProps<'div'> & + Pick; + +type ItemPropsWebOnly = React.ComponentProps<'button'>; + +export type { ItemProps, ItemPropsWebOnly, RootProps, RootPropsWebOnly }; diff --git a/packages/toggle-group/tsup.config.ts b/packages/toggle-group/tsup.config.ts index 06ca7de4..6806d94b 100644 --- a/packages/toggle-group/tsup.config.ts +++ b/packages/toggle-group/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/toggle-group.tsx', 'src/toggle-group.web.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/toggle-group.tsx', + 'src/universal/toggle-group.web.tsx', + 'src/native/index.ts', + 'src/native/toggle-group-native.tsx', + 'src/native/toggle-group-native.native.tsx', + 'src/web/index.ts', + 'src/web/toggle-group-web.tsx', + 'src/web/toggle-group-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './toggle-group'], + external: [ + 'react', + './universal', + './toggle-group', + '../native', + './toggle-group-native', + '../web', + './toggle-group-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/packages/toggle/src/base-types.ts b/packages/toggle/src/base-types.ts index ae19ced3..1ed86b8b 100644 --- a/packages/toggle/src/base-types.ts +++ b/packages/toggle/src/base-types.ts @@ -1,8 +1,8 @@ import type { RootProps as RootPropsWeb } from './web/types'; -type BaseRootProps = Pick< +type BaseToggleRootProps = Pick< RootPropsWeb, 'defaultPressed' | 'pressed' | 'onPressedChange' | 'disabled' | 'asChild' >; -export type { BaseRootProps }; +export type { BaseToggleRootProps }; diff --git a/packages/toggle/src/universal/types.ts b/packages/toggle/src/universal/types.ts index 8a9f863b..a36fd4a6 100644 --- a/packages/toggle/src/universal/types.ts +++ b/packages/toggle/src/universal/types.ts @@ -1,11 +1,11 @@ import { PressablePropsUniversal } from '@rn-primitives/core'; import type { Prettify } from '@rn-primitives/types'; -import type { BaseRootProps } from '../base-types'; +import type { BaseToggleRootProps } from '../base-types'; import type { RootPropsNativeOnly } from '../native/types'; import type { RootPropsWebOnly } from '../web/types'; type RootProps = Prettify< - BaseRootProps & + BaseToggleRootProps & PressablePropsUniversal & { native?: RootPropsNativeOnly; web?: RootPropsWebOnly; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c52c4b6e..8364a7b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1829,6 +1829,9 @@ importers: '@radix-ui/react-toggle-group': specifier: ^1.1.0 version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rn-primitives/core': + specifier: workspace:* + version: link:../core '@rn-primitives/slot': specifier: workspace:* version: link:../slot From 5c0ac75e33a8601d020fc513034211903898abcb Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Thu, 1 May 2025 18:09:59 +0200 Subject: [PATCH 084/106] add useControllableState, fix types --- packages/toggle-group/package.json | 1 + packages/toggle-group/src/base-types.ts | 9 +- .../src/native/toggle-group-native.native.tsx | 35 ++++++-- .../src/universal/toggle-group.tsx | 13 ++- .../src/universal/toggle-group.web.tsx | 9 +- .../src/utils/get-default-value.ts | 18 ++++ .../toggle-group/src/web/toggle-group-web.tsx | 10 +-- .../src/web/toggle-group-web.web.tsx | 84 +++++++------------ packages/toggle-group/src/web/types.ts | 20 +++-- pnpm-lock.yaml | 3 + 10 files changed, 116 insertions(+), 86 deletions(-) create mode 100644 packages/toggle-group/src/utils/get-default-value.ts diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index c237eaf3..65bdbe5a 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -40,6 +40,7 @@ "dependencies": { "@radix-ui/react-toggle-group": "^1.1.0", "@rn-primitives/core": "workspace:*", + "@rn-primitives/hooks": "workspace:*", "@rn-primitives/utils": "workspace:*", "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*" diff --git a/packages/toggle-group/src/base-types.ts b/packages/toggle-group/src/base-types.ts index 320e0d2a..0a75f827 100644 --- a/packages/toggle-group/src/base-types.ts +++ b/packages/toggle-group/src/base-types.ts @@ -2,12 +2,15 @@ import type { RootProps as RootPropsWeb, ItemProps as ItemPropsWeb } from './web type BaseRootProps = Pick< RootPropsWeb, - 'type' | 'value' | 'onValueChange' | 'disabled' | 'asChild' + 'type' | 'value' | 'defaultValue' | 'onValueChange' | 'disabled' | 'asChild' >; -type BaseItemProps = Pick; +type BaseItemProps = Pick; -type BaseRootContext = Pick | null; +type BaseRootContext = Pick< + RootPropsWeb, + 'type' | 'value' | 'defaultValue' | 'onValueChange' | 'disabled' +> | null; type BaseItemContext = Pick | null; diff --git a/packages/toggle-group/src/native/toggle-group-native.native.tsx b/packages/toggle-group/src/native/toggle-group-native.native.tsx index ee9dd674..5f1531a7 100644 --- a/packages/toggle-group/src/native/toggle-group-native.native.tsx +++ b/packages/toggle-group/src/native/toggle-group-native.native.tsx @@ -1,23 +1,39 @@ import * as React from 'react'; import { View, Pressable } from '@rn-primitives/core/dist/native'; +import { useControllableState } from '@rn-primitives/hooks'; import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; import type { ItemProps, RootProps } from './types'; import type { GestureResponderEvent } from 'react-native'; +import { getDefaultValue } from '../utils/get-default-value'; import { getIsSelected } from '../utils/get-is-selected'; import { getNewMultipleValue } from '../utils/get-new-multiple-value'; import { getNewSingleValue } from '../utils/get-new-single-value'; -const Root = ({ asChild, type, value, onValueChange, disabled = false, ...props }: RootProps) => { +const Root = ({ + type, + disabled = false, + value: valueProp, + onValueChange: onValueChangeProps, + defaultValue, + ...viewProps +}: RootProps) => { + const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: getDefaultValue(defaultValue, type), + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + return ( - + ); }; @@ -29,18 +45,19 @@ const Item = ({ onPress: onPressProp, ...props }: ItemProps) => { - const id = React.useId(); const { type, disabled, value, onValueChange } = useRootContext(); function onPress(ev: GestureResponderEvent) { if (disabled || disabledProp) return; if (type === 'single') { - onValueChange(getNewSingleValue(value, itemValue)); + onValueChange?.(getNewSingleValue(value, itemValue) as string[] & string); } if (type === 'multiple') { - onValueChange(getNewMultipleValue(value, itemValue)); + onValueChange?.(getNewMultipleValue(value, itemValue) as string[] & string); + } + if (typeof onPressProp === 'function') { + onPressProp(ev); } - onPressProp?.(ev); } const isChecked = type === 'single' ? getIsSelected(value, itemValue) : undefined; @@ -52,7 +69,7 @@ const Item = ({ role={type === 'single' ? 'radio' : 'checkbox'} onPress={onPress} aria-checked={isChecked} - aria-disabled={disabled} + aria-disabled={(disabled || disabledProp) ?? false} aria-selected={isSelected} disabled={(disabled || disabledProp) ?? false} {...props} diff --git a/packages/toggle-group/src/universal/toggle-group.tsx b/packages/toggle-group/src/universal/toggle-group.tsx index 97b71756..68fcc19c 100644 --- a/packages/toggle-group/src/universal/toggle-group.tsx +++ b/packages/toggle-group/src/universal/toggle-group.tsx @@ -1,13 +1,18 @@ -import * as React from 'react'; -import { Item as ItemNative, Root as RootNative, useItemContext, useRootContext } from '../native'; +import { + Item as ItemNative, + Root as RootNative, + ItemProps as ItemPropsNative, + useItemContext, + useRootContext, +} from '../native'; import type { ItemProps, RootProps } from './types'; function Root({ web: _web, native, ...props }: RootProps) { return ; } -function Item({ web: _web, native, ...props }: ItemProps) { - return ; +function Item({ web: _web, native, ref, ...props }: ItemProps) { + return ; } export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/universal/toggle-group.web.tsx b/packages/toggle-group/src/universal/toggle-group.web.tsx index bc18cb0c..c71d0a4d 100644 --- a/packages/toggle-group/src/universal/toggle-group.web.tsx +++ b/packages/toggle-group/src/universal/toggle-group.web.tsx @@ -1,7 +1,10 @@ import { Pressable, View } from '@rn-primitives/core'; +import { mergeProps } from '@rn-primitives/utils'; import { Root as RootWeb, Item as ItemWeb, useRootContext, useItemContext } from '../web'; import type { RootProps, ItemProps } from './types'; +const DEFAULT_PRESSABLE_WEB = { as: 'button' } as const; + function Root({ native: _native, web, style, ...props }: RootProps) { if (style) { return ( @@ -13,10 +16,10 @@ function Root({ native: _native, web, style, ...props }: RootProps) { return ; } -function Item({ native: _native, web, ...props }: ItemProps) { +function Item({ native: _native, web, value, ...props }: ItemProps) { return ( - - + + ); } diff --git a/packages/toggle-group/src/utils/get-default-value.ts b/packages/toggle-group/src/utils/get-default-value.ts new file mode 100644 index 00000000..46d8fbec --- /dev/null +++ b/packages/toggle-group/src/utils/get-default-value.ts @@ -0,0 +1,18 @@ +export function getDefaultValue( + defaultValue: string | string[] | undefined, + type: 'multiple' | 'single' +) { + if (!defaultValue) { + return undefined; + } + + if (type === 'multiple' && !Array.isArray(defaultValue)) { + return [defaultValue]; + } + + if (type === 'single' && Array.isArray(defaultValue)) { + return defaultValue[0]; + } + + return defaultValue; +} diff --git a/packages/toggle-group/src/web/toggle-group-web.tsx b/packages/toggle-group/src/web/toggle-group-web.tsx index 72cfd10a..6fcbc197 100644 --- a/packages/toggle-group/src/web/toggle-group-web.tsx +++ b/packages/toggle-group/src/web/toggle-group-web.tsx @@ -1,19 +1,19 @@ -import type { RootProps, ItemProps } from './types'; +import type { ToggleGroup, ToggleGroupItem } from '@radix-ui/react-toggle-group'; import type { RootContextReturnType, ItemContextReturnType } from '../utils/contexts'; -const Root = (props: RootProps) => { +const Root = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Root` from @rn-primitives/toggle-group/web is only supported on web.'); } return null; -}; +}) as unknown as typeof ToggleGroup; -const Item = (props: ItemProps) => { +const Item = (() => { if (process.env.NODE_ENV === 'development') { console.log('`Item` from @rn-primitives/toggle-group/web is only supported on web.'); } return null; -}; +}) as unknown as typeof ToggleGroupItem; const useRootContext = () => { throw new Error( diff --git a/packages/toggle-group/src/web/toggle-group-web.web.tsx b/packages/toggle-group/src/web/toggle-group-web.web.tsx index 3e66e851..1f1d9f83 100644 --- a/packages/toggle-group/src/web/toggle-group-web.web.tsx +++ b/packages/toggle-group/src/web/toggle-group-web.web.tsx @@ -1,74 +1,48 @@ -import * as ToggleGroup from '@radix-ui/react-toggle-group'; -import * as React from 'react'; -import { View, Pressable } from '@rn-primitives/core/dist/web'; +import { ToggleGroup, ToggleGroupItem } from '@radix-ui/react-toggle-group'; +import { useControllableState } from '@rn-primitives/hooks'; import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; -import { getNewMultipleValue } from '../utils/get-new-multiple-value'; -import { getNewSingleValue } from '../utils/get-new-single-value'; -import type { GestureResponderEvent } from 'react-native'; -import type { ItemProps, RootProps } from './types'; +import { getDefaultValue } from '../utils/get-default-value'; +import type { ItemProps, RootProps, MultipleProps, SingleProps } from './types'; const Root = ({ - asChild, - type, - value, - onValueChange, - disabled = false, - rovingFocus, - orientation, - dir, - loop, + value: valueProp, + onValueChange: onValueChangeProps, + defaultValue, ...props }: RootProps) => { + const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = + useControllableState<(string | undefined) | string[]>({ + prop: valueProp, + defaultProp: getDefaultValue(defaultValue, props.type), + onChange: onValueChangeProps as (state: string | string[] | undefined) => void, + }); + return ( - - - + ); }; -const Item = ({ - asChild, - value: itemValue, - disabled: disabledProp = false, - onPress: onPressProp, - ...props -}: ItemProps) => { - const { type, disabled, value, onValueChange } = useRootContext(); - - function onPress(ev: GestureResponderEvent) { - onPressProp?.(ev); - if (type === 'single') { - onValueChange(getNewSingleValue(value, itemValue)); - } - if (type === 'multiple') { - onValueChange(getNewMultipleValue(value, itemValue)); - } - } - +const Item = ({ value: itemValue, ...props }: ItemProps) => { return ( - - - + ); }; diff --git a/packages/toggle-group/src/web/types.ts b/packages/toggle-group/src/web/types.ts index b5aacbca..9b31f02a 100644 --- a/packages/toggle-group/src/web/types.ts +++ b/packages/toggle-group/src/web/types.ts @@ -1,16 +1,22 @@ import type { ToggleGroupItemProps, - ToggleGroupMultipleProps, - ToggleGroupSingleProps, + ToggleGroupMultipleProps as MultipleProps, + ToggleGroupSingleProps as SingleProps, + Root, } from '@radix-ui/react-toggle-group'; -type RootProps = ToggleGroupSingleProps | ToggleGroupMultipleProps; - -type ItemProps = ToggleGroupItemProps; - +type RootProps = React.ComponentProps; type RootPropsWebOnly = React.ComponentProps<'div'> & Pick; +type ItemProps = ToggleGroupItemProps; type ItemPropsWebOnly = React.ComponentProps<'button'>; -export type { ItemProps, ItemPropsWebOnly, RootProps, RootPropsWebOnly }; +export type { + ItemProps, + ItemPropsWebOnly, + RootProps, + RootPropsWebOnly, + MultipleProps, + SingleProps, +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60c725e7..6fe2d79c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1832,6 +1832,9 @@ importers: '@rn-primitives/core': specifier: workspace:* version: link:../core + '@rn-primitives/hooks': + specifier: workspace:* + version: link:../hooks '@rn-primitives/slot': specifier: workspace:* version: link:../slot From 416e09e2d74fb87f483bc622592bba35fb55594c Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Thu, 1 May 2025 19:10:03 +0200 Subject: [PATCH 085/106] update example apps with toggle-group --- .../components/ui/toggle-group.tsx | 16 +- apps/expo-nativewind/package.json | 20 +- apps/nextjs-nativewind/src/app/page.tsx | 2 +- .../src/components/ui/toggle-group.tsx | 20 +- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 13 +- .../src/components/ui/toggle-group.tsx | 99 ++ apps/vite-tanstack-router/package.json | 1 + .../src/components/ui/toggle-group.tsx | 99 ++ .../vite-tanstack-router/src/routes/index.tsx | 12 +- packages/toggle-group/src/index.ts | 5 +- packages/toggle-group/src/universal/types.ts | 6 +- pnpm-lock.yaml | 1136 +++++++++++++++-- 13 files changed, 1300 insertions(+), 130 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/toggle-group.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/toggle-group.tsx diff --git a/apps/expo-nativewind/components/ui/toggle-group.tsx b/apps/expo-nativewind/components/ui/toggle-group.tsx index c9fbad0e..8bffbf8e 100644 --- a/apps/expo-nativewind/components/ui/toggle-group.tsx +++ b/apps/expo-nativewind/components/ui/toggle-group.tsx @@ -9,18 +9,14 @@ import { cn } from '~/lib/utils'; const ToggleGroupContext = React.createContext | null>(null); const ToggleGroup = ({ - ref, className, variant, size, children, ...props }: React.ComponentPropsWithoutRef & - VariantProps & { - ref?: React.RefObject>; - }) => ( + VariantProps) => ( @@ -28,8 +24,6 @@ const ToggleGroup = ({ ); -ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName; - function useToggleGroupContext() { const context = React.useContext(ToggleGroupContext); if (context === null) { @@ -41,16 +35,13 @@ function useToggleGroupContext() { } const ToggleGroupItem = ({ - ref, className, children, variant, size, ...props }: React.ComponentPropsWithoutRef & - VariantProps & { - ref?: React.RefObject>; - }) => { + VariantProps) => { const context = useToggleGroupContext(); const { value } = ToggleGroupPrimitive.useRootContext(); @@ -64,7 +55,6 @@ const ToggleGroupItem = ({ )} > + {/* @@ -127,7 +128,6 @@ export default function Home() { - */} diff --git a/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx b/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx index edc934aa..1aa29f6b 100644 --- a/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx +++ b/apps/nextjs-nativewind/src/components/ui/toggle-group.tsx @@ -11,18 +11,14 @@ import { cn } from '~/lib/utils'; const ToggleGroupContext = React.createContext | null>(null); const ToggleGroup = ({ - ref, className, variant, size, children, ...props }: React.ComponentPropsWithoutRef & - VariantProps & { - ref?: React.RefObject>; - }) => ( + VariantProps) => ( @@ -30,8 +26,6 @@ const ToggleGroup = ({ ); -ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName; - function useToggleGroupContext() { const context = React.useContext(ToggleGroupContext); if (context === null) { @@ -43,16 +37,13 @@ function useToggleGroupContext() { } const ToggleGroupItem = ({ - ref, className, children, variant, size, ...props }: React.ComponentPropsWithoutRef & - VariantProps & { - ref?: React.RefObject>; - }) => { + VariantProps) => { const context = useToggleGroupContext(); const { value } = ToggleGroupPrimitive.useRootContext(); @@ -60,20 +51,19 @@ const ToggleGroupItem = ({ @@ -41,6 +43,7 @@ export default function Home() { + ); @@ -150,5 +153,13 @@ function ProgressExample() { } function ToggleExample() { - return ; + return ( + + + + ); +} + +function ToggleGroupExample() { + return ; } diff --git a/apps/nextjs-no-rn/src/components/ui/toggle-group.tsx b/apps/nextjs-no-rn/src/components/ui/toggle-group.tsx new file mode 100644 index 00000000..88858b86 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/toggle-group.tsx @@ -0,0 +1,99 @@ +'use client'; + +import { VariantProps } from 'class-variance-authority'; +import type { LucideIcon } from 'lucide-react-native'; +import * as React from 'react'; +import { toggleTextVariants, toggleVariants } from '~/components/ui/toggle'; +import { TextClassContext } from '~/components/ui/text'; +import * as ToggleGroupPrimitive from '@rn-primitives/toggle-group'; +import { cn } from '~/lib/utils'; +import { Bold, Italic, Underline } from 'lucide-react'; + +const ToggleGroupContext = React.createContext | null>(null); + +const ToggleGroup = ({ + className, + variant, + size, + children, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps) => ( + + + + + + + + + + + + + +); + +function useToggleGroupContext() { + const context = React.useContext(ToggleGroupContext); + if (context === null) { + throw new Error( + 'ToggleGroup compound components cannot be rendered outside the ToggleGroup component' + ); + } + return context; +} + +const ToggleGroupItem = ({ + className, + children, + variant, + size, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps) => { + const context = useToggleGroupContext(); + const { value } = ToggleGroupPrimitive.useRootContext(); + + return ( + + + {children} + + + ); +}; + +function ToggleGroupIcon({ + className, + icon: Icon, + ...props +}: React.ComponentPropsWithoutRef & { + icon: LucideIcon; +}) { + const textClass = React.useContext(TextClassContext); + return ; +} + +export { ToggleGroup, ToggleGroupIcon, ToggleGroupItem }; diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index 61681f3c..ecb1208f 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -19,6 +19,7 @@ "@rn-primitives/checkbox": "workspace:*", "@rn-primitives/progress": "workspace:*", "@rn-primitives/toggle": "workspace:*", + "@rn-primitives/toggle-group": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*", "@tanstack/react-router": "^1.114.3", diff --git a/apps/vite-tanstack-router/src/components/ui/toggle-group.tsx b/apps/vite-tanstack-router/src/components/ui/toggle-group.tsx new file mode 100644 index 00000000..c2e32e8f --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/toggle-group.tsx @@ -0,0 +1,99 @@ +'use client'; + +import type { VariantProps } from 'class-variance-authority'; +import type { LucideIcon } from 'lucide-react-native'; +import * as React from 'react'; +import { toggleTextVariants, toggleVariants } from '@/components/ui/toggle'; +import { TextClassContext } from '@/components/ui/text'; +import * as ToggleGroupPrimitive from '@rn-primitives/toggle-group'; +import { cn } from '@/lib/utils'; +import { Bold, Italic, Underline } from 'lucide-react'; + +const ToggleGroupContext = React.createContext | null>(null); + +const ToggleGroup = ({ + className, + variant, + size, + children, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps) => ( + + + + + + + + + + + + + +); + +function useToggleGroupContext() { + const context = React.useContext(ToggleGroupContext); + if (context === null) { + throw new Error( + 'ToggleGroup compound components cannot be rendered outside the ToggleGroup component' + ); + } + return context; +} + +const ToggleGroupItem = ({ + className, + children, + variant, + size, + ...props +}: React.ComponentPropsWithoutRef & + VariantProps) => { + const context = useToggleGroupContext(); + const { value } = ToggleGroupPrimitive.useRootContext(); + + return ( + + + {children} + + + ); +}; + +function ToggleGroupIcon({ + className, + icon: Icon, + ...props +}: React.ComponentPropsWithoutRef & { + icon: LucideIcon; +}) { + const textClass = React.useContext(TextClassContext); + return ; +} + +export { ToggleGroup, ToggleGroupIcon, ToggleGroupItem }; diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx index ce45e4f2..134b1252 100644 --- a/apps/vite-tanstack-router/src/routes/index.tsx +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -20,6 +20,7 @@ import { Checkbox } from '@/components/ui/checkbox'; import { Progress } from '@/components/ui/progress'; import { Text } from '@/components/ui/text'; import { Toggle } from '@/components/ui/toggle'; +import { ToggleGroup } from '@/components/ui/toggle-group'; import { View } from '@rn-primitives/core'; import { createFileRoute } from '@tanstack/react-router'; @@ -47,6 +48,7 @@ export function App() { + ); @@ -153,5 +155,13 @@ function ProgressExample() { } function ToggleExample() { - return ; + return ( + + + + ); +} + +function ToggleGroupExample() { + return ; } diff --git a/packages/toggle-group/src/index.ts b/packages/toggle-group/src/index.ts index b0de7533..c1d31190 100644 --- a/packages/toggle-group/src/index.ts +++ b/packages/toggle-group/src/index.ts @@ -1,2 +1,3 @@ -export { Root } from './universal/toggle-group'; -export type { RootProps, RootRef } from './universal/types'; +export { Item, Root, useItemContext, useRootContext } from './universal/toggle-group'; +export type { RootProps, ItemProps } from './universal/types'; +export { getIsSelected } from './utils/get-is-selected'; diff --git a/packages/toggle-group/src/universal/types.ts b/packages/toggle-group/src/universal/types.ts index fcbbca91..dd7ffb07 100644 --- a/packages/toggle-group/src/universal/types.ts +++ b/packages/toggle-group/src/universal/types.ts @@ -12,8 +12,6 @@ type RootProps = Prettify< } >; -type RootRef = RootProps['ref']; - type ItemProps = Prettify< BaseItemProps & PressablePropsUniversal & { @@ -22,6 +20,4 @@ type ItemProps = Prettify< } >; -type ItemRef = ItemProps['ref']; - -export type { ItemProps, ItemRef, RootProps, RootRef }; +export type { ItemProps, RootProps }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6fe2d79c..70dedc2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -190,10 +190,10 @@ importers: dependencies: '@react-native-async-storage/async-storage': specifier: 2.1.2 - version: 2.1.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + version: 2.1.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) '@react-navigation/native': specifier: ^7.0.0 - version: 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@rn-primitives/accordion': specifier: workspace:* version: link:../../packages/accordion @@ -297,32 +297,32 @@ importers: specifier: ^2.1.1 version: 2.1.1 expo: - specifier: 53.0.0-preview.7 - version: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 53.0.4 + version: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: - specifier: 7.1.2 - version: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 7.1.4 + version: 7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: - specifier: 4.1.3 - version: 4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 4.2.3 + version: 4.2.3(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: - specifier: 5.0.2-preview.4 - version: 5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.0.3 + version: 5.0.3(@types/react@19.0.10)(expo-constants@17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: - specifier: 0.30.4 - version: 0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) + specifier: 0.30.7 + version: 0.30.7(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: - specifier: 2.2.1 - version: 2.2.1(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 2.2.3 + version: 2.2.3(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: - specifier: 5.0.3 - version: 5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + specifier: 5.0.6 + version: 5.0.6(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: - specifier: ^0.482.0 - version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: ^0.503.0 + version: 0.503.0(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + version: 4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) react: specifier: 19.0.0 version: 19.0.0 @@ -330,20 +330,20 @@ importers: specifier: 19.0.0 version: 19.0.0(react@19.0.0) react-native: - specifier: 0.79.0 - version: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + specifier: 0.79.1 + version: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) react-native-reanimated: specifier: ~3.17.3 - version: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-safe-area-context: - specifier: 5.3.0 - version: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + specifier: 5.4.0 + version: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: specifier: ~4.10.0 - version: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: specifier: 15.11.2 - version: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-web: specifier: ~0.20.0 version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -476,25 +476,25 @@ importers: version: link:../../packages/utils expo: specifier: 53.0.0-preview.7 - version: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-linking: specifier: 7.1.2 - version: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-navigation-bar: specifier: 4.1.3 - version: 4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-router: specifier: 5.0.2-preview.4 - version: 5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + version: 5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-splash-screen: specifier: 0.30.4 - version: 0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) + version: 0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)) expo-status-bar: specifier: 2.2.1 version: 2.2.1(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-system-ui: specifier: 5.0.3 - version: 5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + version: 5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) lucide-react-native: specifier: ^0.482.0 version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) @@ -648,7 +648,7 @@ importers: version: 0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) nativewind: specifier: ^4.1.23 - version: 4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + version: 4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) next: specifier: 15.2.2 version: 15.2.2(@babel/core@7.26.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -722,6 +722,9 @@ importers: '@rn-primitives/toggle': specifier: workspace:* version: link:../../packages/toggle + '@rn-primitives/toggle-group': + specifier: workspace:* + version: link:../../packages/toggle-group '@rn-primitives/types': specifier: workspace:* version: link:../../packages/types @@ -801,6 +804,9 @@ importers: '@rn-primitives/toggle': specifier: workspace:* version: link:../../packages/toggle + '@rn-primitives/toggle-group': + specifier: workspace:* + version: link:../../packages/toggle-group '@rn-primitives/types': specifier: workspace:* version: link:../../packages/types @@ -2784,34 +2790,63 @@ packages: resolution: {integrity: sha512-CW/mLfLMk7FRBIka+4W+3dmv93uAQ3MGe4e7iWbmuW/Pm6F9V8ueoPZ11cUGbEQX7MGJfyb4jZQtgYecoPX8yw==} hasBin: true + '@expo/cli@0.24.9': + resolution: {integrity: sha512-ITx9+NCoMsj4npY4DVQVD9k2cbUermTeWXrOGxMiezlJnmzgkaVK1qTwuA0p6fPavLWSJqhtktCnUqfxZKnuCw==} + hasBin: true + '@expo/code-signing-certificates@0.0.5': resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} + '@expo/config-plugins@10.0.1': + resolution: {integrity: sha512-JM8fmG2TVzuF02LrkywZKfCBfA8yVvOeK+3X/JnWUQqWCdUpLNf1RmCdnZ67VBeFLBD74ro+Gd1bJR1dW5aMcw==} + '@expo/config-plugins@9.1.4': resolution: {integrity: sha512-1KNE6HvPotIlD4AzlrwVlzi4DmuVJWPYAwC6jM6wYpqo2HDCS5fng02Om7JfZgGmXJC1LM0anKDZu2u5gQx3Gg==} '@expo/config-types@53.0.0-preview.3': resolution: {integrity: sha512-0/7J4UtaJzf0Lwj++y63K7JEv091RcUk5Q6WWbIzsAOG4yJ7hF8ncJaaGVWYzcTIWHvv7wScLKUTj7jSmy9Kvg==} + '@expo/config-types@53.0.3': + resolution: {integrity: sha512-V1e6CiM4TXtGxG/W2Msjp/QOx/vikLo5IUGMvEMjgAglBfGYx3PXfqsUb5aZDt6kqA3bDDwFuZoS5vNm/SYwSg==} + '@expo/config@11.0.3': resolution: {integrity: sha512-VOb7II8xTqewN7axNKusZDidjkS8R2/wa7yep3fFfBzdyXvy1mTzpeAWDsMY1g77MOB/Byswy0MoP/Mi1cWkww==} + '@expo/config@11.0.7': + resolution: {integrity: sha512-pppH3Cy2IfituiYACMeW7cWYezcjmHKq7lDLfH1gMHT+zZ1QaYNs3EN6Kcc/QAXV//KFFhU0Qq4H/UrLuPp/yg==} + '@expo/devcert@1.2.0': resolution: {integrity: sha512-Uilcv3xGELD5t/b0eM4cxBFEKQRIivB3v7i+VhWLV/gL98aw810unLKKJbGAxAIhY6Ipyz8ChWibFsKFXYwstA==} '@expo/env@1.0.3': resolution: {integrity: sha512-94l5HV9FSCMt4dnFykFmcfh94NmajyaoYXY2Z36pTdR5UbgCtR1brAhlvJ/5Ma8eHbzdqvmta+LXA9LHNKpyww==} + '@expo/env@1.0.5': + resolution: {integrity: sha512-dtEZ4CAMaVrFu2+tezhU3FoGWtbzQl50xV+rNJE5lYVRjUflWiZkVHlHkWUlPAwDPifLy4TuissVfScGGPWR5g==} + '@expo/fingerprint@0.12.2': resolution: {integrity: sha512-UUTQdu1NYRd1pBeHidom0aB3oUrORlqCVRf4wSm9wbTv7KRIhkJoxI8oKRkUHUXyxcVv8de6ybrADoc5aGFQ1w==} hasBin: true + '@expo/fingerprint@0.12.4': + resolution: {integrity: sha512-HOJVvjiQYVHIouCOfFf4JRrQvBDIV/12GVG2iwbw1iGwmpQVkPgEXa9lN0f2yuS4J3QXHs73wr9jvuCjMmJlfw==} + hasBin: true + '@expo/image-utils@0.7.2': resolution: {integrity: sha512-j5/+1Gfg03WPnzWrbOZ6tl0zuUE33IVRfs8Sl7gZhjtgczbYC8IUXHSA2MsLXTrPlRXzZXBKm3toPjwbZulqlA==} + '@expo/image-utils@0.7.4': + resolution: {integrity: sha512-LcZ82EJy/t/a1avwIboeZbO6hlw8CvsIRh2k6SWPcAOvW0RqynyKFzUJsvnjWlhUzfBEn4oI7y/Pu5Xkw3KkkA==} + '@expo/json-file@9.1.2': resolution: {integrity: sha512-J/ncQd3dTXaHddfHCXw5A95yVLD6myp0tfI3BWPYJQdwrhIlL5fm2NVOqCcJIBM/NC0l6J+Lfw/ZCeZZmT70Gg==} + '@expo/json-file@9.1.4': + resolution: {integrity: sha512-7Bv86X27fPERGhw8aJEZvRcH9sk+9BenDnEmrI3ZpywKodYSBgc8lX9Y32faNVQ/p0YbDK9zdJ0BfAKNAOyi0A==} + + '@expo/metro-config@0.20.11': + resolution: {integrity: sha512-V2icQavtKWYD3Ml7cN7Af42vfx5UEOTpejgSKt1mmZ5uSIIv/7f4OBLM60HRErtqudiDzDla8s4g5frFw/hVTQ==} + '@expo/metro-config@0.20.4': resolution: {integrity: sha512-NulhAXqKgHnJayBQ98UEs0QdCeHovCGGPkeJ88drKws++SAKsmTyG7fwtPkujKiVADfxedlzi/qirlwfVQjwmw==} @@ -2820,19 +2855,37 @@ packages: peerDependencies: react-native: '*' + '@expo/metro-runtime@5.0.4': + resolution: {integrity: sha512-r694MeO+7Vi8IwOsDIDzH/Q5RPMt1kUDYbiTJwnO15nIqiDwlE8HU55UlRhffKZy6s5FmxQsZ8HA+T8DqUW8cQ==} + peerDependencies: + react-native: '*' + '@expo/osascript@2.2.2': resolution: {integrity: sha512-hESu/JDywyfeIE1B7K2OM7Yco5bKQuPkv8dPklGHFTbCoWJ6+uu4Xtn5RmXCXa52maWyiFGYnMBg/ZNLdJE0fw==} engines: {node: '>=12'} + '@expo/osascript@2.2.4': + resolution: {integrity: sha512-Q+Oyj+1pdRiHHpev9YjqfMZzByFH8UhKvSszxa0acTveijjDhQgWrq4e9T/cchBHi0GWZpGczWyiyJkk1wM1dg==} + engines: {node: '>=12'} + '@expo/package-manager@1.8.2': resolution: {integrity: sha512-Cn/E8dMYQ4V1/rUNUvq7zxcypby/XMMw6Sb6mJc0sm9EANCO6L8QKWXud5Ns/0032z1yHwG8CjGI29f7vvRliA==} + '@expo/package-manager@1.8.4': + resolution: {integrity: sha512-8H8tLga/NS3iS7QaX/NneRPqbObnHvVCfMCo0ShudreOFmvmgqhYjRlkZTRstSyFqefai8ONaT4VmnLHneRYYg==} + '@expo/plist@0.3.2': resolution: {integrity: sha512-wJ4ifg8AIQN3xEDrAJ7mrd0vSsFP7bFuuJtcXBoE4ORrt3AE+0mSQAAXEjb7eKMsGaxiSZwHqrkqYAzv5Ypidw==} + '@expo/plist@0.3.4': + resolution: {integrity: sha512-MhBLaUJNe9FQDDU2xhSNS4SAolr6K2wuyi4+A79vYuXLkAoICsbTwcGEQJN5jPY6D9izO/jsXh5k0h+mIWQMdw==} + '@expo/prebuild-config@9.0.0': resolution: {integrity: sha512-39OPxvEhzU5JsXkbzg8mE4fueWHySqVQ2n5Ay2RBWfaqpGKeMv/vJ63cZYYEyb60Dd4al3FrHStGkdJ0W/Jh+A==} + '@expo/prebuild-config@9.0.4': + resolution: {integrity: sha512-YQwTLvHjgqtVM3ZNdMP79510Opnv+TVWTOf3gmi9fKOfWgpR0YiE19aRF7YrQ+qh22Mt1tBBFVRsT3gsBq/Ytw==} + '@expo/sdk-runtime-versions@1.0.0': resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} @@ -3810,22 +3863,42 @@ packages: resolution: {integrity: sha512-Rwvpu3A05lM1HVlX4klH4UR52JbQPDKc8gi2mst2REZL1KeVgJRJxPPw8d8euVlYcq/s8XI1Ol827JaRtSZBTA==} engines: {node: '>=18'} + '@react-native/assets-registry@0.79.1': + resolution: {integrity: sha512-q5BwZtL0YbaJRgofl8qrD9BNdGJkecTJNYG8VFOVQYXPTBa3ZSooip1aj0wrjoa0HloKx/Hmx5UMvuhfEsjn8A==} + engines: {node: '>=18'} + '@react-native/babel-plugin-codegen@0.79.0': resolution: {integrity: sha512-7IkObXF0dl5Dv1vGO5rBAB+yx26kqDntqrDvurO1ZjB11oeKiWOuDoWMnouaPZGhUbnswkYwMRLXCpYhDTG4bA==} engines: {node: '>=18'} + '@react-native/babel-plugin-codegen@0.79.1': + resolution: {integrity: sha512-y3VyrPO/ej8Uhjk2IM+vBZok8cEyMl3DwJ3o/tsgiIVROITL+MWdk6M6iQOHRvwRWAgLe5jLSR3Zv5IIdDVY4A==} + engines: {node: '>=18'} + '@react-native/babel-preset@0.79.0': resolution: {integrity: sha512-OcizKxBRxte1kZo932G4tpgDgKnDMErie0EkbVK83WaQAvnL0Dd1GWPoYjFmlKtJwh7PM2RZqTsrwqsksrmtRg==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' + '@react-native/babel-preset@0.79.1': + resolution: {integrity: sha512-vS6Os9jFIeQ679VEwW2/h0a5uPYtX9E6ALYTW+VH4Knm+HNzdXC69Z1C5Cgia36ljiGEVCKtsBg5yjDYwliaeg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + '@react-native/codegen@0.79.0': resolution: {integrity: sha512-D8bFlD0HH9SMUI00svdg64hEvLbu4ETeWQDlmEP8WmNbuILjwoLFqbnBmlGn69Tot0DM1PuBd1l1ooIzs8sU7w==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' + '@react-native/codegen@0.79.1': + resolution: {integrity: sha512-cTVXfCICkmUU6UvUpnLP4BE82O14JRuVz42cg/A19oasTaZmzHl0+uIDzt2cZEbt/N2sJ/EZnZL61qqpwbNXWQ==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + '@react-native/community-cli-plugin@0.79.0': resolution: {integrity: sha512-pl+aSXxGj3ug80FpMDrArjxUbJWY2ibWiSP3MLKX+Xk7An2GUmFFjCzNVSbs0jzWv8814EG2oI60/GH2RXwE4g==} engines: {node: '>=18'} @@ -3835,22 +3908,47 @@ packages: '@react-native-community/cli': optional: true + '@react-native/community-cli-plugin@0.79.1': + resolution: {integrity: sha512-hqCMQrMRi19G7yxEsYwV9A0MHB6Hri7B5dytRD7kU5vtz0Lzg1fZYYvmS0x9OdWJWPntmHA8xiijwM+4cT8cpQ==} + engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli': '*' + peerDependenciesMeta: + '@react-native-community/cli': + optional: true + '@react-native/debugger-frontend@0.79.0': resolution: {integrity: sha512-chwKEWAmQMkOKZWwBra+utquuJ/2uFqh+ZgZbJfNX+U0YsBx6AQ3dVbfAaXW3bSLYEJyf9Wb3Opsal4fmcD9Ww==} engines: {node: '>=18'} + '@react-native/debugger-frontend@0.79.1': + resolution: {integrity: sha512-IgbQM/djzBhkkjzIT/b36zwkc4UMxZLTKgRVJrSEjuwtOPmgfh/1F5m3OUitbMd4/e06VgN0vPLyBzToj1kiwA==} + engines: {node: '>=18'} + '@react-native/dev-middleware@0.79.0': resolution: {integrity: sha512-8Mh5L8zJXis2qhgkfXnWMbSmcvb07wrbxQe8KIgIO7C1rS97idg7BBtoPEtmARsaQgmbSGu/wdE7UWFkGYp0OQ==} engines: {node: '>=18'} + '@react-native/dev-middleware@0.79.1': + resolution: {integrity: sha512-xegUHwi6h8wOLIl/9ImZoIVVwzecE+ENGTELIrD2PsseBbtdRMKzZ8A1LTBjPPt3IjHPH6103JcSPwgepP6zFA==} + engines: {node: '>=18'} + '@react-native/gradle-plugin@0.79.0': resolution: {integrity: sha512-c+/qKnmTx3kf8xZesp2BkZ9pAQVSnEPZziQUwviSJaq9jm8tKb/B8fyGG8yIuw/ZTKyGprD+ByzUSzJmCpC/Ow==} engines: {node: '>=18'} + '@react-native/gradle-plugin@0.79.1': + resolution: {integrity: sha512-vfoNcOBig/+R7g3eqHkBSbSVkk0NMPzyXE5QY0V+/0flRa3kDZUHP2fr8ygoY/4rxbi05wPME2/dTEuoYcpnjg==} + engines: {node: '>=18'} + '@react-native/js-polyfills@0.79.0': resolution: {integrity: sha512-+8lk/zP90JC9xZBGhI8TPqqR1Y5dYXwXvfhXygr/LlHoo+H8TeQxcPrXWdT+PWOJl6Gf7dbCOGh9Std8J7CSQA==} engines: {node: '>=18'} + '@react-native/js-polyfills@0.79.1': + resolution: {integrity: sha512-P8j11kdD+ehL5jqHSCM1BOl4SnJ+3rvGPpsagAqyngU6WSausISO7YFufltrWA7kdpHdnAL2HfJJ62szTRGShw==} + engines: {node: '>=18'} + '@react-native/normalize-colors@0.74.89': resolution: {integrity: sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==} @@ -3860,6 +3958,9 @@ packages: '@react-native/normalize-colors@0.79.0': resolution: {integrity: sha512-RmM7Dgb69a4qwdguKR+8MhT0u1IAKa/s0uy8/7JP9b/fm8zjUV9HctMgRgIpZTOELsowEyQodyTnhHQf4HPX0A==} + '@react-native/normalize-colors@0.79.1': + resolution: {integrity: sha512-Fj12xKyihZhrFH45ruqECd2JVx9lyYe+dyxO7MYgkqY6UENsSS3JKcfzjSNBZLW7NXts6JkbaqLQPwaHmPF7QA==} + '@react-native/virtualized-lists@0.79.0': resolution: {integrity: sha512-tCT1sHSI1O5KSclDwNfnkLTLe3cgiyYWjIlmNxWJHqhCCz017HGOS/oH0zs0ZgxYwN7xCzTkqY330XMDo+yj2g==} engines: {node: '>=18'} @@ -3871,6 +3972,17 @@ packages: '@types/react': optional: true + '@react-native/virtualized-lists@0.79.1': + resolution: {integrity: sha512-v1KeqJeVJXjc2mewjKQYSay7D7+VSacxryejuuVXlPE9E9wVbzMPCfPjbIS8C9nMC7a4rsRFilX7RVKYkeZaGg==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^19.0.0 + react: 19.0.0 + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + '@react-navigation/bottom-tabs@7.3.10': resolution: {integrity: sha512-qRCr7LHFpzEJFuG2Id9NNXT2GBgu+zZ7wK8UO0bRuaxXK1y6W09k6+fDcDUDR67tHIB4HvfHCj1VyeSEW8uorg==} peerDependencies: @@ -4599,6 +4711,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-expo@13.1.10: + resolution: {integrity: sha512-RIZMZ+shEf+EQV66Vb6inAoDSrSGDqO9Pn+2koHNJ1LbLapNgj9vx4qHitivyEUdehEtEjGHCi0UwvGITlsWgw==} + peerDependencies: + babel-plugin-react-compiler: ^19.0.0-beta-e993439-20250405 + peerDependenciesMeta: + babel-plugin-react-compiler: + optional: true + babel-preset-expo@13.1.4: resolution: {integrity: sha512-7MdepR2vDbDNcwDBd7zjs/MfrUiuz8Z4YAcqzc7p7O9+5I5Dc0s213OIq8HcuqkIG+OJx3XCXfvUHgeaJEIZBA==} peerDependencies: @@ -5316,40 +5436,84 @@ packages: react: 19.0.0 react-native: '*' + expo-asset@11.1.4: + resolution: {integrity: sha512-e3210sF0YHKRTCjVUOVmDAJ0Dk4vepL9RocKe36S7S+VthoCZwsBGLAM2LLvBa1SdmODF92AS0Nrcfi/1/VlbQ==} + peerDependencies: + expo: '*' + react: 19.0.0 + react-native: '*' + expo-constants@17.1.2: resolution: {integrity: sha512-zKKjQlRJ6td2+wuf+OeTd/vJmzq512oJDIAMhpcQx3PhvmHu65RnWt7tpRhDTAgqNcr8hXbDUTiXF31BWuxzWw==} peerDependencies: expo: '*' react-native: '*' + expo-constants@17.1.4: + resolution: {integrity: sha512-0gI7OAyCsiCDxdPP+tDx/WiMMRoViTdDJD5lRBzNKvN+8gZbJjG6G4HMOEEHE7ReXkhwHW0u1mP42STHJRXJiw==} + peerDependencies: + expo: '*' + react-native: '*' + expo-file-system@18.1.4: resolution: {integrity: sha512-kT4t/hRlfFFOMZxc4Zn0lEbhuFy9MDK0NbRAyTxGo7kZjWYlhXBmg2oYiaFyJnsvOgm1RVJ/QPJLO7O52qG7Nw==} peerDependencies: expo: '*' react-native: '*' + expo-file-system@18.1.8: + resolution: {integrity: sha512-1HXpunpRMGnoIw0+f2urjUNaePAvac1X9wIwVRsGJTw7A2WHBFATRuFB7jUOhZac/qK1MDm0GZsggzoRi1oteQ==} + peerDependencies: + expo: '*' + react-native: '*' + expo-font@13.1.2: resolution: {integrity: sha512-8I8nZsPsaFzSu9LmJDokKnN8wFjvzhrc26YPKcXRyTPjBv+WZA2JdlbeUfSaFE4TFBAMWIr2jpPxdxhGaGdoQw==} peerDependencies: expo: '*' react: 19.0.0 + expo-font@13.3.0: + resolution: {integrity: sha512-TdbHoxCfLWN9Uvnqsrcak+5EkDCbNIWfgtNWx3JZ6sD9WYB7gvbS+Eu5YlZ85NvCOSJ9Khmw4mFQxEi2LUPZfQ==} + peerDependencies: + expo: '*' + react: 19.0.0 + expo-keep-awake@14.1.2: resolution: {integrity: sha512-Du82WEFmwnBdodn7NDo87RpzpAHcmlgRDhoUrEirbA0CGDWlQMeVAfZPjtLt+jaRGvXSMynG3tszP1VdO9QdDw==} peerDependencies: expo: '*' react: 19.0.0 + expo-keep-awake@14.1.4: + resolution: {integrity: sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==} + peerDependencies: + expo: '*' + react: 19.0.0 + expo-linking@7.1.2: resolution: {integrity: sha512-3XJY7PWC/7g99stACBIWNlFuLeMzc5T8TYlMrZEdiSBIonFH9bXnAM430vXMlPs8SkRiRSrPsGH2ml2TovWAtg==} peerDependencies: react: 19.0.0 react-native: '*' + expo-linking@7.1.4: + resolution: {integrity: sha512-zLAbUzTB3+KGjqqLeIdhhkXayyN0qulHGjRI24X7W/0Mq/4oPbPZklKtCP0k7XOn/k4553m8OgJ7GPC03PlV9g==} + peerDependencies: + react: 19.0.0 + react-native: '*' + expo-modules-autolinking@2.1.4: resolution: {integrity: sha512-SakSztBZIHLpTMeTO3FzpiDmcTy4ytgAZ0sBEPm3fLhQHRg070XEa+b4zXZcnJ8zUOJeQ7zTdyecABaG3gtBRg==} hasBin: true + expo-modules-autolinking@2.1.9: + resolution: {integrity: sha512-54InfnWy1BR54IDZoawqdFAaF2lyLHe9J+2dZ7y91/36jVpBtAval39ZKt2IISFJZ7TVglsojl4P5BDcDGcvjQ==} + hasBin: true + + expo-modules-core@2.3.12: + resolution: {integrity: sha512-bOm83mskw1S7xuDX50DlLdx68u0doQ6BZHSU2qTv8P1/5QYeAae3pCgFLq2hoptUNeMF7W+68ShJFTOHAe68BQ==} + expo-modules-core@2.3.5: resolution: {integrity: sha512-fnLzwaMqYzjCnufWMaukWa+xQhxfp2pacmg2ZmJHpEr5JIC6WZvOZ7Y+FPyIUwcnU1h3t5rtG6bNCG3pYtuymw==} @@ -5360,6 +5524,13 @@ packages: react: 19.0.0 react-native: '*' + expo-navigation-bar@4.2.3: + resolution: {integrity: sha512-z8fi5YPX7DEks9TRxBJR/okY9cBymEplfQoCvKR3suRjz7AFZs1Gmp8/ifkr76F000kHqADnxCDl23hQpqBFHA==} + peerDependencies: + expo: '*' + react: 19.0.0 + react-native: '*' + expo-router@5.0.2-preview.4: resolution: {integrity: sha512-5ysoZ1TstQmijAsuVjPvOzPLVxRFb8uxBVzWIZep/sAv6q8sHr4t9vK4lyfL5zuLeMfOrWkZf7ONs/dIqcoDcQ==} peerDependencies: @@ -5379,17 +5550,47 @@ packages: react-native-reanimated: optional: true + expo-router@5.0.3: + resolution: {integrity: sha512-DLoaEBAMEYuMctaGh/Lx43EwnpHapRRa0Eo3Z7FxQhIjS/SzN/yTGMzLtL/GVp+WTDFC/t8clFJUdhISQyal7Q==} + peerDependencies: + '@react-navigation/drawer': ^7.3.9 + '@testing-library/jest-native': '*' + expo: '*' + expo-constants: '*' + expo-linking: '*' + react-native-reanimated: '*' + react-native-safe-area-context: '*' + react-native-screens: '*' + peerDependenciesMeta: + '@react-navigation/drawer': + optional: true + '@testing-library/jest-native': + optional: true + react-native-reanimated: + optional: true + expo-splash-screen@0.30.4: resolution: {integrity: sha512-QgRa1a8cw/vdKvynWVhpYPO9b+rbTdKA1zUuX2zlrH89+JG8cBYB7NRAuiKQx5ck9DVpK7njJugmN0EBS6DTEw==} peerDependencies: expo: '*' + expo-splash-screen@0.30.7: + resolution: {integrity: sha512-rMMJC43bSqn4cNWsbilIodnCjnWXWLWNHSEvuyhiIg2UciV7bp2PKb6AuFqMdzjG4lmdM9ANn52AQaYnAaZoAQ==} + peerDependencies: + expo: '*' + expo-status-bar@2.2.1: resolution: {integrity: sha512-bUd/oCEKzcA7OCx5HTWJhP6qh0H6FaAS4i1XOnOGKoFviP1UiwokQg3D5ExuVguTAXounzaueVvIKTefDDIPJQ==} peerDependencies: react: 19.0.0 react-native: '*' + expo-status-bar@2.2.3: + resolution: {integrity: sha512-+c8R3AESBoduunxTJ8353SqKAKpxL6DvcD8VKBuh81zzJyUUbfB4CVjr1GufSJEKsMzNPXZU+HJwXx7Xh7lx8Q==} + peerDependencies: + react: 19.0.0 + react-native: '*' + expo-system-ui@5.0.3: resolution: {integrity: sha512-LfpcY8m9F57a/0WoOot9quYmaNJHVQ1rJ0Gt4fnU+Sxm7v1BJPnKU5S++RR52dDZRdr+KnEt7SozhYjUf/PBBA==} peerDependencies: @@ -5400,6 +5601,16 @@ packages: react-native-web: optional: true + expo-system-ui@5.0.6: + resolution: {integrity: sha512-yV3sFWVYJerz/sote0n9odwtoKLwNTL0iBn4UFeHiNUQPz0jRAbZrabYFO2fj/n2jvgGNnYgJu66tFAwMVv50g==} + peerDependencies: + expo: '*' + react-native: '*' + react-native-web: '*' + peerDependenciesMeta: + react-native-web: + optional: true + expo@53.0.0-preview.7: resolution: {integrity: sha512-jeaKeV+RhmlkjZmtlCNYhzld8Po9kRkwIAknUeMOFUyLMVT3ZWzjGxgU+A5YfO2FovKvWEtMrDGJ1MJyzHroQA==} hasBin: true @@ -5417,6 +5628,23 @@ packages: react-native-webview: optional: true + expo@53.0.4: + resolution: {integrity: sha512-h3t507SrayyY/EPoghKkfrJRbo4Qw4ITsvy4Z4GRNxb5DhagUFGB8N/rrjwaBIzryELXiYyDcnrbuMU2TJ9kqw==} + hasBin: true + peerDependencies: + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: 19.0.0 + react-native: '*' + react-native-webview: '*' + peerDependenciesMeta: + '@expo/dom-webview': + optional: true + '@expo/metro-runtime': + optional: true + react-native-webview: + optional: true + exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} @@ -5987,6 +6215,10 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} + lan-network@0.1.4: + resolution: {integrity: sha512-9EzcRaFzlj3nSwcn2VOdxm30uHBBCgkX8/xzhSIlZXvQ1N1QV2cSwSrL+4bJC/WI+3k1f9SNJuPt4/F/9Au6hQ==} + hasBin: true + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -6180,6 +6412,13 @@ packages: react-native: '*' react-native-svg: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 + lucide-react-native@0.503.0: + resolution: {integrity: sha512-7KhfhLuvqSTMhZTlXxcDZK+4843c1mGlxBwd9pKf/zU4ye1l+n5iCrVo3Zz/D4uObwot0zrfxFOQEYx4M9zltg==} + peerDependencies: + react: 19.0.0 + react-native: '*' + react-native-svg: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 + lucide-react@0.476.0: resolution: {integrity: sha512-x6cLTk8gahdUPje0hSgLN1/MgiJH+Xl90Xoxy9bkPAsMPOUiyRSKR4JCDPGVCEpyqnZXH3exFWNItcvra9WzUQ==} peerDependencies: @@ -7080,6 +7319,12 @@ packages: react: 19.0.0 react-native: '*' + react-native-safe-area-context@5.4.0: + resolution: {integrity: sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA==} + peerDependencies: + react: 19.0.0 + react-native: '*' + react-native-screens@4.10.0: resolution: {integrity: sha512-Tw21NGuXm3PbiUGtZd0AnXirUixaAbPXDjNR0baBH7/WJDaDTTELLcQ7QRXuqAWbmr/EVCrKj1348ei1KFIr8A==} peerDependencies: @@ -7109,6 +7354,17 @@ packages: '@types/react': optional: true + react-native@0.79.1: + resolution: {integrity: sha512-MZQFEKyKPjqvyjuMUvH02elnmRQFzbS0yf46YOe9ktJWTZGwklsbJkRgaXJx9KA3SK6v1/QXVeCqZmrzho+1qw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^19.0.0 + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -9585,16 +9841,85 @@ snapshots: - supports-color - utf-8-validate + '@expo/cli@0.24.9': + dependencies: + '@0no-co/graphql.web': 1.1.2 + '@babel/runtime': 7.27.0 + '@expo/code-signing-certificates': 0.0.5 + '@expo/config': 11.0.7 + '@expo/config-plugins': 10.0.1 + '@expo/devcert': 1.2.0 + '@expo/env': 1.0.5 + '@expo/image-utils': 0.7.4 + '@expo/json-file': 9.1.4 + '@expo/metro-config': 0.20.11 + '@expo/osascript': 2.2.4 + '@expo/package-manager': 1.8.4 + '@expo/plist': 0.3.4 + '@expo/prebuild-config': 9.0.4 + '@expo/spawn-async': 1.7.2 + '@expo/ws-tunnel': 1.0.6 + '@expo/xcpretty': 4.3.2 + '@react-native/dev-middleware': 0.79.1 + '@urql/core': 5.1.1 + '@urql/exchange-retry': 1.3.1(@urql/core@5.1.1) + accepts: 1.3.8 + arg: 5.0.2 + better-opn: 3.0.2 + bplist-creator: 0.1.0 + bplist-parser: 0.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + compression: 1.8.0 + connect: 3.7.0 + debug: 4.4.0 + env-editor: 0.4.2 + freeport-async: 2.0.0 + getenv: 1.0.0 + glob: 10.4.5 + lan-network: 0.1.4 + minimatch: 9.0.5 + node-forge: 1.3.1 + npm-package-arg: 11.0.3 + ora: 3.4.0 + picomatch: 3.0.1 + pretty-bytes: 5.6.0 + pretty-format: 29.7.0 + progress: 2.0.3 + prompts: 2.4.2 + qrcode-terminal: 0.11.0 + require-from-string: 2.0.2 + requireg: 0.2.2 + resolve: 1.22.10 + resolve-from: 5.0.0 + resolve.exports: 2.0.3 + semver: 7.7.1 + send: 0.19.1 + slugify: 1.6.6 + source-map-support: 0.5.21 + stacktrace-parser: 0.1.11 + structured-headers: 0.4.1 + tar: 7.4.3 + terminal-link: 2.1.1 + undici: 6.21.2 + wrap-ansi: 7.0.0 + ws: 8.18.1 + transitivePeerDependencies: + - bufferutil + - graphql + - supports-color + - utf-8-validate + '@expo/code-signing-certificates@0.0.5': dependencies: node-forge: 1.3.1 nullthrows: 1.1.1 - '@expo/config-plugins@9.1.4': + '@expo/config-plugins@10.0.1': dependencies: - '@expo/config-types': 53.0.0-preview.3 - '@expo/json-file': 9.1.2 - '@expo/plist': 0.3.2 + '@expo/config-types': 53.0.3 + '@expo/json-file': 9.1.4 + '@expo/plist': 0.3.4 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.4.0 @@ -9609,15 +9934,54 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/config-types@53.0.0-preview.3': {} - - '@expo/config@11.0.3': + '@expo/config-plugins@9.1.4': dependencies: - '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 9.1.4 '@expo/config-types': 53.0.0-preview.3 '@expo/json-file': 9.1.2 - deepmerge: 4.3.1 + '@expo/plist': 0.3.2 + '@expo/sdk-runtime-versions': 1.0.0 + chalk: 4.1.2 + debug: 4.4.0 + getenv: 1.0.0 + glob: 10.4.5 + resolve-from: 5.0.0 + semver: 7.7.1 + slash: 3.0.0 + slugify: 1.6.6 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + + '@expo/config-types@53.0.0-preview.3': {} + + '@expo/config-types@53.0.3': {} + + '@expo/config@11.0.3': + dependencies: + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 9.1.4 + '@expo/config-types': 53.0.0-preview.3 + '@expo/json-file': 9.1.2 + deepmerge: 4.3.1 + getenv: 1.0.0 + glob: 10.4.5 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + resolve-workspace-root: 2.0.0 + semver: 7.7.1 + slugify: 1.6.6 + sucrase: 3.35.0 + transitivePeerDependencies: + - supports-color + + '@expo/config@11.0.7': + dependencies: + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 10.0.1 + '@expo/config-types': 53.0.3 + '@expo/json-file': 9.1.4 + deepmerge: 4.3.1 getenv: 1.0.0 glob: 10.4.5 require-from-string: 2.0.2 @@ -9647,6 +10011,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@expo/env@1.0.5': + dependencies: + chalk: 4.1.2 + debug: 4.4.0 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + getenv: 1.0.0 + transitivePeerDependencies: + - supports-color + '@expo/fingerprint@0.12.2': dependencies: '@expo/spawn-async': 1.7.2 @@ -9662,6 +10036,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@expo/fingerprint@0.12.4': + dependencies: + '@expo/spawn-async': 1.7.2 + arg: 5.0.2 + chalk: 4.1.2 + debug: 4.4.0 + find-up: 5.0.0 + getenv: 1.0.0 + minimatch: 9.0.5 + p-limit: 3.1.0 + resolve-from: 5.0.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + '@expo/image-utils@0.7.2': dependencies: '@expo/spawn-async': 1.7.2 @@ -9674,11 +10063,52 @@ snapshots: temp-dir: 2.0.0 unique-string: 2.0.0 + '@expo/image-utils@0.7.4': + dependencies: + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + getenv: 1.0.0 + jimp-compact: 0.16.1 + parse-png: 2.1.0 + resolve-from: 5.0.0 + semver: 7.7.1 + temp-dir: 2.0.0 + unique-string: 2.0.0 + '@expo/json-file@9.1.2': dependencies: '@babel/code-frame': 7.10.4 json5: 2.2.3 + '@expo/json-file@9.1.4': + dependencies: + '@babel/code-frame': 7.10.4 + json5: 2.2.3 + + '@expo/metro-config@0.20.11': + dependencies: + '@babel/core': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@expo/config': 11.0.7 + '@expo/env': 1.0.5 + '@expo/json-file': 9.1.4 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + debug: 4.4.0 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 + getenv: 1.0.0 + glob: 10.4.5 + jsc-safe-url: 0.2.4 + lightningcss: 1.27.0 + minimatch: 9.0.5 + postcss: 8.4.49 + resolve-from: 5.0.0 + transitivePeerDependencies: + - supports-color + '@expo/metro-config@0.20.4': dependencies: '@babel/core': 7.26.10 @@ -9705,11 +10135,25 @@ snapshots: dependencies: react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + '@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': + dependencies: + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + optional: true + + '@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': + dependencies: + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + '@expo/osascript@2.2.2': dependencies: '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 + '@expo/osascript@2.2.4': + dependencies: + '@expo/spawn-async': 1.7.2 + exec-async: 2.2.0 + '@expo/package-manager@1.8.2': dependencies: '@expo/json-file': 9.1.2 @@ -9719,12 +10163,27 @@ snapshots: ora: 3.4.0 resolve-workspace-root: 2.0.0 + '@expo/package-manager@1.8.4': + dependencies: + '@expo/json-file': 9.1.4 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + npm-package-arg: 11.0.3 + ora: 3.4.0 + resolve-workspace-root: 2.0.0 + '@expo/plist@0.3.2': dependencies: '@xmldom/xmldom': 0.8.10 base64-js: 1.5.1 xmlbuilder: 15.1.1 + '@expo/plist@0.3.4': + dependencies: + '@xmldom/xmldom': 0.8.10 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + '@expo/prebuild-config@9.0.0': dependencies: '@expo/config': 11.0.3 @@ -9740,6 +10199,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@expo/prebuild-config@9.0.4': + dependencies: + '@expo/config': 11.0.7 + '@expo/config-plugins': 10.0.1 + '@expo/config-types': 53.0.3 + '@expo/image-utils': 0.7.4 + '@expo/json-file': 9.1.4 + '@react-native/normalize-colors': 0.79.1 + debug: 4.4.0 + resolve-from: 5.0.0 + semver: 7.7.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + '@expo/sdk-runtime-versions@1.0.0': {} '@expo/server@0.6.2': @@ -9757,12 +10231,18 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@expo/vector-icons@14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) react: 19.0.0 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + '@expo/vector-icons@14.1.0(expo-font@13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + expo-font: 13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + '@expo/ws-tunnel@1.0.6': {} '@expo/xcpretty@4.3.2': @@ -10767,8 +11247,15 @@ snapshots: merge-options: 3.0.4 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': + dependencies: + merge-options: 3.0.4 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + '@react-native/assets-registry@0.79.0': {} + '@react-native/assets-registry@0.79.1': {} + '@react-native/babel-plugin-codegen@0.79.0(@babel/core@7.26.10)': dependencies: '@babel/traverse': 7.27.0 @@ -10777,6 +11264,14 @@ snapshots: - '@babel/core' - supports-color + '@react-native/babel-plugin-codegen@0.79.1(@babel/core@7.26.10)': + dependencies: + '@babel/traverse': 7.27.0 + '@react-native/codegen': 0.79.1(@babel/core@7.26.10) + transitivePeerDependencies: + - '@babel/core' + - supports-color + '@react-native/babel-preset@0.79.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -10827,6 +11322,56 @@ snapshots: transitivePeerDependencies: - supports-color + '@react-native/babel-preset@0.79.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/template': 7.27.0 + '@react-native/babel-plugin-codegen': 0.79.1(@babel/core@7.26.10) + babel-plugin-syntax-hermes-parser: 0.25.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) + react-refresh: 0.14.2 + transitivePeerDependencies: + - supports-color + '@react-native/codegen@0.79.0(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -10836,6 +11381,15 @@ snapshots: nullthrows: 1.1.1 yargs: 17.7.2 + '@react-native/codegen@0.79.1(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + glob: 7.2.3 + hermes-parser: 0.25.1 + invariant: 2.2.4 + nullthrows: 1.1.1 + yargs: 17.7.2 + '@react-native/community-cli-plugin@0.79.0': dependencies: '@react-native/dev-middleware': 0.79.0 @@ -10851,8 +11405,25 @@ snapshots: - supports-color - utf-8-validate + '@react-native/community-cli-plugin@0.79.1': + dependencies: + '@react-native/dev-middleware': 0.79.1 + chalk: 4.1.2 + debug: 2.6.9 + invariant: 2.2.4 + metro: 0.82.1 + metro-config: 0.82.1 + metro-core: 0.82.1 + semver: 7.7.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@react-native/debugger-frontend@0.79.0': {} + '@react-native/debugger-frontend@0.79.1': {} + '@react-native/dev-middleware@0.79.0': dependencies: '@isaacs/ttlcache': 1.4.1 @@ -10871,16 +11442,40 @@ snapshots: - supports-color - utf-8-validate + '@react-native/dev-middleware@0.79.1': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.79.1 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 + connect: 3.7.0 + debug: 2.6.9 + invariant: 2.2.4 + nullthrows: 1.1.1 + open: 7.4.2 + serve-static: 1.16.2 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@react-native/gradle-plugin@0.79.0': {} + '@react-native/gradle-plugin@0.79.1': {} + '@react-native/js-polyfills@0.79.0': {} + '@react-native/js-polyfills@0.79.1': {} + '@react-native/normalize-colors@0.74.89': {} '@react-native/normalize-colors@0.77.2': {} '@react-native/normalize-colors@0.79.0': {} + '@react-native/normalize-colors@0.79.1': {} + '@react-native/virtualized-lists@0.79.0(@types/react@19.0.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: invariant: 2.2.4 @@ -10890,6 +11485,15 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@react-native/virtualized-lists@0.79.1(@types/react@19.0.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@react-navigation/bottom-tabs@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) @@ -10902,6 +11506,18 @@ snapshots: transitivePeerDependencies: - '@react-native-masked-view/masked-view' + '@react-navigation/bottom-tabs@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + color: 4.2.3 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + '@react-navigation/core@7.8.5(react@19.0.0)': dependencies: '@react-navigation/routers': 7.3.5 @@ -10921,6 +11537,14 @@ snapshots: react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements@2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + color: 4.2.3 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native-stack@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) @@ -10933,6 +11557,18 @@ snapshots: transitivePeerDependencies: - '@react-native-masked-view/masked-view' + '@react-navigation/native-stack@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + warn-once: 0.1.1 + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + '@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: '@react-navigation/core': 7.8.5(react@19.0.0) @@ -10943,6 +11579,16 @@ snapshots: react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) use-latest-callback: 0.2.3(react@19.0.0) + '@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + dependencies: + '@react-navigation/core': 7.8.5(react@19.0.0) + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 + nanoid: 3.3.8 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + use-latest-callback: 0.2.3(react@19.0.0) + '@react-navigation/routers@7.3.5': dependencies: nanoid: 3.3.8 @@ -11792,6 +12438,33 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) + babel-preset-expo@13.1.10(@babel/core@7.26.10): + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) + '@babel/preset-react': 7.26.3(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + '@react-native/babel-preset': 0.79.1(@babel/core@7.26.10) + babel-plugin-react-native-web: 0.19.13 + babel-plugin-syntax-hermes-parser: 0.25.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) + debug: 4.4.0 + react-refresh: 0.14.2 + resolve-from: 5.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + babel-preset-expo@13.1.4(@babel/core@7.26.10): dependencies: '@babel/helper-module-imports': 7.25.9 @@ -12496,45 +13169,89 @@ snapshots: expect-type@1.2.1: {} - expo-asset@11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-asset@11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@expo/image-utils': 0.7.2 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) react: 19.0.0 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): + expo-asset@11.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + '@expo/image-utils': 0.7.4 + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: '@expo/config': 11.0.3 '@expo/env': 1.0.3 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) transitivePeerDependencies: - supports-color - expo-file-system@18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): + expo-constants@17.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@expo/config': 11.0.7 + '@expo/env': 1.0.5 + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo-constants@17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): + dependencies: + '@expo/config': 11.0.7 + '@expo/env': 1.0.5 + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo-file-system@18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): + dependencies: + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) web-streams-polyfill: 3.3.3 - expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-file-system@18.1.8(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): + dependencies: + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + + expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + dependencies: + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + fontfaceobserver: 2.3.0 + react: 19.0.0 + + expo-font@13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) fontfaceobserver: 2.3.0 react: 19.0.0 - expo-keep-awake@14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + expo-keep-awake@14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): + dependencies: + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react: 19.0.0 + + expo-keep-awake@14.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: - expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) invariant: 2.2.4 react: 19.0.0 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) @@ -12542,6 +13259,16 @@ snapshots: - expo - supports-color + expo-linking@7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + expo-constants: 17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + invariant: 2.2.4 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + transitivePeerDependencies: + - expo + - supports-color + expo-modules-autolinking@2.1.4: dependencies: '@expo/spawn-async': 1.7.2 @@ -12552,22 +13279,48 @@ snapshots: require-from-string: 2.0.2 resolve-from: 5.0.0 + expo-modules-autolinking@2.1.9: + dependencies: + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + commander: 7.2.0 + find-up: 5.0.0 + glob: 10.4.5 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + + expo-modules-core@2.3.12: + dependencies: + invariant: 2.2.4 + expo-modules-core@2.3.5: dependencies: invariant: 2.2.4 - expo-navigation-bar@4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-navigation-bar@4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@react-native/normalize-colors': 0.79.0 debug: 4.4.0 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - ? expo-router@5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-navigation-bar@4.2.3(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + '@react-native/normalize-colors': 0.79.1 + debug: 4.4.0 + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-edge-to-edge: 1.6.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color + + ? expo-router@5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) : dependencies: '@expo/metro-runtime': 5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) '@expo/server': 0.6.2 @@ -12576,9 +13329,9 @@ snapshots: '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@react-navigation/native-stack': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) client-only: 0.0.1 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - expo-linking: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-linking: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) invariant: 2.2.4 react-fast-compare: 3.2.2 react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) @@ -12597,10 +13350,47 @@ snapshots: - react-native - supports-color - expo-splash-screen@0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): + ? expo-router@5.0.3(@types/react@19.0.10)(expo-constants@17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + : dependencies: + '@expo/metro-runtime': 5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + '@expo/server': 0.6.2 + '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) + '@react-navigation/bottom-tabs': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native-stack': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + client-only: 0.0.1 + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-linking: 7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + invariant: 2.2.4 + react-fast-compare: 3.2.2 + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-screens: 4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + schema-utils: 4.3.0 + semver: 7.6.3 + server-only: 0.0.1 + shallowequal: 1.1.0 + optionalDependencies: + react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + - '@types/react' + - react + - react-native + - supports-color + + expo-splash-screen@0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): dependencies: '@expo/prebuild-config': 9.0.0 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo-splash-screen@0.30.7(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): + dependencies: + '@expo/prebuild-config': 9.0.4 + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color @@ -12611,18 +13401,36 @@ snapshots: react-native-edge-to-edge: 1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-system-ui@5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): + expo-status-bar@2.2.3(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-edge-to-edge: 1.6.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + + expo-system-ui@5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: '@react-native/normalize-colors': 0.79.0 debug: 4.4.0 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) optionalDependencies: react-native-web: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + expo-system-ui@5.0.6(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): + dependencies: + '@react-native/normalize-colors': 0.79.1 + debug: 4.4.0 + expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + optionalDependencies: + react-native-web: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color + + expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.27.0 '@expo/cli': 0.24.2 @@ -12630,13 +13438,13 @@ snapshots: '@expo/config-plugins': 9.1.4 '@expo/fingerprint': 0.12.2 '@expo/metro-config': 0.20.4 - '@expo/vector-icons': 14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@expo/vector-icons': 14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) babel-preset-expo: 13.1.4(@babel/core@7.26.10) - expo-asset: 11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - expo-file-system: 18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-keep-awake: 14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-asset: 11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-file-system: 18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-keep-awake: 14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) expo-modules-autolinking: 2.1.4 expo-modules-core: 2.3.5 react: 19.0.0 @@ -12645,7 +13453,38 @@ snapshots: web-streams-polyfill: 3.3.3 whatwg-url-without-unicode: 8.0.0-3 optionalDependencies: - '@expo/metro-runtime': 5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + '@expo/metro-runtime': 5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-react-compiler + - bufferutil + - graphql + - supports-color + - utf-8-validate + + expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.27.0 + '@expo/cli': 0.24.9 + '@expo/config': 11.0.7 + '@expo/config-plugins': 10.0.1 + '@expo/fingerprint': 0.12.4 + '@expo/metro-config': 0.20.11 + '@expo/vector-icons': 14.1.0(expo-font@13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + babel-preset-expo: 13.1.10(@babel/core@7.26.10) + expo-asset: 11.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + expo-constants: 17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-file-system: 18.1.8(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) + expo-font: 13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-keep-awake: 14.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) + expo-modules-autolinking: 2.1.9 + expo-modules-core: 2.3.12 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-edge-to-edge: 1.6.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + whatwg-url-without-unicode: 8.0.0-3 + optionalDependencies: + '@expo/metro-runtime': 5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) transitivePeerDependencies: - '@babel/core' - babel-plugin-react-compiler @@ -13367,6 +14206,8 @@ snapshots: klona@2.0.6: {} + lan-network@0.1.4: {} + leven@3.1.0: {} lighthouse-logger@1.4.2: @@ -13512,6 +14353,12 @@ snapshots: react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) react-native-svg: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + lucide-react-native@0.503.0(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + lucide-react@0.476.0(react@19.0.0): dependencies: react: 19.0.0 @@ -14250,11 +15097,25 @@ snapshots: napi-build-utils@2.0.0: {} - nativewind@4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + nativewind@4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: comment-json: 4.2.5 debug: 4.4.0 - react-native-css-interop: 0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + react-native-css-interop: 0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + tailwindcss: 3.4.17 + transitivePeerDependencies: + - react + - react-native + - react-native-reanimated + - react-native-safe-area-context + - react-native-svg + - supports-color + + nativewind@4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + dependencies: + comment-json: 4.2.5 + debug: 4.4.0 + react-native-css-interop: 0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) tailwindcss: 3.4.17 transitivePeerDependencies: - react @@ -14720,7 +15581,7 @@ snapshots: react-is@18.3.1: {} - react-native-css-interop@0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + react-native-css-interop@0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: '@babel/helper-module-imports': 7.25.9 '@babel/traverse': 7.27.0 @@ -14733,21 +15594,48 @@ snapshots: semver: 7.7.1 tailwindcss: 3.4.17 optionalDependencies: - react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color + react-native-css-interop@0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + debug: 4.4.0 + lightningcss: 1.29.3 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + semver: 7.7.1 + tailwindcss: 3.4.17 + optionalDependencies: + react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color + react-native-edge-to-edge@1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-edge-to-edge@1.6.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge@1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge@1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/core': 7.26.10 @@ -14768,11 +15656,36 @@ snapshots: transitivePeerDependencies: - supports-color + react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) + convert-source-map: 2.0.0 + invariant: 2.2.4 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + transitivePeerDependencies: + - supports-color + react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 @@ -14780,6 +15693,13 @@ snapshots: react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 + react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-freeze: 1.0.4(react@19.0.0) + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + warn-once: 0.1.1 + react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: css-select: 5.1.0 @@ -14788,6 +15708,14 @@ snapshots: react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 + react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + dependencies: + css-select: 5.1.0 + css-tree: 1.1.3 + react: 19.0.0 + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + warn-once: 0.1.1 + react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.27.0 @@ -14851,6 +15779,54 @@ snapshots: - supports-color - utf-8-validate + react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.79.1 + '@react-native/codegen': 0.79.1(@babel/core@7.26.10) + '@react-native/community-cli-plugin': 0.79.1 + '@react-native/gradle-plugin': 0.79.1 + '@react-native/js-polyfills': 0.79.1 + '@react-native/normalize-colors': 0.79.1 + '@react-native/virtualized-lists': 0.79.1(@types/react@19.0.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.26.10) + babel-plugin-syntax-hermes-parser: 0.25.1 + base64-js: 1.5.1 + chalk: 4.1.2 + commander: 12.1.0 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + memoize-one: 5.2.1 + metro-runtime: 0.82.1 + metro-source-map: 0.82.1 + nullthrows: 1.1.1 + pretty-format: 29.7.0 + promise: 8.3.0 + react: 19.0.0 + react-devtools-core: 6.1.1 + react-refresh: 0.14.2 + regenerator-runtime: 0.13.11 + scheduler: 0.25.0 + semver: 7.7.1 + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + ws: 6.2.3 + yargs: 17.7.2 + optionalDependencies: + '@types/react': 19.0.10 + transitivePeerDependencies: + - '@babel/core' + - '@react-native-community/cli' + - bufferutil + - supports-color + - utf-8-validate + react-refresh@0.14.2: {} react-refresh@0.17.0: {} From 14be9bbe9f2f7fbef25d44744fae886559212e1b Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Thu, 1 May 2025 20:58:49 +0200 Subject: [PATCH 086/106] fix toggle-group example, use RN 0.79.1 --- .../components/ui/toggle-group.tsx | 4 +- apps/expo-nativewind/package.json | 4 +- apps/expo-stylesheet/package.json | 20 +- apps/nextjs-nativewind/package.json | 2 +- packages/accordion/package.json | 2 +- packages/alert-dialog/package.json | 2 +- packages/aspect-ratio/package.json | 2 +- packages/avatar/package.json | 2 +- packages/checkbox/package.json | 2 +- packages/collapsible/package.json | 2 +- packages/context-menu/package.json | 2 +- packages/core/package.json | 2 +- packages/dialog/package.json | 2 +- packages/dropdown-menu/package.json | 2 +- packages/hooks/package.json | 2 +- packages/hover-card/package.json | 2 +- packages/label/package.json | 2 +- packages/menubar/package.json | 2 +- packages/navigation-menu/package.json | 2 +- packages/popover/package.json | 2 +- packages/portal/package.json | 2 +- packages/progress/package.json | 2 +- packages/radio-group/package.json | 2 +- packages/select/package.json | 2 +- packages/separator/package.json | 2 +- packages/slider/package.json | 2 +- packages/slot/package.json | 2 +- packages/switch/package.json | 2 +- packages/table/package.json | 2 +- packages/tabs/package.json | 2 +- packages/toast/package.json | 2 +- packages/toggle-group/package.json | 2 +- packages/toggle/package.json | 2 +- packages/toolbar/package.json | 2 +- packages/tooltip/package.json | 2 +- packages/types/package.json | 2 +- packages/utils/package.json | 2 +- pnpm-lock.yaml | 1275 ++--------------- 38 files changed, 194 insertions(+), 1177 deletions(-) diff --git a/apps/expo-nativewind/components/ui/toggle-group.tsx b/apps/expo-nativewind/components/ui/toggle-group.tsx index 8bffbf8e..ff7f87b1 100644 --- a/apps/expo-nativewind/components/ui/toggle-group.tsx +++ b/apps/expo-nativewind/components/ui/toggle-group.tsx @@ -49,7 +49,7 @@ const ToggleGroupItem = ({ =12'} - '@expo/osascript@2.2.4': resolution: {integrity: sha512-Q+Oyj+1pdRiHHpev9YjqfMZzByFH8UhKvSszxa0acTveijjDhQgWrq4e9T/cchBHi0GWZpGczWyiyJkk1wM1dg==} engines: {node: '>=12'} - '@expo/package-manager@1.8.2': - resolution: {integrity: sha512-Cn/E8dMYQ4V1/rUNUvq7zxcypby/XMMw6Sb6mJc0sm9EANCO6L8QKWXud5Ns/0032z1yHwG8CjGI29f7vvRliA==} - '@expo/package-manager@1.8.4': resolution: {integrity: sha512-8H8tLga/NS3iS7QaX/NneRPqbObnHvVCfMCo0ShudreOFmvmgqhYjRlkZTRstSyFqefai8ONaT4VmnLHneRYYg==} - '@expo/plist@0.3.2': - resolution: {integrity: sha512-wJ4ifg8AIQN3xEDrAJ7mrd0vSsFP7bFuuJtcXBoE4ORrt3AE+0mSQAAXEjb7eKMsGaxiSZwHqrkqYAzv5Ypidw==} - '@expo/plist@0.3.4': resolution: {integrity: sha512-MhBLaUJNe9FQDDU2xhSNS4SAolr6K2wuyi4+A79vYuXLkAoICsbTwcGEQJN5jPY6D9izO/jsXh5k0h+mIWQMdw==} - '@expo/prebuild-config@9.0.0': - resolution: {integrity: sha512-39OPxvEhzU5JsXkbzg8mE4fueWHySqVQ2n5Ay2RBWfaqpGKeMv/vJ63cZYYEyb60Dd4al3FrHStGkdJ0W/Jh+A==} - '@expo/prebuild-config@9.0.4': resolution: {integrity: sha512-YQwTLvHjgqtVM3ZNdMP79510Opnv+TVWTOf3gmi9fKOfWgpR0YiE19aRF7YrQ+qh22Mt1tBBFVRsT3gsBq/Ytw==} @@ -3859,55 +3812,26 @@ packages: peerDependencies: react-native: ^0.0.0-0 || >=0.65 <1.0 - '@react-native/assets-registry@0.79.0': - resolution: {integrity: sha512-Rwvpu3A05lM1HVlX4klH4UR52JbQPDKc8gi2mst2REZL1KeVgJRJxPPw8d8euVlYcq/s8XI1Ol827JaRtSZBTA==} - engines: {node: '>=18'} - '@react-native/assets-registry@0.79.1': resolution: {integrity: sha512-q5BwZtL0YbaJRgofl8qrD9BNdGJkecTJNYG8VFOVQYXPTBa3ZSooip1aj0wrjoa0HloKx/Hmx5UMvuhfEsjn8A==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.79.0': - resolution: {integrity: sha512-7IkObXF0dl5Dv1vGO5rBAB+yx26kqDntqrDvurO1ZjB11oeKiWOuDoWMnouaPZGhUbnswkYwMRLXCpYhDTG4bA==} - engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.79.1': resolution: {integrity: sha512-y3VyrPO/ej8Uhjk2IM+vBZok8cEyMl3DwJ3o/tsgiIVROITL+MWdk6M6iQOHRvwRWAgLe5jLSR3Zv5IIdDVY4A==} engines: {node: '>=18'} - '@react-native/babel-preset@0.79.0': - resolution: {integrity: sha512-OcizKxBRxte1kZo932G4tpgDgKnDMErie0EkbVK83WaQAvnL0Dd1GWPoYjFmlKtJwh7PM2RZqTsrwqsksrmtRg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - '@react-native/babel-preset@0.79.1': resolution: {integrity: sha512-vS6Os9jFIeQ679VEwW2/h0a5uPYtX9E6ALYTW+VH4Knm+HNzdXC69Z1C5Cgia36ljiGEVCKtsBg5yjDYwliaeg==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.79.0': - resolution: {integrity: sha512-D8bFlD0HH9SMUI00svdg64hEvLbu4ETeWQDlmEP8WmNbuILjwoLFqbnBmlGn69Tot0DM1PuBd1l1ooIzs8sU7w==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - '@react-native/codegen@0.79.1': resolution: {integrity: sha512-cTVXfCICkmUU6UvUpnLP4BE82O14JRuVz42cg/A19oasTaZmzHl0+uIDzt2cZEbt/N2sJ/EZnZL61qqpwbNXWQ==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/community-cli-plugin@0.79.0': - resolution: {integrity: sha512-pl+aSXxGj3ug80FpMDrArjxUbJWY2ibWiSP3MLKX+Xk7An2GUmFFjCzNVSbs0jzWv8814EG2oI60/GH2RXwE4g==} - engines: {node: '>=18'} - peerDependencies: - '@react-native-community/cli': '*' - peerDependenciesMeta: - '@react-native-community/cli': - optional: true - '@react-native/community-cli-plugin@0.79.1': resolution: {integrity: sha512-hqCMQrMRi19G7yxEsYwV9A0MHB6Hri7B5dytRD7kU5vtz0Lzg1fZYYvmS0x9OdWJWPntmHA8xiijwM+4cT8cpQ==} engines: {node: '>=18'} @@ -3917,34 +3841,18 @@ packages: '@react-native-community/cli': optional: true - '@react-native/debugger-frontend@0.79.0': - resolution: {integrity: sha512-chwKEWAmQMkOKZWwBra+utquuJ/2uFqh+ZgZbJfNX+U0YsBx6AQ3dVbfAaXW3bSLYEJyf9Wb3Opsal4fmcD9Ww==} - engines: {node: '>=18'} - '@react-native/debugger-frontend@0.79.1': resolution: {integrity: sha512-IgbQM/djzBhkkjzIT/b36zwkc4UMxZLTKgRVJrSEjuwtOPmgfh/1F5m3OUitbMd4/e06VgN0vPLyBzToj1kiwA==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.79.0': - resolution: {integrity: sha512-8Mh5L8zJXis2qhgkfXnWMbSmcvb07wrbxQe8KIgIO7C1rS97idg7BBtoPEtmARsaQgmbSGu/wdE7UWFkGYp0OQ==} - engines: {node: '>=18'} - '@react-native/dev-middleware@0.79.1': resolution: {integrity: sha512-xegUHwi6h8wOLIl/9ImZoIVVwzecE+ENGTELIrD2PsseBbtdRMKzZ8A1LTBjPPt3IjHPH6103JcSPwgepP6zFA==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.79.0': - resolution: {integrity: sha512-c+/qKnmTx3kf8xZesp2BkZ9pAQVSnEPZziQUwviSJaq9jm8tKb/B8fyGG8yIuw/ZTKyGprD+ByzUSzJmCpC/Ow==} - engines: {node: '>=18'} - '@react-native/gradle-plugin@0.79.1': resolution: {integrity: sha512-vfoNcOBig/+R7g3eqHkBSbSVkk0NMPzyXE5QY0V+/0flRa3kDZUHP2fr8ygoY/4rxbi05wPME2/dTEuoYcpnjg==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.79.0': - resolution: {integrity: sha512-+8lk/zP90JC9xZBGhI8TPqqR1Y5dYXwXvfhXygr/LlHoo+H8TeQxcPrXWdT+PWOJl6Gf7dbCOGh9Std8J7CSQA==} - engines: {node: '>=18'} - '@react-native/js-polyfills@0.79.1': resolution: {integrity: sha512-P8j11kdD+ehL5jqHSCM1BOl4SnJ+3rvGPpsagAqyngU6WSausISO7YFufltrWA7kdpHdnAL2HfJJ62szTRGShw==} engines: {node: '>=18'} @@ -3955,23 +3863,9 @@ packages: '@react-native/normalize-colors@0.77.2': resolution: {integrity: sha512-knKStQKX4KM8GkieeayotcSTO7I7PIZxwI71nhK/zBeRPqhDTJMNJQh5TnZJ63fO1Y+EZclWkRIKEj+aFRsssw==} - '@react-native/normalize-colors@0.79.0': - resolution: {integrity: sha512-RmM7Dgb69a4qwdguKR+8MhT0u1IAKa/s0uy8/7JP9b/fm8zjUV9HctMgRgIpZTOELsowEyQodyTnhHQf4HPX0A==} - '@react-native/normalize-colors@0.79.1': resolution: {integrity: sha512-Fj12xKyihZhrFH45ruqECd2JVx9lyYe+dyxO7MYgkqY6UENsSS3JKcfzjSNBZLW7NXts6JkbaqLQPwaHmPF7QA==} - '@react-native/virtualized-lists@0.79.0': - resolution: {integrity: sha512-tCT1sHSI1O5KSclDwNfnkLTLe3cgiyYWjIlmNxWJHqhCCz017HGOS/oH0zs0ZgxYwN7xCzTkqY330XMDo+yj2g==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^19.0.0 - react: 19.0.0 - react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true - '@react-native/virtualized-lists@0.79.1': resolution: {integrity: sha512-v1KeqJeVJXjc2mewjKQYSay7D7+VSacxryejuuVXlPE9E9wVbzMPCfPjbIS8C9nMC7a4rsRFilX7RVKYkeZaGg==} engines: {node: '>=18'} @@ -4719,14 +4613,6 @@ packages: babel-plugin-react-compiler: optional: true - babel-preset-expo@13.1.4: - resolution: {integrity: sha512-7MdepR2vDbDNcwDBd7zjs/MfrUiuz8Z4YAcqzc7p7O9+5I5Dc0s213OIq8HcuqkIG+OJx3XCXfvUHgeaJEIZBA==} - peerDependencies: - babel-plugin-react-compiler: ^19.0.0-beta-e993439-20250405 - peerDependenciesMeta: - babel-plugin-react-compiler: - optional: true - babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5188,10 +5074,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} - defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -5417,10 +5299,6 @@ packages: exec-async@2.2.0: resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -5429,13 +5307,6 @@ packages: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} - expo-asset@11.1.2: - resolution: {integrity: sha512-9eozXyFtpKltzcr7P21uVz0FvGXD3omOzAN/u6NCAw0b0RqkwKMQbwF706Qzx52Bj0ogE7xNfXlLvdIKq/Caig==} - peerDependencies: - expo: '*' - react: 19.0.0 - react-native: '*' - expo-asset@11.1.4: resolution: {integrity: sha512-e3210sF0YHKRTCjVUOVmDAJ0Dk4vepL9RocKe36S7S+VthoCZwsBGLAM2LLvBa1SdmODF92AS0Nrcfi/1/VlbQ==} peerDependencies: @@ -5443,70 +5314,36 @@ packages: react: 19.0.0 react-native: '*' - expo-constants@17.1.2: - resolution: {integrity: sha512-zKKjQlRJ6td2+wuf+OeTd/vJmzq512oJDIAMhpcQx3PhvmHu65RnWt7tpRhDTAgqNcr8hXbDUTiXF31BWuxzWw==} - peerDependencies: - expo: '*' - react-native: '*' - expo-constants@17.1.4: resolution: {integrity: sha512-0gI7OAyCsiCDxdPP+tDx/WiMMRoViTdDJD5lRBzNKvN+8gZbJjG6G4HMOEEHE7ReXkhwHW0u1mP42STHJRXJiw==} peerDependencies: expo: '*' react-native: '*' - expo-file-system@18.1.4: - resolution: {integrity: sha512-kT4t/hRlfFFOMZxc4Zn0lEbhuFy9MDK0NbRAyTxGo7kZjWYlhXBmg2oYiaFyJnsvOgm1RVJ/QPJLO7O52qG7Nw==} - peerDependencies: - expo: '*' - react-native: '*' - expo-file-system@18.1.8: resolution: {integrity: sha512-1HXpunpRMGnoIw0+f2urjUNaePAvac1X9wIwVRsGJTw7A2WHBFATRuFB7jUOhZac/qK1MDm0GZsggzoRi1oteQ==} peerDependencies: expo: '*' react-native: '*' - expo-font@13.1.2: - resolution: {integrity: sha512-8I8nZsPsaFzSu9LmJDokKnN8wFjvzhrc26YPKcXRyTPjBv+WZA2JdlbeUfSaFE4TFBAMWIr2jpPxdxhGaGdoQw==} - peerDependencies: - expo: '*' - react: 19.0.0 - expo-font@13.3.0: resolution: {integrity: sha512-TdbHoxCfLWN9Uvnqsrcak+5EkDCbNIWfgtNWx3JZ6sD9WYB7gvbS+Eu5YlZ85NvCOSJ9Khmw4mFQxEi2LUPZfQ==} peerDependencies: expo: '*' react: 19.0.0 - expo-keep-awake@14.1.2: - resolution: {integrity: sha512-Du82WEFmwnBdodn7NDo87RpzpAHcmlgRDhoUrEirbA0CGDWlQMeVAfZPjtLt+jaRGvXSMynG3tszP1VdO9QdDw==} - peerDependencies: - expo: '*' - react: 19.0.0 - expo-keep-awake@14.1.4: resolution: {integrity: sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA==} peerDependencies: expo: '*' react: 19.0.0 - expo-linking@7.1.2: - resolution: {integrity: sha512-3XJY7PWC/7g99stACBIWNlFuLeMzc5T8TYlMrZEdiSBIonFH9bXnAM430vXMlPs8SkRiRSrPsGH2ml2TovWAtg==} - peerDependencies: - react: 19.0.0 - react-native: '*' - expo-linking@7.1.4: resolution: {integrity: sha512-zLAbUzTB3+KGjqqLeIdhhkXayyN0qulHGjRI24X7W/0Mq/4oPbPZklKtCP0k7XOn/k4553m8OgJ7GPC03PlV9g==} peerDependencies: react: 19.0.0 react-native: '*' - expo-modules-autolinking@2.1.4: - resolution: {integrity: sha512-SakSztBZIHLpTMeTO3FzpiDmcTy4ytgAZ0sBEPm3fLhQHRg070XEa+b4zXZcnJ8zUOJeQ7zTdyecABaG3gtBRg==} - hasBin: true - expo-modules-autolinking@2.1.9: resolution: {integrity: sha512-54InfnWy1BR54IDZoawqdFAaF2lyLHe9J+2dZ7y91/36jVpBtAval39ZKt2IISFJZ7TVglsojl4P5BDcDGcvjQ==} hasBin: true @@ -5514,16 +5351,6 @@ packages: expo-modules-core@2.3.12: resolution: {integrity: sha512-bOm83mskw1S7xuDX50DlLdx68u0doQ6BZHSU2qTv8P1/5QYeAae3pCgFLq2hoptUNeMF7W+68ShJFTOHAe68BQ==} - expo-modules-core@2.3.5: - resolution: {integrity: sha512-fnLzwaMqYzjCnufWMaukWa+xQhxfp2pacmg2ZmJHpEr5JIC6WZvOZ7Y+FPyIUwcnU1h3t5rtG6bNCG3pYtuymw==} - - expo-navigation-bar@4.1.3: - resolution: {integrity: sha512-8gn7Dpvn4QgkkEwwrCEfCX7AGp57mPXPBzhqkt3vPUOQBU3NnQCkZ3iV4qfAvKIjC0TBT5gbcAx+uQVYYWn3Yg==} - peerDependencies: - expo: '*' - react: 19.0.0 - react-native: '*' - expo-navigation-bar@4.2.3: resolution: {integrity: sha512-z8fi5YPX7DEks9TRxBJR/okY9cBymEplfQoCvKR3suRjz7AFZs1Gmp8/ifkr76F000kHqADnxCDl23hQpqBFHA==} peerDependencies: @@ -5531,25 +5358,6 @@ packages: react: 19.0.0 react-native: '*' - expo-router@5.0.2-preview.4: - resolution: {integrity: sha512-5ysoZ1TstQmijAsuVjPvOzPLVxRFb8uxBVzWIZep/sAv6q8sHr4t9vK4lyfL5zuLeMfOrWkZf7ONs/dIqcoDcQ==} - peerDependencies: - '@react-navigation/drawer': ^7.3.9 - '@testing-library/jest-native': '*' - expo: '*' - expo-constants: '*' - expo-linking: '*' - react-native-reanimated: '*' - react-native-safe-area-context: '*' - react-native-screens: '*' - peerDependenciesMeta: - '@react-navigation/drawer': - optional: true - '@testing-library/jest-native': - optional: true - react-native-reanimated: - optional: true - expo-router@5.0.3: resolution: {integrity: sha512-DLoaEBAMEYuMctaGh/Lx43EwnpHapRRa0Eo3Z7FxQhIjS/SzN/yTGMzLtL/GVp+WTDFC/t8clFJUdhISQyal7Q==} peerDependencies: @@ -5569,38 +5377,17 @@ packages: react-native-reanimated: optional: true - expo-splash-screen@0.30.4: - resolution: {integrity: sha512-QgRa1a8cw/vdKvynWVhpYPO9b+rbTdKA1zUuX2zlrH89+JG8cBYB7NRAuiKQx5ck9DVpK7njJugmN0EBS6DTEw==} - peerDependencies: - expo: '*' - expo-splash-screen@0.30.7: resolution: {integrity: sha512-rMMJC43bSqn4cNWsbilIodnCjnWXWLWNHSEvuyhiIg2UciV7bp2PKb6AuFqMdzjG4lmdM9ANn52AQaYnAaZoAQ==} peerDependencies: expo: '*' - expo-status-bar@2.2.1: - resolution: {integrity: sha512-bUd/oCEKzcA7OCx5HTWJhP6qh0H6FaAS4i1XOnOGKoFviP1UiwokQg3D5ExuVguTAXounzaueVvIKTefDDIPJQ==} - peerDependencies: - react: 19.0.0 - react-native: '*' - expo-status-bar@2.2.3: resolution: {integrity: sha512-+c8R3AESBoduunxTJ8353SqKAKpxL6DvcD8VKBuh81zzJyUUbfB4CVjr1GufSJEKsMzNPXZU+HJwXx7Xh7lx8Q==} peerDependencies: react: 19.0.0 react-native: '*' - expo-system-ui@5.0.3: - resolution: {integrity: sha512-LfpcY8m9F57a/0WoOot9quYmaNJHVQ1rJ0Gt4fnU+Sxm7v1BJPnKU5S++RR52dDZRdr+KnEt7SozhYjUf/PBBA==} - peerDependencies: - expo: '*' - react-native: '*' - react-native-web: '*' - peerDependenciesMeta: - react-native-web: - optional: true - expo-system-ui@5.0.6: resolution: {integrity: sha512-yV3sFWVYJerz/sote0n9odwtoKLwNTL0iBn4UFeHiNUQPz0jRAbZrabYFO2fj/n2jvgGNnYgJu66tFAwMVv50g==} peerDependencies: @@ -5611,23 +5398,6 @@ packages: react-native-web: optional: true - expo@53.0.0-preview.7: - resolution: {integrity: sha512-jeaKeV+RhmlkjZmtlCNYhzld8Po9kRkwIAknUeMOFUyLMVT3ZWzjGxgU+A5YfO2FovKvWEtMrDGJ1MJyzHroQA==} - hasBin: true - peerDependencies: - '@expo/dom-webview': '*' - '@expo/metro-runtime': '*' - react: 19.0.0 - react-native: '*' - react-native-webview: '*' - peerDependenciesMeta: - '@expo/dom-webview': - optional: true - '@expo/metro-runtime': - optional: true - react-native-webview: - optional: true - expo@53.0.4: resolution: {integrity: sha512-h3t507SrayyY/EPoghKkfrJRbo4Qw4ITsvy4Z4GRNxb5DhagUFGB8N/rrjwaBIzryELXiYyDcnrbuMU2TJ9kqw==} hasBin: true @@ -5780,10 +5550,6 @@ packages: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-tsconfig@4.10.0: resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} @@ -5942,10 +5708,6 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - hyphenate-style-name@1.1.0: resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} @@ -5991,17 +5753,9 @@ packages: inline-style-prefixer@7.0.1: resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==} - internal-ip@6.1.0: - resolution: {integrity: sha512-Cs1iaqrl3z3KJ2ejWyfKkMcuv9NTEJWXtUBSGVc+Eg9BjBLS0k11CsOkf/p5quOkVhhRuq9zwZ/PuJpPUuDP9Q==} - engines: {node: '>=10'} - invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -6077,10 +5831,6 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -6720,10 +6470,6 @@ packages: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} engines: {node: '>=4'} - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} @@ -6890,10 +6636,6 @@ packages: resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} engines: {node: ^16.14.0 || >=18.0.0} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -6940,10 +6682,6 @@ packages: resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} engines: {node: '>=4'} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - oniguruma-parser@0.11.1: resolution: {integrity: sha512-fX6SirDOsTUNqSUOnL3fDtD3R7PCXNWGA3WWPvv9egEfTWkNXzRLO/9CC1WkDusP6HyWRZig06kHeYPcw3mlqQ==} @@ -7313,14 +7051,15 @@ packages: react: 19.0.0 react-native: '*' - react-native-safe-area-context@5.3.0: - resolution: {integrity: sha512-glV9bwuozTjf/JDBIBm+ITnukHNaUT3nucgdeADwjtHsfEN3RL5UO6nq99vvdWv5j/O9yCZBvFncM1BBQ+UvpQ==} + react-native-reanimated@3.17.5: + resolution: {integrity: sha512-SxBK7wQfJ4UoWoJqQnmIC7ZjuNgVb9rcY5Xc67upXAFKftWg0rnkknTw6vgwnjRcvYThrjzUVti66XoZdDJGtw==} peerDependencies: + '@babel/core': ^7.0.0-0 react: 19.0.0 react-native: '*' - react-native-safe-area-context@5.4.0: - resolution: {integrity: sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA==} + react-native-safe-area-context@5.3.0: + resolution: {integrity: sha512-glV9bwuozTjf/JDBIBm+ITnukHNaUT3nucgdeADwjtHsfEN3RL5UO6nq99vvdWv5j/O9yCZBvFncM1BBQ+UvpQ==} peerDependencies: react: 19.0.0 react-native: '*' @@ -7343,17 +7082,6 @@ packages: react: 19.0.0 react-dom: ^18.0.0 || ^19.0.0 - react-native@0.79.0: - resolution: {integrity: sha512-fLG/zl/YF30TWTmp2bbo3flHSFGe4WTyVkb7/wJnMEC39jjXVSCxfDtvSUVavhCc03fA/RTkWWvlmg7NEJk7Vg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@types/react': ^19.0.0 - react: 19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react-native@0.79.1: resolution: {integrity: sha512-MZQFEKyKPjqvyjuMUvH02elnmRQFzbS0yf46YOe9ktJWTZGwklsbJkRgaXJx9KA3SK6v1/QXVeCqZmrzho+1qw==} engines: {node: '>=18'} @@ -7855,10 +7583,6 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -8586,10 +8310,6 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} @@ -9772,75 +9492,6 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@expo/cli@0.24.2': - dependencies: - '@0no-co/graphql.web': 1.1.2 - '@babel/runtime': 7.27.0 - '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 11.0.3 - '@expo/config-plugins': 9.1.4 - '@expo/devcert': 1.2.0 - '@expo/env': 1.0.3 - '@expo/image-utils': 0.7.2 - '@expo/json-file': 9.1.2 - '@expo/metro-config': 0.20.4 - '@expo/osascript': 2.2.2 - '@expo/package-manager': 1.8.2 - '@expo/plist': 0.3.2 - '@expo/prebuild-config': 9.0.0 - '@expo/spawn-async': 1.7.2 - '@expo/ws-tunnel': 1.0.6 - '@expo/xcpretty': 4.3.2 - '@react-native/dev-middleware': 0.79.0 - '@urql/core': 5.1.1 - '@urql/exchange-retry': 1.3.1(@urql/core@5.1.1) - accepts: 1.3.8 - arg: 5.0.2 - better-opn: 3.0.2 - bplist-creator: 0.1.0 - bplist-parser: 0.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - compression: 1.8.0 - connect: 3.7.0 - debug: 4.4.0 - env-editor: 0.4.2 - freeport-async: 2.0.0 - getenv: 1.0.0 - glob: 10.4.5 - internal-ip: 6.1.0 - minimatch: 9.0.5 - node-forge: 1.3.1 - npm-package-arg: 11.0.3 - ora: 3.4.0 - picomatch: 3.0.1 - pretty-bytes: 5.6.0 - pretty-format: 29.7.0 - progress: 2.0.3 - prompts: 2.4.2 - qrcode-terminal: 0.11.0 - require-from-string: 2.0.2 - requireg: 0.2.2 - resolve: 1.22.10 - resolve-from: 5.0.0 - resolve.exports: 2.0.3 - semver: 7.7.1 - send: 0.19.1 - slugify: 1.6.6 - source-map-support: 0.5.21 - stacktrace-parser: 0.1.11 - structured-headers: 0.4.1 - tar: 7.4.3 - terminal-link: 2.1.1 - undici: 6.21.2 - wrap-ansi: 7.0.0 - ws: 8.18.1 - transitivePeerDependencies: - - bufferutil - - graphql - - supports-color - - utf-8-validate - '@expo/cli@0.24.9': dependencies: '@0no-co/graphql.web': 1.1.2 @@ -9934,47 +9585,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/config-plugins@9.1.4': - dependencies: - '@expo/config-types': 53.0.0-preview.3 - '@expo/json-file': 9.1.2 - '@expo/plist': 0.3.2 - '@expo/sdk-runtime-versions': 1.0.0 - chalk: 4.1.2 - debug: 4.4.0 - getenv: 1.0.0 - glob: 10.4.5 - resolve-from: 5.0.0 - semver: 7.7.1 - slash: 3.0.0 - slugify: 1.6.6 - xcode: 3.0.1 - xml2js: 0.6.0 - transitivePeerDependencies: - - supports-color - - '@expo/config-types@53.0.0-preview.3': {} - '@expo/config-types@53.0.3': {} - '@expo/config@11.0.3': - dependencies: - '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 9.1.4 - '@expo/config-types': 53.0.0-preview.3 - '@expo/json-file': 9.1.2 - deepmerge: 4.3.1 - getenv: 1.0.0 - glob: 10.4.5 - require-from-string: 2.0.2 - resolve-from: 5.0.0 - resolve-workspace-root: 2.0.0 - semver: 7.7.1 - slugify: 1.6.6 - sucrase: 3.35.0 - transitivePeerDependencies: - - supports-color - '@expo/config@11.0.7': dependencies: '@babel/code-frame': 7.10.4 @@ -10001,16 +9613,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/env@1.0.3': - dependencies: - chalk: 4.1.2 - debug: 4.4.0 - dotenv: 16.4.7 - dotenv-expand: 11.0.7 - getenv: 1.0.0 - transitivePeerDependencies: - - supports-color - '@expo/env@1.0.5': dependencies: chalk: 4.1.2 @@ -10021,21 +9623,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/fingerprint@0.12.2': - dependencies: - '@expo/spawn-async': 1.7.2 - arg: 5.0.2 - chalk: 4.1.2 - debug: 4.4.0 - find-up: 5.0.0 - getenv: 1.0.0 - minimatch: 9.0.5 - p-limit: 3.1.0 - resolve-from: 5.0.0 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - '@expo/fingerprint@0.12.4': dependencies: '@expo/spawn-async': 1.7.2 @@ -10051,18 +9638,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/image-utils@0.7.2': - dependencies: - '@expo/spawn-async': 1.7.2 - chalk: 4.1.2 - getenv: 1.0.0 - jimp-compact: 0.16.1 - parse-png: 2.1.0 - resolve-from: 5.0.0 - semver: 7.7.1 - temp-dir: 2.0.0 - unique-string: 2.0.0 - '@expo/image-utils@0.7.4': dependencies: '@expo/spawn-async': 1.7.2 @@ -10075,11 +9650,6 @@ snapshots: temp-dir: 2.0.0 unique-string: 2.0.0 - '@expo/json-file@9.1.2': - dependencies: - '@babel/code-frame': 7.10.4 - json5: 2.2.3 - '@expo/json-file@9.1.4': dependencies: '@babel/code-frame': 7.10.4 @@ -10109,60 +9679,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/metro-config@0.20.4': - dependencies: - '@babel/core': 7.26.10 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@expo/config': 11.0.3 - '@expo/env': 1.0.3 - '@expo/json-file': 9.1.2 - '@expo/spawn-async': 1.7.2 - chalk: 4.1.2 - debug: 4.4.0 - getenv: 1.0.0 - glob: 10.4.5 - jsc-safe-url: 0.2.4 - lightningcss: 1.27.0 - minimatch: 9.0.5 - postcss: 8.4.49 - resolve-from: 5.0.0 - transitivePeerDependencies: - - supports-color - - '@expo/metro-runtime@5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': - dependencies: - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - - '@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': - dependencies: - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - optional: true - '@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': dependencies: react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - '@expo/osascript@2.2.2': - dependencies: - '@expo/spawn-async': 1.7.2 - exec-async: 2.2.0 - '@expo/osascript@2.2.4': dependencies: '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 - '@expo/package-manager@1.8.2': - dependencies: - '@expo/json-file': 9.1.2 - '@expo/spawn-async': 1.7.2 - chalk: 4.1.2 - npm-package-arg: 11.0.3 - ora: 3.4.0 - resolve-workspace-root: 2.0.0 - '@expo/package-manager@1.8.4': dependencies: '@expo/json-file': 9.1.4 @@ -10172,33 +9697,12 @@ snapshots: ora: 3.4.0 resolve-workspace-root: 2.0.0 - '@expo/plist@0.3.2': - dependencies: - '@xmldom/xmldom': 0.8.10 - base64-js: 1.5.1 - xmlbuilder: 15.1.1 - '@expo/plist@0.3.4': dependencies: '@xmldom/xmldom': 0.8.10 base64-js: 1.5.1 xmlbuilder: 15.1.1 - '@expo/prebuild-config@9.0.0': - dependencies: - '@expo/config': 11.0.3 - '@expo/config-plugins': 9.1.4 - '@expo/config-types': 53.0.0-preview.3 - '@expo/image-utils': 0.7.2 - '@expo/json-file': 9.1.2 - '@react-native/normalize-colors': 0.79.0 - debug: 4.4.0 - resolve-from: 5.0.0 - semver: 7.7.1 - xml2js: 0.6.0 - transitivePeerDependencies: - - supports-color - '@expo/prebuild-config@9.0.4': dependencies: '@expo/config': 11.0.7 @@ -10231,12 +9735,6 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': - dependencies: - expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - '@expo/vector-icons@14.1.0(expo-font@13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: expo-font: 13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) @@ -11242,28 +10740,13 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': - dependencies: - merge-options: 3.0.4 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - '@react-native-async-storage/async-storage@2.1.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))': dependencies: merge-options: 3.0.4 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - '@react-native/assets-registry@0.79.0': {} - '@react-native/assets-registry@0.79.1': {} - '@react-native/babel-plugin-codegen@0.79.0(@babel/core@7.26.10)': - dependencies: - '@babel/traverse': 7.27.0 - '@react-native/codegen': 0.79.0(@babel/core@7.26.10) - transitivePeerDependencies: - - '@babel/core' - - supports-color - '@react-native/babel-plugin-codegen@0.79.1(@babel/core@7.26.10)': dependencies: '@babel/traverse': 7.27.0 @@ -11272,56 +10755,6 @@ snapshots: - '@babel/core' - supports-color - '@react-native/babel-preset@0.79.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) - '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) - '@babel/template': 7.27.0 - '@react-native/babel-plugin-codegen': 0.79.0(@babel/core@7.26.10) - babel-plugin-syntax-hermes-parser: 0.25.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) - react-refresh: 0.14.2 - transitivePeerDependencies: - - supports-color - '@react-native/babel-preset@0.79.1(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -11372,15 +10805,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@react-native/codegen@0.79.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - glob: 7.2.3 - hermes-parser: 0.25.1 - invariant: 2.2.4 - nullthrows: 1.1.1 - yargs: 17.7.2 - '@react-native/codegen@0.79.1(@babel/core@7.26.10)': dependencies: '@babel/core': 7.26.10 @@ -11390,58 +10814,23 @@ snapshots: nullthrows: 1.1.1 yargs: 17.7.2 - '@react-native/community-cli-plugin@0.79.0': - dependencies: - '@react-native/dev-middleware': 0.79.0 - chalk: 4.1.2 - debug: 2.6.9 - invariant: 2.2.4 - metro: 0.82.1 - metro-config: 0.82.1 - metro-core: 0.82.1 - semver: 7.7.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@react-native/community-cli-plugin@0.79.1': dependencies: - '@react-native/dev-middleware': 0.79.1 - chalk: 4.1.2 - debug: 2.6.9 - invariant: 2.2.4 - metro: 0.82.1 - metro-config: 0.82.1 - metro-core: 0.82.1 - semver: 7.7.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@react-native/debugger-frontend@0.79.0': {} - - '@react-native/debugger-frontend@0.79.1': {} - - '@react-native/dev-middleware@0.79.0': - dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.79.0 - chrome-launcher: 0.15.2 - chromium-edge-launcher: 0.2.0 - connect: 3.7.0 + '@react-native/dev-middleware': 0.79.1 + chalk: 4.1.2 debug: 2.6.9 invariant: 2.2.4 - nullthrows: 1.1.1 - open: 7.4.2 - serve-static: 1.16.2 - ws: 6.2.3 + metro: 0.82.1 + metro-config: 0.82.1 + metro-core: 0.82.1 + semver: 7.7.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + '@react-native/debugger-frontend@0.79.1': {} + '@react-native/dev-middleware@0.79.1': dependencies: '@isaacs/ttlcache': 1.4.1 @@ -11460,31 +10849,16 @@ snapshots: - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.79.0': {} - '@react-native/gradle-plugin@0.79.1': {} - '@react-native/js-polyfills@0.79.0': {} - '@react-native/js-polyfills@0.79.1': {} '@react-native/normalize-colors@0.74.89': {} '@react-native/normalize-colors@0.77.2': {} - '@react-native/normalize-colors@0.79.0': {} - '@react-native/normalize-colors@0.79.1': {} - '@react-native/virtualized-lists@0.79.0(@types/react@19.0.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': - dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - optionalDependencies: - '@types/react': 19.0.10 - '@react-native/virtualized-lists@0.79.1(@types/react@19.0.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: invariant: 2.2.4 @@ -11494,26 +10868,14 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 - '@react-navigation/bottom-tabs@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': - dependencies: - '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - color: 4.2.3 - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - '@react-native-masked-view/masked-view' - - '@react-navigation/bottom-tabs@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/bottom-tabs@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 react: 19.0.0 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: 4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - '@react-native-masked-view/masked-view' @@ -11529,56 +10891,26 @@ snapshots: use-latest-callback: 0.2.3(react@19.0.0) use-sync-external-store: 1.5.0(react@19.0.0) - '@react-navigation/elements@2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': - dependencies: - '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - color: 4.2.3 - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - - '@react-navigation/elements@2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/elements@2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) color: 4.2.3 react: 19.0.0 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': + '@react-navigation/native-stack@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: - '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - warn-once: 0.1.1 - transitivePeerDependencies: - - '@react-native-masked-view/masked-view' - - '@react-navigation/native-stack@7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': - dependencies: - '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/elements': 2.3.8(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: 4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) warn-once: 0.1.1 transitivePeerDependencies: - '@react-native-masked-view/masked-view' - '@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': - dependencies: - '@react-navigation/core': 7.8.5(react@19.0.0) - escape-string-regexp: 4.0.0 - fast-deep-equal: 3.1.3 - nanoid: 3.3.8 - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - use-latest-callback: 0.2.3(react@19.0.0) - '@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)': dependencies: '@react-navigation/core': 7.8.5(react@19.0.0) @@ -12465,33 +11797,6 @@ snapshots: - '@babel/core' - supports-color - babel-preset-expo@13.1.4(@babel/core@7.26.10): - dependencies: - '@babel/helper-module-imports': 7.25.9 - '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) - '@babel/preset-react': 7.26.3(@babel/core@7.26.10) - '@babel/preset-typescript': 7.27.0(@babel/core@7.26.10) - '@react-native/babel-preset': 0.79.0(@babel/core@7.26.10) - babel-plugin-react-native-web: 0.19.13 - babel-plugin-syntax-hermes-parser: 0.25.1 - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.10) - debug: 4.4.0 - react-refresh: 0.14.2 - resolve-from: 5.0.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color - babel-preset-jest@29.6.3(@babel/core@7.26.10): dependencies: '@babel/core': 7.26.10 @@ -12937,10 +12242,6 @@ snapshots: deepmerge@4.3.1: {} - default-gateway@6.0.3: - dependencies: - execa: 5.1.1 - defaults@1.0.4: dependencies: clone: 1.0.4 @@ -13153,32 +12454,10 @@ snapshots: exec-async@2.2.0: {} - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - expand-template@2.0.3: {} expect-type@1.2.1: {} - expo-asset@11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - '@expo/image-utils': 0.7.2 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - transitivePeerDependencies: - - supports-color - expo-asset@11.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@expo/image-utils': 0.7.4 @@ -13189,24 +12468,6 @@ snapshots: transitivePeerDependencies: - supports-color - expo-constants@17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): - dependencies: - '@expo/config': 11.0.3 - '@expo/env': 1.0.3 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - transitivePeerDependencies: - - supports-color - - expo-constants@17.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): - dependencies: - '@expo/config': 11.0.7 - '@expo/env': 1.0.5 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - transitivePeerDependencies: - - supports-color - expo-constants@17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: '@expo/config': 11.0.7 @@ -13216,49 +12477,22 @@ snapshots: transitivePeerDependencies: - supports-color - expo-file-system@18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): - dependencies: - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - web-streams-polyfill: 3.3.3 - expo-file-system@18.1.8(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): - dependencies: - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - fontfaceobserver: 2.3.0 - react: 19.0.0 - expo-font@13.3.0(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) fontfaceobserver: 2.3.0 react: 19.0.0 - expo-keep-awake@14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): - dependencies: - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react: 19.0.0 - expo-keep-awake@14.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react: 19.0.0 - expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - invariant: 2.2.4 - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - transitivePeerDependencies: - - expo - - supports-color - expo-linking@7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: expo-constants: 17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) @@ -13269,16 +12503,6 @@ snapshots: - expo - supports-color - expo-modules-autolinking@2.1.4: - dependencies: - '@expo/spawn-async': 1.7.2 - chalk: 4.1.2 - commander: 7.2.0 - find-up: 5.0.0 - glob: 10.4.5 - require-from-string: 2.0.2 - resolve-from: 5.0.0 - expo-modules-autolinking@2.1.9: dependencies: '@expo/spawn-async': 1.7.2 @@ -13293,21 +12517,6 @@ snapshots: dependencies: invariant: 2.2.4 - expo-modules-core@2.3.5: - dependencies: - invariant: 2.2.4 - - expo-navigation-bar@4.1.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - '@react-native/normalize-colors': 0.79.0 - debug: 4.4.0 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - supports-color - expo-navigation-bar@4.2.3(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@react-native/normalize-colors': 0.79.1 @@ -13320,44 +12529,14 @@ snapshots: transitivePeerDependencies: - supports-color - ? expo-router@5.0.2-preview.4(@types/react@19.0.10)(expo-constants@17.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - : dependencies: - '@expo/metro-runtime': 5.0.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - '@expo/server': 0.6.2 - '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) - '@react-navigation/bottom-tabs': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native': 7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - client-only: 0.0.1 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - expo-linking: 7.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - invariant: 2.2.4 - react-fast-compare: 3.2.2 - react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-safe-area-context: 5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-screens: 4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - schema-utils: 4.3.0 - semver: 7.6.3 - server-only: 0.0.1 - shallowequal: 1.1.0 - optionalDependencies: - react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - '@react-native-masked-view/masked-view' - - '@types/react' - - react - - react-native - - supports-color - - ? expo-router@5.0.3(@types/react@19.0.10)(expo-constants@17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + ? expo-router@5.0.3(@types/react@19.0.10)(expo-constants@17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(expo-linking@7.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) : dependencies: '@expo/metro-runtime': 5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) '@expo/server': 0.6.2 '@radix-ui/react-slot': 1.2.0(@types/react@19.0.10)(react@19.0.0) - '@react-navigation/bottom-tabs': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/bottom-tabs': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) '@react-navigation/native': 7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - '@react-navigation/native-stack': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + '@react-navigation/native-stack': 7.3.10(@react-navigation/native@7.1.6(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) client-only: 0.0.1 expo: 53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) expo-constants: 17.1.4(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) @@ -13365,7 +12544,7 @@ snapshots: invariant: 2.2.4 react-fast-compare: 3.2.2 react-native-is-edge-to-edge: 1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-screens: 4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) schema-utils: 4.3.0 semver: 7.6.3 @@ -13380,13 +12559,6 @@ snapshots: - react-native - supports-color - expo-splash-screen@0.30.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): - dependencies: - '@expo/prebuild-config': 9.0.0 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - supports-color - expo-splash-screen@0.30.7(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)): dependencies: '@expo/prebuild-config': 9.0.4 @@ -13394,13 +12566,6 @@ snapshots: transitivePeerDependencies: - supports-color - expo-status-bar@2.2.1(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-edge-to-edge: 1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-status-bar@2.2.3(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 @@ -13408,17 +12573,6 @@ snapshots: react-native-edge-to-edge: 1.6.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-is-edge-to-edge: 1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-system-ui@5.0.3(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): - dependencies: - '@react-native/normalize-colors': 0.79.0 - debug: 4.4.0 - expo: 53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - optionalDependencies: - react-native-web: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - transitivePeerDependencies: - - supports-color - expo-system-ui@5.0.6(expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-web@0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)): dependencies: '@react-native/normalize-colors': 0.79.1 @@ -13430,38 +12584,6 @@ snapshots: transitivePeerDependencies: - supports-color - expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - '@babel/runtime': 7.27.0 - '@expo/cli': 0.24.2 - '@expo/config': 11.0.3 - '@expo/config-plugins': 9.1.4 - '@expo/fingerprint': 0.12.2 - '@expo/metro-config': 0.20.4 - '@expo/vector-icons': 14.1.0(expo-font@13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - babel-preset-expo: 13.1.4(@babel/core@7.26.10) - expo-asset: 11.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - expo-constants: 17.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - expo-file-system: 18.1.4(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - expo-font: 13.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-keep-awake: 14.1.2(expo@53.0.0-preview.7(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react@19.0.0) - expo-modules-autolinking: 2.1.4 - expo-modules-core: 2.3.5 - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-edge-to-edge: 1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - web-streams-polyfill: 3.3.3 - whatwg-url-without-unicode: 8.0.0-3 - optionalDependencies: - '@expo/metro-runtime': 5.0.4(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)) - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-react-compiler - - bufferutil - - graphql - - supports-color - - utf-8-validate - expo@53.0.4(@babel/core@7.26.10)(@expo/metro-runtime@5.0.4(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0)))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.27.0 @@ -13630,8 +12752,6 @@ snapshots: get-package-type@0.1.0: {} - get-stream@6.0.1: {} - get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -13931,8 +13051,6 @@ snapshots: transitivePeerDependencies: - supports-color - human-signals@2.1.0: {} - hyphenate-style-name@1.1.0: {} i18next@23.16.8: @@ -13973,17 +13091,10 @@ snapshots: dependencies: css-in-js-utils: 3.1.0 - internal-ip@6.1.0: - dependencies: - default-gateway: 6.0.3 - ipaddr.js: 1.9.1 - invariant@2.2.4: dependencies: loose-envify: 1.4.0 - ipaddr.js@1.9.1: {} - iron-webcrypto@1.2.1: {} is-alphabetical@2.0.1: {} @@ -14035,8 +13146,6 @@ snapshots: is-potential-custom-element-name@1.0.1: {} - is-stream@2.0.1: {} - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -14347,11 +13456,11 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react-native@0.482.0(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + lucide-react-native@0.482.0(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-svg: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) lucide-react-native@0.503.0(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: @@ -15051,8 +14160,6 @@ snapshots: mimic-fn@1.2.0: {} - mimic-fn@2.1.0: {} - mimic-response@3.1.0: {} minimatch@3.1.2: @@ -15097,11 +14204,11 @@ snapshots: napi-build-utils@2.0.0: {} - nativewind@4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + nativewind@4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: comment-json: 4.2.5 debug: 4.4.0 - react-native-css-interop: 0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + react-native-css-interop: 0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) tailwindcss: 3.4.17 transitivePeerDependencies: - react @@ -15111,11 +14218,11 @@ snapshots: - react-native-svg - supports-color - nativewind@4.1.23(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + nativewind@4.1.23(react-native-reanimated@3.17.5(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: comment-json: 4.2.5 debug: 4.4.0 - react-native-css-interop: 0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) + react-native-css-interop: 0.1.22(react-native-reanimated@3.17.5(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17) tailwindcss: 3.4.17 transitivePeerDependencies: - react @@ -15201,10 +14308,6 @@ snapshots: semver: 7.7.1 validate-npm-package-name: 5.0.1 - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -15247,10 +14350,6 @@ snapshots: dependencies: mimic-fn: 1.2.0 - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - oniguruma-parser@0.11.1: {} oniguruma-to-es@2.3.0: @@ -15581,7 +14680,7 @@ snapshots: react-is@18.3.1: {} - react-native-css-interop@0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + react-native-css-interop@0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: '@babel/helper-module-imports': 7.25.9 '@babel/traverse': 7.27.0 @@ -15589,16 +14688,17 @@ snapshots: debug: 4.4.0 lightningcss: 1.29.3 react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) semver: 7.7.1 tailwindcss: 3.4.17 optionalDependencies: - react-native-svg: 15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-safe-area-context: 5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-svg: 15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-css-interop@0.1.22(react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): + react-native-css-interop@0.1.22(react-native-reanimated@3.17.5(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0)(tailwindcss@3.4.17): dependencies: '@babel/helper-module-imports': 7.25.9 '@babel/traverse': 7.27.0 @@ -15607,36 +14707,25 @@ snapshots: lightningcss: 1.29.3 react: 19.0.0 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated: 3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native-reanimated: 3.17.5(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) semver: 7.7.1 tailwindcss: 3.4.17 optionalDependencies: - react-native-safe-area-context: 5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) react-native-svg: 15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-edge-to-edge@1.6.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-edge-to-edge@1.6.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge@1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge@1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) @@ -15651,12 +14740,12 @@ snapshots: convert-source-map: 2.0.0 invariant: 2.2.4 react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-is-edge-to-edge: 1.1.7(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) + react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) + react-native-is-edge-to-edge: 1.1.7(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) transitivePeerDependencies: - supports-color - react-native-reanimated@3.17.3(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-reanimated@3.17.5(@babel/core@7.26.10)(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) @@ -15676,23 +14765,11 @@ snapshots: transitivePeerDependencies: - supports-color - react-native-safe-area-context@5.3.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - - react-native-safe-area-context@5.4.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): + react-native-safe-area-context@5.3.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - react-native-screens@4.10.0(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - react: 19.0.0 - react-freeze: 1.0.4(react@19.0.0) - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - warn-once: 0.1.1 - react-native-screens@4.10.0(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 @@ -15700,14 +14777,6 @@ snapshots: react-native: 0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) warn-once: 0.1.1 - react-native-svg@15.11.2(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): - dependencies: - css-select: 5.1.0 - css-tree: 1.1.3 - react: 19.0.0 - react-native: 0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0) - warn-once: 0.1.1 - react-native-svg@15.11.2(react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0): dependencies: css-select: 5.1.0 @@ -15731,54 +14800,6 @@ snapshots: transitivePeerDependencies: - encoding - react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0): - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.79.0 - '@react-native/codegen': 0.79.0(@babel/core@7.26.10) - '@react-native/community-cli-plugin': 0.79.0 - '@react-native/gradle-plugin': 0.79.0 - '@react-native/js-polyfills': 0.79.0 - '@react-native/normalize-colors': 0.79.0 - '@react-native/virtualized-lists': 0.79.0(@types/react@19.0.10)(react-native@0.79.0(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0))(react@19.0.0) - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.26.10) - babel-plugin-syntax-hermes-parser: 0.25.1 - base64-js: 1.5.1 - chalk: 4.1.2 - commander: 12.1.0 - event-target-shim: 5.0.1 - flow-enums-runtime: 0.0.6 - glob: 7.2.3 - invariant: 2.2.4 - jest-environment-node: 29.7.0 - memoize-one: 5.2.1 - metro-runtime: 0.82.1 - metro-source-map: 0.82.1 - nullthrows: 1.1.1 - pretty-format: 29.7.0 - promise: 8.3.0 - react: 19.0.0 - react-devtools-core: 6.1.1 - react-refresh: 0.14.2 - regenerator-runtime: 0.13.11 - scheduler: 0.25.0 - semver: 7.7.1 - stacktrace-parser: 0.1.11 - whatwg-fetch: 3.6.20 - ws: 6.2.3 - yargs: 17.7.2 - optionalDependencies: - '@types/react': 19.0.10 - transitivePeerDependencies: - - '@babel/core' - - '@react-native-community/cli' - - bufferutil - - supports-color - - utf-8-validate - react-native@0.79.1(@babel/core@7.26.10)(@types/react@19.0.10)(react@19.0.0): dependencies: '@jest/create-cache-key-function': 29.7.0 @@ -16455,8 +15476,6 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strip-final-newline@2.0.0: {} - strip-json-comments@2.0.1: {} structured-headers@0.4.1: {} @@ -17151,8 +16170,6 @@ snapshots: web-namespaces@2.0.1: {} - web-streams-polyfill@3.3.3: {} - web-vitals@4.2.4: {} webidl-conversions@3.0.1: {} From 6a3bdfb84bf8b4da2d0b83f0b53132595200df8d Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Thu, 1 May 2025 21:13:21 +0200 Subject: [PATCH 087/106] fix typo --- packages/toggle-group/src/native/toggle-group-native.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/toggle-group/src/native/toggle-group-native.tsx b/packages/toggle-group/src/native/toggle-group-native.tsx index 09ea6bcc..44133ffe 100644 --- a/packages/toggle-group/src/native/toggle-group-native.tsx +++ b/packages/toggle-group/src/native/toggle-group-native.tsx @@ -25,7 +25,7 @@ const useRootContext = () => { const useItemContext = () => { throw new Error( - 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/accordion` or `@rn-primitives/accordion/native`' + 'Cannot access the native useItemContext on the web. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/native`' ); return {} as ItemContextReturnType; }; From 26603d83c236e76b7ce9a159dc336c68c4e40172 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Fri, 2 May 2025 14:07:19 -0400 Subject: [PATCH 088/106] fix(toggle-group): type errors + suggestions + organize imports --- .../src/components/ui/toggle-group.tsx | 9 ++- .../src/components/ui/toggle-group.tsx | 7 +-- packages/toggle-group/src/base-types.ts | 8 +-- packages/toggle-group/src/index.ts | 4 +- packages/toggle-group/src/native/index.ts | 4 +- .../src/native/toggle-group-native.native.tsx | 55 ++++++++++--------- .../src/native/toggle-group-native.tsx | 7 +-- .../src/universal/toggle-group.tsx | 8 ++- .../src/universal/toggle-group.web.tsx | 6 +- packages/toggle-group/src/universal/types.ts | 2 +- .../src/utils/get-default-value.ts | 7 +-- .../toggle-group/src/utils/get-is-selected.ts | 4 +- .../src/utils/get-new-multiple-value.ts | 7 +-- .../src/utils/get-new-single-value.ts | 4 +- packages/toggle-group/src/web/index.ts | 4 +- .../toggle-group/src/web/toggle-group-web.tsx | 6 +- .../src/web/toggle-group-web.web.tsx | 16 +++--- packages/toggle-group/src/web/types.ts | 6 +- packages/toggle/src/base-types.ts | 4 +- packages/toggle/src/universal/types.ts | 4 +- 20 files changed, 88 insertions(+), 84 deletions(-) diff --git a/apps/nextjs-no-rn/src/components/ui/toggle-group.tsx b/apps/nextjs-no-rn/src/components/ui/toggle-group.tsx index 88858b86..495eb411 100644 --- a/apps/nextjs-no-rn/src/components/ui/toggle-group.tsx +++ b/apps/nextjs-no-rn/src/components/ui/toggle-group.tsx @@ -1,13 +1,12 @@ 'use client'; import { VariantProps } from 'class-variance-authority'; -import type { LucideIcon } from 'lucide-react-native'; import * as React from 'react'; import { toggleTextVariants, toggleVariants } from '~/components/ui/toggle'; import { TextClassContext } from '~/components/ui/text'; import * as ToggleGroupPrimitive from '@rn-primitives/toggle-group'; import { cn } from '~/lib/utils'; -import { Bold, Italic, Underline } from 'lucide-react'; +import { Bold, Italic, type LucideIcon, type LucideProps, Underline } from 'lucide-react'; const ToggleGroupContext = React.createContext | null>(null); @@ -17,7 +16,7 @@ const ToggleGroup = ({ size, children, ...props -}: React.ComponentPropsWithoutRef & +}: React.ComponentProps & VariantProps) => ( & +}: React.ComponentProps & VariantProps) => { const context = useToggleGroupContext(); const { value } = ToggleGroupPrimitive.useRootContext(); @@ -89,7 +88,7 @@ function ToggleGroupIcon({ className, icon: Icon, ...props -}: React.ComponentPropsWithoutRef & { +}: LucideProps & { icon: LucideIcon; }) { const textClass = React.useContext(TextClassContext); diff --git a/apps/vite-tanstack-router/src/components/ui/toggle-group.tsx b/apps/vite-tanstack-router/src/components/ui/toggle-group.tsx index c2e32e8f..48edf302 100644 --- a/apps/vite-tanstack-router/src/components/ui/toggle-group.tsx +++ b/apps/vite-tanstack-router/src/components/ui/toggle-group.tsx @@ -1,13 +1,10 @@ -'use client'; - import type { VariantProps } from 'class-variance-authority'; -import type { LucideIcon } from 'lucide-react-native'; import * as React from 'react'; import { toggleTextVariants, toggleVariants } from '@/components/ui/toggle'; import { TextClassContext } from '@/components/ui/text'; import * as ToggleGroupPrimitive from '@rn-primitives/toggle-group'; import { cn } from '@/lib/utils'; -import { Bold, Italic, Underline } from 'lucide-react'; +import { Bold, Italic, type LucideIcon, type LucideProps, Underline } from 'lucide-react'; const ToggleGroupContext = React.createContext | null>(null); @@ -89,7 +86,7 @@ function ToggleGroupIcon({ className, icon: Icon, ...props -}: React.ComponentPropsWithoutRef & { +}: LucideProps & { icon: LucideIcon; }) { const textClass = React.useContext(TextClassContext); diff --git a/packages/toggle-group/src/base-types.ts b/packages/toggle-group/src/base-types.ts index 0a75f827..a80759ab 100644 --- a/packages/toggle-group/src/base-types.ts +++ b/packages/toggle-group/src/base-types.ts @@ -1,11 +1,11 @@ -import type { RootProps as RootPropsWeb, ItemProps as ItemPropsWeb } from './web/types'; +import type { ItemProps as ItemPropsWeb, RootProps as RootPropsWeb } from './web/types'; type BaseRootProps = Pick< RootPropsWeb, - 'type' | 'value' | 'defaultValue' | 'onValueChange' | 'disabled' | 'asChild' + 'type' | 'value' | 'defaultValue' | 'onValueChange' | 'disabled' >; -type BaseItemProps = Pick; +type BaseItemProps = Pick; type BaseRootContext = Pick< RootPropsWeb, @@ -14,4 +14,4 @@ type BaseRootContext = Pick< type BaseItemContext = Pick | null; -export type { BaseRootProps, BaseItemProps, BaseRootContext, BaseItemContext }; +export type { BaseItemContext, BaseItemProps, BaseRootContext, BaseRootProps }; diff --git a/packages/toggle-group/src/index.ts b/packages/toggle-group/src/index.ts index c1d31190..6ede432f 100644 --- a/packages/toggle-group/src/index.ts +++ b/packages/toggle-group/src/index.ts @@ -1,3 +1,5 @@ export { Item, Root, useItemContext, useRootContext } from './universal/toggle-group'; -export type { RootProps, ItemProps } from './universal/types'; +export type { ItemProps, RootProps } from './universal/types'; export { getIsSelected } from './utils/get-is-selected'; +export { getNewMultipleValue } from './utils/get-new-multiple-value'; +export { getNewSingleValue } from './utils/get-new-single-value'; diff --git a/packages/toggle-group/src/native/index.ts b/packages/toggle-group/src/native/index.ts index 504f5ec2..315bf0b7 100644 --- a/packages/toggle-group/src/native/index.ts +++ b/packages/toggle-group/src/native/index.ts @@ -1,2 +1,2 @@ -export { Root, Item, useItemContext, useRootContext } from './toggle-group-native'; -export type { RootProps, ItemProps } from './types'; +export { Item, Root, useItemContext, useRootContext } from './toggle-group-native'; +export type { ItemProps, RootProps } from './types'; diff --git a/packages/toggle-group/src/native/toggle-group-native.native.tsx b/packages/toggle-group/src/native/toggle-group-native.native.tsx index 5f1531a7..514fba1d 100644 --- a/packages/toggle-group/src/native/toggle-group-native.native.tsx +++ b/packages/toggle-group/src/native/toggle-group-native.native.tsx @@ -1,22 +1,22 @@ -import * as React from 'react'; -import { View, Pressable } from '@rn-primitives/core/dist/native'; +import { Pressable, View } from '@rn-primitives/core/dist/native'; import { useControllableState } from '@rn-primitives/hooks'; -import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; -import type { ItemProps, RootProps } from './types'; +import * as React from 'react'; import type { GestureResponderEvent } from 'react-native'; +import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; import { getIsSelected } from '../utils/get-is-selected'; import { getNewMultipleValue } from '../utils/get-new-multiple-value'; import { getNewSingleValue } from '../utils/get-new-single-value'; +import type { ItemProps, RootProps } from './types'; -const Root = ({ +function Root({ type, disabled = false, value: valueProp, onValueChange: onValueChangeProps, defaultValue, ...viewProps -}: RootProps) => { +}: RootProps) { const [rootValue = type === 'multiple' ? [] : undefined, onRootValueChange] = useControllableState<(string | undefined) | string[]>({ prop: valueProp, @@ -36,46 +36,49 @@ const Root = ({ ); -}; +} -const Item = ({ +function Item({ asChild, value: itemValue, disabled: disabledProp = false, onPress: onPressProp, ...props -}: ItemProps) => { +}: ItemProps) { const { type, disabled, value, onValueChange } = useRootContext(); - function onPress(ev: GestureResponderEvent) { - if (disabled || disabledProp) return; - if (type === 'single') { - onValueChange?.(getNewSingleValue(value, itemValue) as string[] & string); - } - if (type === 'multiple') { - onValueChange?.(getNewMultipleValue(value, itemValue) as string[] & string); - } - if (typeof onPressProp === 'function') { - onPressProp(ev); - } - } + const onPress = React.useCallback( + (ev: GestureResponderEvent) => { + if (type === 'single') { + onValueChange?.(getNewSingleValue(value, itemValue) as string[] & string); + } + if (type === 'multiple') { + onValueChange?.(getNewMultipleValue(value, itemValue) as string[] & string); + } + if (typeof onPressProp === 'function') { + onPressProp(ev); + } + }, + [type, value, itemValue, onValueChange, onPressProp] + ); - const isChecked = type === 'single' ? getIsSelected(value, itemValue) : undefined; - const isSelected = type === 'multiple' ? getIsSelected(value, itemValue) : undefined; + const isSelected = React.useMemo(() => { + return getIsSelected(value, itemValue); + }, [value, itemValue]); return ( ); -}; +} export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/native/toggle-group-native.tsx b/packages/toggle-group/src/native/toggle-group-native.tsx index 44133ffe..8af865ce 100644 --- a/packages/toggle-group/src/native/toggle-group-native.tsx +++ b/packages/toggle-group/src/native/toggle-group-native.tsx @@ -1,5 +1,4 @@ -import { ItemContextReturnType } from '../utils/contexts'; -import { RootContextReturnType } from '../utils/contexts'; +import { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; import type { ItemProps, RootProps } from './types'; function Root(props: RootProps) { @@ -18,7 +17,7 @@ function Item(props: ItemProps) { const useRootContext = () => { throw new Error( - 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/accordion/native`' + 'Cannot access the native useRootContext on the web. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/native`' ); return {} as RootContextReturnType; }; @@ -30,4 +29,4 @@ const useItemContext = () => { return {} as ItemContextReturnType; }; -export { Root, Item, useItemContext, useRootContext }; +export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/universal/toggle-group.tsx b/packages/toggle-group/src/universal/toggle-group.tsx index 68fcc19c..b257b726 100644 --- a/packages/toggle-group/src/universal/toggle-group.tsx +++ b/packages/toggle-group/src/universal/toggle-group.tsx @@ -1,7 +1,7 @@ import { Item as ItemNative, - Root as RootNative, ItemProps as ItemPropsNative, + Root as RootNative, useItemContext, useRootContext, } from '../native'; @@ -11,8 +11,10 @@ function Root({ web: _web, native, ...props }: RootProps) { return ; } -function Item({ web: _web, native, ref, ...props }: ItemProps) { - return ; +function Item({ web: _web, native, ref, disabled, ...props }: ItemProps) { + return ( + + ); } export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/universal/toggle-group.web.tsx b/packages/toggle-group/src/universal/toggle-group.web.tsx index c71d0a4d..dfa7e1e1 100644 --- a/packages/toggle-group/src/universal/toggle-group.web.tsx +++ b/packages/toggle-group/src/universal/toggle-group.web.tsx @@ -1,7 +1,7 @@ import { Pressable, View } from '@rn-primitives/core'; import { mergeProps } from '@rn-primitives/utils'; -import { Root as RootWeb, Item as ItemWeb, useRootContext, useItemContext } from '../web'; -import type { RootProps, ItemProps } from './types'; +import { Item as ItemWeb, Root as RootWeb, useItemContext, useRootContext } from '../web'; +import type { ItemProps, RootProps } from './types'; const DEFAULT_PRESSABLE_WEB = { as: 'button' } as const; @@ -24,4 +24,4 @@ function Item({ native: _native, web, value, ...props }: ItemProps) { ); } -export { Item, Root, useRootContext, useItemContext }; +export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/universal/types.ts b/packages/toggle-group/src/universal/types.ts index dd7ffb07..7f265d36 100644 --- a/packages/toggle-group/src/universal/types.ts +++ b/packages/toggle-group/src/universal/types.ts @@ -1,4 +1,4 @@ -import { PressablePropsUniversal, ViewPropsUniversal } from '@rn-primitives/core'; +import type { PressablePropsUniversal, ViewPropsUniversal } from '@rn-primitives/core'; import type { Prettify } from '@rn-primitives/types'; import type { BaseItemProps, BaseRootProps } from '../base-types'; import type { ItemPropsNativeOnly, RootPropsNativeOnly } from '../native/types'; diff --git a/packages/toggle-group/src/utils/get-default-value.ts b/packages/toggle-group/src/utils/get-default-value.ts index 46d8fbec..660463d0 100644 --- a/packages/toggle-group/src/utils/get-default-value.ts +++ b/packages/toggle-group/src/utils/get-default-value.ts @@ -1,7 +1,4 @@ -export function getDefaultValue( - defaultValue: string | string[] | undefined, - type: 'multiple' | 'single' -) { +function getDefaultValue(defaultValue: string | string[] | undefined, type: 'multiple' | 'single') { if (!defaultValue) { return undefined; } @@ -16,3 +13,5 @@ export function getDefaultValue( return defaultValue; } + +export { getDefaultValue }; diff --git a/packages/toggle-group/src/utils/get-is-selected.ts b/packages/toggle-group/src/utils/get-is-selected.ts index e07ee764..fbe2daea 100644 --- a/packages/toggle-group/src/utils/get-is-selected.ts +++ b/packages/toggle-group/src/utils/get-is-selected.ts @@ -1,4 +1,4 @@ -export function getIsSelected(value: string | string[] | undefined, itemValue: string) { +function getIsSelected(value: string | string[] | undefined, itemValue: string) { if (value === undefined) { return false; } @@ -7,3 +7,5 @@ export function getIsSelected(value: string | string[] | undefined, itemValue: s } return value.includes(itemValue); } + +export { getIsSelected }; diff --git a/packages/toggle-group/src/utils/get-new-multiple-value.ts b/packages/toggle-group/src/utils/get-new-multiple-value.ts index e8bc88e0..12bfbc4d 100644 --- a/packages/toggle-group/src/utils/get-new-multiple-value.ts +++ b/packages/toggle-group/src/utils/get-new-multiple-value.ts @@ -1,7 +1,4 @@ -export function getNewMultipleValue( - originalValue: string | string[] | undefined, - itemValue: string -) { +function getNewMultipleValue(originalValue: string | string[] | undefined, itemValue: string) { if (originalValue === undefined) { return [itemValue]; } @@ -13,3 +10,5 @@ export function getNewMultipleValue( } return [...originalValue, itemValue]; } + +export { getNewMultipleValue }; diff --git a/packages/toggle-group/src/utils/get-new-single-value.ts b/packages/toggle-group/src/utils/get-new-single-value.ts index 3928acdc..3ee663e8 100644 --- a/packages/toggle-group/src/utils/get-new-single-value.ts +++ b/packages/toggle-group/src/utils/get-new-single-value.ts @@ -1,6 +1,8 @@ -export function getNewSingleValue(originalValue: string | string[] | undefined, itemValue: string) { +function getNewSingleValue(originalValue: string | string[] | undefined, itemValue: string) { if (originalValue === itemValue) { return undefined; } return itemValue; } + +export { getNewSingleValue }; diff --git a/packages/toggle-group/src/web/index.ts b/packages/toggle-group/src/web/index.ts index 37cb0f06..68b8b84b 100644 --- a/packages/toggle-group/src/web/index.ts +++ b/packages/toggle-group/src/web/index.ts @@ -1,2 +1,2 @@ -export { Root, Item, useItemContext, useRootContext } from './toggle-group-web'; -export type { RootProps, ItemProps } from './types'; +export { Item, Root, useItemContext, useRootContext } from './toggle-group-web'; +export type { ItemProps, RootProps } from './types'; diff --git a/packages/toggle-group/src/web/toggle-group-web.tsx b/packages/toggle-group/src/web/toggle-group-web.tsx index 6fcbc197..309b3635 100644 --- a/packages/toggle-group/src/web/toggle-group-web.tsx +++ b/packages/toggle-group/src/web/toggle-group-web.tsx @@ -1,5 +1,5 @@ import type { ToggleGroup, ToggleGroupItem } from '@radix-ui/react-toggle-group'; -import type { RootContextReturnType, ItemContextReturnType } from '../utils/contexts'; +import type { ItemContextReturnType, RootContextReturnType } from '../utils/contexts'; const Root = (() => { if (process.env.NODE_ENV === 'development') { @@ -17,14 +17,14 @@ const Item = (() => { const useRootContext = () => { throw new Error( - 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/native`' + 'Cannot access the web useRootContext on a native platform. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/web`' ); return {} as RootContextReturnType; }; const useItemContext = () => { throw new Error( - 'Cannot access the web useItemContext on a native platform. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/native`' + 'Cannot access the web useItemContext on a native platform. Please import from `@rn-primitives/toggle-group` or `@rn-primitives/toggle-group/web`' ); return {} as ItemContextReturnType; }; diff --git a/packages/toggle-group/src/web/toggle-group-web.web.tsx b/packages/toggle-group/src/web/toggle-group-web.web.tsx index 1f1d9f83..c837db1f 100644 --- a/packages/toggle-group/src/web/toggle-group-web.web.tsx +++ b/packages/toggle-group/src/web/toggle-group-web.web.tsx @@ -2,14 +2,14 @@ import { ToggleGroup, ToggleGroupItem } from '@radix-ui/react-toggle-group'; import { useControllableState } from '@rn-primitives/hooks'; import { ItemContext, RootContext, useItemContext, useRootContext } from '../utils/contexts'; import { getDefaultValue } from '../utils/get-default-value'; -import type { ItemProps, RootProps, MultipleProps, SingleProps } from './types'; +import type { ItemProps, MultipleProps, RootProps, SingleProps } from './types'; -const Root = ({ +function Root({ value: valueProp, onValueChange: onValueChangeProps, defaultValue, ...props -}: RootProps) => { +}: RootProps) { const [rootValue = props.type === 'multiple' ? [] : undefined, onRootValueChange] = useControllableState<(string | undefined) | string[]>({ prop: valueProp, @@ -37,14 +37,14 @@ const Root = ({ /> ); -}; +} -const Item = ({ value: itemValue, ...props }: ItemProps) => { +function Item(props: ItemProps) { return ( - - + + ); -}; +} export { Item, Root, useItemContext, useRootContext }; diff --git a/packages/toggle-group/src/web/types.ts b/packages/toggle-group/src/web/types.ts index 9b31f02a..264aae57 100644 --- a/packages/toggle-group/src/web/types.ts +++ b/packages/toggle-group/src/web/types.ts @@ -1,8 +1,8 @@ import type { - ToggleGroupItemProps, ToggleGroupMultipleProps as MultipleProps, - ToggleGroupSingleProps as SingleProps, Root, + ToggleGroupSingleProps as SingleProps, + ToggleGroupItemProps, } from '@radix-ui/react-toggle-group'; type RootProps = React.ComponentProps; @@ -15,8 +15,8 @@ type ItemPropsWebOnly = React.ComponentProps<'button'>; export type { ItemProps, ItemPropsWebOnly, + MultipleProps, RootProps, RootPropsWebOnly, - MultipleProps, SingleProps, }; diff --git a/packages/toggle/src/base-types.ts b/packages/toggle/src/base-types.ts index 1c18e9d5..2a6b6ec2 100644 --- a/packages/toggle/src/base-types.ts +++ b/packages/toggle/src/base-types.ts @@ -1,8 +1,8 @@ import type { RootProps as RootPropsWeb } from './web/types'; -type BaseToggleRootProps = Pick< +type BaseRootProps = Pick< RootPropsWeb, 'defaultPressed' | 'pressed' | 'onPressedChange' | 'disabled' >; -export type { BaseToggleRootProps }; +export type { BaseRootProps }; diff --git a/packages/toggle/src/universal/types.ts b/packages/toggle/src/universal/types.ts index a36fd4a6..8a9f863b 100644 --- a/packages/toggle/src/universal/types.ts +++ b/packages/toggle/src/universal/types.ts @@ -1,11 +1,11 @@ import { PressablePropsUniversal } from '@rn-primitives/core'; import type { Prettify } from '@rn-primitives/types'; -import type { BaseToggleRootProps } from '../base-types'; +import type { BaseRootProps } from '../base-types'; import type { RootPropsNativeOnly } from '../native/types'; import type { RootPropsWebOnly } from '../web/types'; type RootProps = Prettify< - BaseToggleRootProps & + BaseRootProps & PressablePropsUniversal & { native?: RootPropsNativeOnly; web?: RootPropsWebOnly; From d96b2ad0d103c42977f990ab578e7ab5c5d89e7f Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Mon, 5 May 2025 12:11:22 +0200 Subject: [PATCH 089/106] feat(separator): implement separator v2 --- apps/nextjs-nativewind/src/app/page.tsx | 2 +- .../src/components/ui/separator.tsx | 12 +------- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 18 +++++++++++ .../src/components/ui/separator.tsx | 20 +++++++++++++ apps/vite-tanstack-router/package.json | 1 + .../src/components/ui/separator.tsx | 20 +++++++++++++ .../vite-tanstack-router/src/routes/index.tsx | 18 +++++++++++ packages/separator/package.json | 23 +++++++++----- packages/separator/src/base-types.ts | 5 ++++ packages/separator/src/index.ts | 4 +-- packages/separator/src/native/index.ts | 2 ++ .../src/native/separator-native.native.tsx | 14 +++++++++ .../separator/src/native/separator-native.tsx | 10 +++++++ packages/separator/src/native/types.ts | 8 +++++ packages/separator/src/separator.tsx | 30 ------------------- packages/separator/src/types.ts | 10 ------- packages/separator/src/universal/index.ts | 2 ++ .../separator/src/universal/separator.tsx | 8 +++++ .../separator/src/universal/separator.web.tsx | 16 ++++++++++ packages/separator/src/universal/types.ts | 15 ++++++++++ packages/separator/src/web/index.ts | 2 ++ packages/separator/src/web/separator-web.tsx | 10 +++++++ .../separator/src/web/separator-web.web.tsx | 6 ++++ packages/separator/src/web/types.ts | 7 +++++ packages/separator/tsup.config.ts | 23 ++++++++++++-- packages/toggle-group/package.json | 1 - packages/toggle/package.json | 1 - pnpm-lock.yaml | 19 +++++++----- 29 files changed, 234 insertions(+), 74 deletions(-) create mode 100644 apps/nextjs-no-rn/src/components/ui/separator.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/separator.tsx create mode 100644 packages/separator/src/base-types.ts create mode 100644 packages/separator/src/native/index.ts create mode 100644 packages/separator/src/native/separator-native.native.tsx create mode 100644 packages/separator/src/native/separator-native.tsx create mode 100644 packages/separator/src/native/types.ts delete mode 100644 packages/separator/src/separator.tsx delete mode 100644 packages/separator/src/types.ts create mode 100644 packages/separator/src/universal/index.ts create mode 100644 packages/separator/src/universal/separator.tsx create mode 100644 packages/separator/src/universal/separator.web.tsx create mode 100644 packages/separator/src/universal/types.ts create mode 100644 packages/separator/src/web/index.ts create mode 100644 packages/separator/src/web/separator-web.tsx create mode 100644 packages/separator/src/web/separator-web.web.tsx create mode 100644 packages/separator/src/web/types.ts diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index f9752655..6f68a014 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -110,6 +110,7 @@ export default function Home() { + {/* @@ -123,7 +124,6 @@ export default function Home() { - diff --git a/apps/nextjs-nativewind/src/components/ui/separator.tsx b/apps/nextjs-nativewind/src/components/ui/separator.tsx index ee5bb3d1..3e875279 100644 --- a/apps/nextjs-nativewind/src/components/ui/separator.tsx +++ b/apps/nextjs-nativewind/src/components/ui/separator.tsx @@ -1,21 +1,12 @@ -'use client'; - -import * as React from 'react'; import * as SeparatorPrimitive from '@rn-primitives/separator'; import { cn } from '~/lib/utils'; const Separator = ({ - ref, className, orientation = 'horizontal', - decorative = true, ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( +}: React.ComponentProps) => ( ); -Separator.displayName = SeparatorPrimitive.Root.displayName; export { Separator }; diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index 179d4c7a..e2bd661b 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -20,6 +20,7 @@ "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", "@rn-primitives/progress": "workspace:*", + "@rn-primitives/separator": "workspace:*", "@rn-primitives/toggle": "workspace:*", "@rn-primitives/toggle-group": "workspace:*", "class-variance-authority": "^0.7.1", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index 3db9eb18..83ffb28d 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -23,6 +23,7 @@ import { Button } from '~/components/ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '~/components/ui/avatar'; import { Checkbox } from '~/components/ui/checkbox'; import { Progress } from '~/components/ui/progress'; +import { Separator } from '~/components/ui/separator'; import { Toggle } from '~/components/ui/toggle'; import { ToggleGroup } from '~/components/ui/toggle-group'; @@ -42,6 +43,7 @@ export default function Home() { + @@ -152,6 +154,22 @@ function ProgressExample() { return ; } +function SeparatorExample() { + return ( + + RN Primitive Separator + + + Blog + + Docs + + Source + + + ); +} + function ToggleExample() { return ( diff --git a/apps/nextjs-no-rn/src/components/ui/separator.tsx b/apps/nextjs-no-rn/src/components/ui/separator.tsx new file mode 100644 index 00000000..3e875279 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/separator.tsx @@ -0,0 +1,20 @@ +import * as SeparatorPrimitive from '@rn-primitives/separator'; +import { cn } from '~/lib/utils'; + +const Separator = ({ + className, + orientation = 'horizontal', + ...props +}: React.ComponentProps) => ( + +); + +export { Separator }; diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index ecb1208f..6a5136a7 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -18,6 +18,7 @@ "@rn-primitives/avatar": "workspace:*", "@rn-primitives/checkbox": "workspace:*", "@rn-primitives/progress": "workspace:*", + "@rn-primitives/separator": "workspace:*", "@rn-primitives/toggle": "workspace:*", "@rn-primitives/toggle-group": "workspace:*", "@rn-primitives/types": "workspace:*", diff --git a/apps/vite-tanstack-router/src/components/ui/separator.tsx b/apps/vite-tanstack-router/src/components/ui/separator.tsx new file mode 100644 index 00000000..27961366 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/separator.tsx @@ -0,0 +1,20 @@ +import * as SeparatorPrimitive from '@rn-primitives/separator'; +import { cn } from '@/lib/utils'; + +const Separator = ({ + className, + orientation = 'horizontal', + ...props +}: React.ComponentProps) => ( + +); + +export { Separator }; diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx index 134b1252..350e5d0f 100644 --- a/apps/vite-tanstack-router/src/routes/index.tsx +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -18,6 +18,7 @@ import { } from '@/components/ui/card'; import { Checkbox } from '@/components/ui/checkbox'; import { Progress } from '@/components/ui/progress'; +import { Separator } from '@/components/ui/separator'; import { Text } from '@/components/ui/text'; import { Toggle } from '@/components/ui/toggle'; import { ToggleGroup } from '@/components/ui/toggle-group'; @@ -47,6 +48,7 @@ export function App() { + @@ -154,6 +156,22 @@ function ProgressExample() { return ; } +function SeparatorExample() { + return ( + + RN Primitive Separator + + + Blog + + Docs + + Source + + + ); +} + function ToggleExample() { return ( diff --git a/packages/separator/package.json b/packages/separator/package.json index 06cb97b9..fdd7f861 100644 --- a/packages/separator/package.json +++ b/packages/separator/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/separator", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive separator", "license": "MIT", "main": "dist/index.js", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/separator": { - "import": "./dist/separator.mjs", - "require": "./dist/separator.js", - "types": "./dist/separator.d.ts", - "default": "./dist/separator.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -33,8 +39,9 @@ }, "dependencies": { "@radix-ui/react-separator": "^1.1.0", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@rn-primitives/core": "workspace:*", + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/separator/src/base-types.ts b/packages/separator/src/base-types.ts new file mode 100644 index 00000000..80084db7 --- /dev/null +++ b/packages/separator/src/base-types.ts @@ -0,0 +1,5 @@ +import type { RootProps as RootPropsWeb } from './web/types'; + +type BaseRootProps = Pick; + +export type { BaseRootProps }; diff --git a/packages/separator/src/index.ts b/packages/separator/src/index.ts index 1914ed4a..a9bcbdb8 100644 --- a/packages/separator/src/index.ts +++ b/packages/separator/src/index.ts @@ -1,2 +1,2 @@ -export * from './separator'; -export * from './types'; +export { Root } from './universal/separator'; +export type { RootProps } from './universal/types'; diff --git a/packages/separator/src/native/index.ts b/packages/separator/src/native/index.ts new file mode 100644 index 00000000..52ea4972 --- /dev/null +++ b/packages/separator/src/native/index.ts @@ -0,0 +1,2 @@ +export { Root } from './separator-native'; +export type { RootProps } from './types'; diff --git a/packages/separator/src/native/separator-native.native.tsx b/packages/separator/src/native/separator-native.native.tsx new file mode 100644 index 00000000..5d39595d --- /dev/null +++ b/packages/separator/src/native/separator-native.native.tsx @@ -0,0 +1,14 @@ +import { View } from '@rn-primitives/core/dist/native'; +import type { RootProps } from './types'; + +const Root = ({ decorative, orientation = 'horizontal', ...props }: RootProps) => { + return ( + + ); +}; + +export { Root }; diff --git a/packages/separator/src/native/separator-native.tsx b/packages/separator/src/native/separator-native.tsx new file mode 100644 index 00000000..3fac9c9e --- /dev/null +++ b/packages/separator/src/native/separator-native.tsx @@ -0,0 +1,10 @@ +import type { RootProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/separator/native is only supported on native.'); + } + return null; +} + +export { Root }; diff --git a/packages/separator/src/native/types.ts b/packages/separator/src/native/types.ts new file mode 100644 index 00000000..f85bed05 --- /dev/null +++ b/packages/separator/src/native/types.ts @@ -0,0 +1,8 @@ +import type { ViewProps } from '@rn-primitives/core/dist/native'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps } from '../base-types'; + +type RootProps = Prettify; +type RootPropsNativeOnly = ViewProps; + +export type { RootProps, RootPropsNativeOnly }; diff --git a/packages/separator/src/separator.tsx b/packages/separator/src/separator.tsx deleted file mode 100644 index 43604c07..00000000 --- a/packages/separator/src/separator.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { View } from 'react-native'; -import type { RootProps, RootRef } from './types'; - -const Root = ( - { - ref, - asChild, - decorative, - orientation = 'horizontal', - ...props - }: RootProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : View; - return ( - - ); -}; - -Root.displayName = 'RootSeparator'; - -export { Root }; diff --git a/packages/separator/src/types.ts b/packages/separator/src/types.ts deleted file mode 100644 index 1b374935..00000000 --- a/packages/separator/src/types.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { SlottableViewProps, ViewRef } from '@rn-primitives/types'; - -type RootProps = SlottableViewProps & { - orientation?: 'horizontal' | 'vertical'; - decorative?: boolean; -}; - -type RootRef = ViewRef; - -export type { RootProps, RootRef }; diff --git a/packages/separator/src/universal/index.ts b/packages/separator/src/universal/index.ts new file mode 100644 index 00000000..6161fe66 --- /dev/null +++ b/packages/separator/src/universal/index.ts @@ -0,0 +1,2 @@ +export { Root } from './separator'; +export type { RootProps } from './types'; diff --git a/packages/separator/src/universal/separator.tsx b/packages/separator/src/universal/separator.tsx new file mode 100644 index 00000000..e7338f08 --- /dev/null +++ b/packages/separator/src/universal/separator.tsx @@ -0,0 +1,8 @@ +import { Root as RootNative } from '../native'; +import type { RootProps } from './types'; + +function Root({ web: _web, native, ...props }: RootProps) { + return ; +} + +export { Root }; diff --git a/packages/separator/src/universal/separator.web.tsx b/packages/separator/src/universal/separator.web.tsx new file mode 100644 index 00000000..9ededfac --- /dev/null +++ b/packages/separator/src/universal/separator.web.tsx @@ -0,0 +1,16 @@ +import { View } from '@rn-primitives/core'; +import { Root as RootWeb } from '../web'; +import type { RootProps } from './types'; + +function Root({ native: _native, style, web, ...props }: RootProps) { + if (style) { + return ( + + + + ); + } + return ; +} + +export { Root }; diff --git a/packages/separator/src/universal/types.ts b/packages/separator/src/universal/types.ts new file mode 100644 index 00000000..56621f53 --- /dev/null +++ b/packages/separator/src/universal/types.ts @@ -0,0 +1,15 @@ +import { ViewPropsUniversal } from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps } from '../base-types'; +import type { RootPropsNativeOnly } from '../native/types'; +import type { RootPropsWebOnly } from '../web/types'; + +type RootProps = Prettify< + BaseRootProps & + ViewPropsUniversal & { + native?: RootPropsNativeOnly; + web?: RootPropsWebOnly; + } +>; + +export type { RootProps }; diff --git a/packages/separator/src/web/index.ts b/packages/separator/src/web/index.ts new file mode 100644 index 00000000..8d436906 --- /dev/null +++ b/packages/separator/src/web/index.ts @@ -0,0 +1,2 @@ +export { Root } from './separator-web'; +export type { RootProps } from './types'; diff --git a/packages/separator/src/web/separator-web.tsx b/packages/separator/src/web/separator-web.tsx new file mode 100644 index 00000000..59411899 --- /dev/null +++ b/packages/separator/src/web/separator-web.tsx @@ -0,0 +1,10 @@ +import type { Separator } from '@radix-ui/react-separator'; + +const Root = (() => { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/separator/web is only supported on web.'); + } + return null; +}) as unknown as typeof Separator; + +export { Root }; diff --git a/packages/separator/src/web/separator-web.web.tsx b/packages/separator/src/web/separator-web.web.tsx new file mode 100644 index 00000000..8808a139 --- /dev/null +++ b/packages/separator/src/web/separator-web.web.tsx @@ -0,0 +1,6 @@ +import { Separator } from '@radix-ui/react-separator'; +import { withRNPrimitives } from '@rn-primitives/utils'; + +const Root = withRNPrimitives(Separator, 'view'); + +export { Root }; diff --git a/packages/separator/src/web/types.ts b/packages/separator/src/web/types.ts new file mode 100644 index 00000000..65ce1ad4 --- /dev/null +++ b/packages/separator/src/web/types.ts @@ -0,0 +1,7 @@ +import type { SeparatorProps } from '@radix-ui/react-separator'; + +type RootProps = SeparatorProps; + +type RootPropsWebOnly = React.ComponentProps<'div'>; + +export type { RootProps, RootPropsWebOnly }; diff --git a/packages/separator/tsup.config.ts b/packages/separator/tsup.config.ts index e825bac7..854653c5 100644 --- a/packages/separator/tsup.config.ts +++ b/packages/separator/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/separator.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/separator.tsx', + 'src/universal/separator.web.tsx', + 'src/native/index.ts', + 'src/native/separator-native.tsx', + 'src/native/separator-native.native.tsx', + 'src/web/index.ts', + 'src/web/separator-web.tsx', + 'src/web/separator-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './separator'], + external: [ + 'react', + './universal', + './separator', + '../native', + './separator-native', + '../web', + './separator-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/packages/toggle-group/package.json b/packages/toggle-group/package.json index 77a4a42e..8784f07b 100644 --- a/packages/toggle-group/package.json +++ b/packages/toggle-group/package.json @@ -42,7 +42,6 @@ "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", "@rn-primitives/utils": "workspace:*", - "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*" }, "devDependencies": { diff --git a/packages/toggle/package.json b/packages/toggle/package.json index 262d0d5b..3a202b21 100644 --- a/packages/toggle/package.json +++ b/packages/toggle/package.json @@ -41,7 +41,6 @@ "@radix-ui/react-toggle": "^1.1.6", "@rn-primitives/core": "workspace:*", "@rn-primitives/hooks": "workspace:*", - "@rn-primitives/slot": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2459efc..6a98792e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -716,6 +716,9 @@ importers: '@rn-primitives/progress': specifier: workspace:* version: link:../../packages/progress + '@rn-primitives/separator': + specifier: workspace:* + version: link:../../packages/separator '@rn-primitives/slot': specifier: workspace:* version: link:../../packages/slot @@ -798,6 +801,9 @@ importers: '@rn-primitives/progress': specifier: workspace:* version: link:../../packages/progress + '@rn-primitives/separator': + specifier: workspace:* + version: link:../../packages/separator '@rn-primitives/slot': specifier: workspace:* version: link:../../packages/slot @@ -1593,12 +1599,15 @@ importers: '@radix-ui/react-separator': specifier: ^1.1.0 version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@rn-primitives/slot': + '@rn-primitives/core': specifier: workspace:* - version: link:../slot + version: link:../core '@rn-primitives/types': specifier: workspace:* version: link:../types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils react-native-web: specifier: '*' version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -1804,9 +1813,6 @@ importers: '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot '@rn-primitives/types': specifier: workspace:* version: link:../types @@ -1841,9 +1847,6 @@ importers: '@rn-primitives/hooks': specifier: workspace:* version: link:../hooks - '@rn-primitives/slot': - specifier: workspace:* - version: link:../slot '@rn-primitives/types': specifier: workspace:* version: link:../types From d4ed0533aadd769cba41c76da2cac0111d950e3c Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Fri, 9 May 2025 15:14:14 +0200 Subject: [PATCH 090/106] fix(separator): prefer function declaration --- .../components/ui/separator.tsx | 33 +++++++++---------- .../src/components/ui/separator.tsx | 26 ++++++++------- .../src/components/ui/separator.tsx | 26 ++++++++------- .../src/components/ui/separator.tsx | 26 ++++++++------- .../src/native/separator-native.native.tsx | 4 +-- 5 files changed, 59 insertions(+), 56 deletions(-) diff --git a/apps/expo-nativewind/components/ui/separator.tsx b/apps/expo-nativewind/components/ui/separator.tsx index a25391d4..3b3c277e 100644 --- a/apps/expo-nativewind/components/ui/separator.tsx +++ b/apps/expo-nativewind/components/ui/separator.tsx @@ -2,27 +2,24 @@ import * as React from 'react'; import * as SeparatorPrimitive from '@rn-primitives/separator'; import { cn } from '~/lib/utils'; -const Separator = ({ - ref, +function Separator({ className, orientation = 'horizontal', decorative = true, ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - -); -Separator.displayName = SeparatorPrimitive.Root.displayName; +}: SeparatorPrimitive.RootProps) { + return ( + + ); +} export { Separator }; diff --git a/apps/nextjs-nativewind/src/components/ui/separator.tsx b/apps/nextjs-nativewind/src/components/ui/separator.tsx index 3e875279..80a79fdc 100644 --- a/apps/nextjs-nativewind/src/components/ui/separator.tsx +++ b/apps/nextjs-nativewind/src/components/ui/separator.tsx @@ -1,20 +1,22 @@ import * as SeparatorPrimitive from '@rn-primitives/separator'; import { cn } from '~/lib/utils'; -const Separator = ({ +function Separator({ className, orientation = 'horizontal', ...props -}: React.ComponentProps) => ( - -); +}: SeparatorPrimitive.RootProps) { + return ( + + ); +} export { Separator }; diff --git a/apps/nextjs-no-rn/src/components/ui/separator.tsx b/apps/nextjs-no-rn/src/components/ui/separator.tsx index 3e875279..80a79fdc 100644 --- a/apps/nextjs-no-rn/src/components/ui/separator.tsx +++ b/apps/nextjs-no-rn/src/components/ui/separator.tsx @@ -1,20 +1,22 @@ import * as SeparatorPrimitive from '@rn-primitives/separator'; import { cn } from '~/lib/utils'; -const Separator = ({ +function Separator({ className, orientation = 'horizontal', ...props -}: React.ComponentProps) => ( - -); +}: SeparatorPrimitive.RootProps) { + return ( + + ); +} export { Separator }; diff --git a/apps/vite-tanstack-router/src/components/ui/separator.tsx b/apps/vite-tanstack-router/src/components/ui/separator.tsx index 27961366..9666d3c0 100644 --- a/apps/vite-tanstack-router/src/components/ui/separator.tsx +++ b/apps/vite-tanstack-router/src/components/ui/separator.tsx @@ -1,20 +1,22 @@ import * as SeparatorPrimitive from '@rn-primitives/separator'; import { cn } from '@/lib/utils'; -const Separator = ({ +function Separator({ className, orientation = 'horizontal', ...props -}: React.ComponentProps) => ( - -); +}: SeparatorPrimitive.RootProps) { + return ( + + ); +} export { Separator }; diff --git a/packages/separator/src/native/separator-native.native.tsx b/packages/separator/src/native/separator-native.native.tsx index 5d39595d..24c44e1e 100644 --- a/packages/separator/src/native/separator-native.native.tsx +++ b/packages/separator/src/native/separator-native.native.tsx @@ -1,7 +1,7 @@ import { View } from '@rn-primitives/core/dist/native'; import type { RootProps } from './types'; -const Root = ({ decorative, orientation = 'horizontal', ...props }: RootProps) => { +function Root({ decorative, orientation = 'horizontal', ...props }: RootProps) { return ( ); -}; +} export { Root }; From e639ed369abc6eefb7e8b777be62f6d6a91449f5 Mon Sep 17 00:00:00 2001 From: Zach Nugent Date: Sat, 10 May 2025 14:31:18 -0400 Subject: [PATCH 091/106] chore(separator): update radix-ui separator dep + remove unused file --- packages/separator/index.ts | 1 - packages/separator/package.json | 2 +- pnpm-lock.yaml | 64 +++++++++++++++++++++++++++++++-- 3 files changed, 63 insertions(+), 4 deletions(-) delete mode 100644 packages/separator/index.ts diff --git a/packages/separator/index.ts b/packages/separator/index.ts deleted file mode 100644 index 8420b109..00000000 --- a/packages/separator/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './src'; diff --git a/packages/separator/package.json b/packages/separator/package.json index fdd7f861..f9a08b29 100644 --- a/packages/separator/package.json +++ b/packages/separator/package.json @@ -38,7 +38,7 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-separator": "^1.1.0", + "@radix-ui/react-separator": "^1.1.6", "@rn-primitives/core": "workspace:*", "@rn-primitives/types": "workspace:*", "@rn-primitives/utils": "workspace:*" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a98792e..80e7ca48 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1597,8 +1597,8 @@ importers: packages/separator: dependencies: '@radix-ui/react-separator': - specifier: ^1.1.0 - version: 1.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@rn-primitives/core': specifier: workspace:* version: link:../core @@ -3535,6 +3535,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-primitive@2.1.2': + resolution: {integrity: sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-progress@1.1.4': resolution: {integrity: sha512-8rl9w7lJdcVPor47Dhws9mUHRHLE+8JEgyJRdNWCpGPa6HIlr3eh+Yn9gyx1CnCLbw5naHsI2gaO9dBWO50vzw==} peerDependencies: @@ -3600,6 +3613,19 @@ packages: '@types/react-dom': optional: true + '@radix-ui/react-separator@1.1.6': + resolution: {integrity: sha512-Izof3lPpbCfTM7WDta+LRkz31jem890VjEvpVRoWQNKpDUMMVffuyq854XPGP1KYGWWmjmYvHvPFeocWhFCy1w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: 19.0.0 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@radix-ui/react-slider@1.2.4': resolution: {integrity: sha512-Vr/OgNejNJPAghIhjS7Mf/2F/EXGDT0qgtiHf2BHz71+KqgN+jndFLKq5xAB9JOGejGzejfJLIvT04Do+yzhcg==} peerDependencies: @@ -3622,6 +3648,15 @@ packages: '@types/react': optional: true + '@radix-ui/react-slot@1.2.2': + resolution: {integrity: sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==} + peerDependencies: + '@types/react': '*' + react: 19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@radix-ui/react-switch@1.1.4': resolution: {integrity: sha512-zGP6W8plLeogoeGMiTHJ/uvf+TE1C2chVsEwfP8YlvpQKJHktG+iCkUtCLGPAuDV8/qDSmIRPm4NggaTxFMVBQ==} peerDependencies: @@ -10459,6 +10494,15 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-primitive@2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-slot': 1.2.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-progress@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/react-context': 1.1.2(@types/react@19.0.10)(react@19.0.0) @@ -10542,6 +10586,15 @@ snapshots: '@types/react': 19.0.10 '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-separator@1.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.10 + '@types/react-dom': 19.0.4(@types/react@19.0.10) + '@radix-ui/react-slider@1.2.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/number': 1.1.1 @@ -10568,6 +10621,13 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 + '@radix-ui/react-slot@1.2.2(@types/react@19.0.10)(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.10)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.10 + '@radix-ui/react-switch@1.1.4(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@radix-ui/primitive': 1.1.2 From 4b41c5754776e794bbe980a90526aadbe8632381 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Mon, 12 May 2025 17:05:31 +0200 Subject: [PATCH 092/106] feat(label): implement label v2 --- .../app/(components)/label.tsx | 30 +++++++++++++ apps/expo-nativewind/app/index.tsx | 1 + apps/expo-nativewind/components/ui/label.tsx | 20 ++------- apps/nextjs-nativewind/src/app/page.tsx | 20 +++++---- .../src/components/ui/label.tsx | 22 +--------- apps/nextjs-no-rn/package.json | 1 + apps/nextjs-no-rn/src/app/page.tsx | 15 ++++++- apps/nextjs-no-rn/src/components/ui/label.tsx | 16 +++++++ apps/vite-tanstack-router/package.json | 1 + .../src/components/ui/label.tsx | 16 +++++++ .../vite-tanstack-router/src/routes/index.tsx | 11 +++++ packages/label/package.json | 25 +++++++---- packages/label/src/base-types.ts | 10 +++++ packages/label/src/index.ts | 4 +- packages/label/src/label.tsx | 36 --------------- packages/label/src/label.web.tsx | 44 ------------------- packages/label/src/native/index.ts | 2 + .../label/src/native/label-native.native.tsx | 12 +++++ packages/label/src/native/label-native.tsx | 17 +++++++ packages/label/src/native/types.ts | 16 +++++++ packages/label/src/types.ts | 27 ------------ packages/label/src/universal/index.ts | 2 + packages/label/src/universal/label.tsx | 14 ++++++ packages/label/src/universal/label.web.tsx | 21 +++++++++ packages/label/src/universal/types.ts | 19 ++++++++ packages/label/src/web/index.ts | 2 + packages/label/src/web/label-web.tsx | 19 ++++++++ packages/label/src/web/label-web.web.tsx | 15 +++++++ packages/label/src/web/types.ts | 9 ++++ packages/label/tsup.config.ts | 23 +++++++++- pnpm-lock.yaml | 25 +++++++---- 31 files changed, 319 insertions(+), 176 deletions(-) create mode 100644 apps/expo-nativewind/app/(components)/label.tsx create mode 100644 apps/nextjs-no-rn/src/components/ui/label.tsx create mode 100644 apps/vite-tanstack-router/src/components/ui/label.tsx create mode 100644 packages/label/src/base-types.ts delete mode 100644 packages/label/src/label.tsx delete mode 100644 packages/label/src/label.web.tsx create mode 100644 packages/label/src/native/index.ts create mode 100644 packages/label/src/native/label-native.native.tsx create mode 100644 packages/label/src/native/label-native.tsx create mode 100644 packages/label/src/native/types.ts delete mode 100644 packages/label/src/types.ts create mode 100644 packages/label/src/universal/index.ts create mode 100644 packages/label/src/universal/label.tsx create mode 100644 packages/label/src/universal/label.web.tsx create mode 100644 packages/label/src/universal/types.ts create mode 100644 packages/label/src/web/index.ts create mode 100644 packages/label/src/web/label-web.tsx create mode 100644 packages/label/src/web/label-web.web.tsx create mode 100644 packages/label/src/web/types.ts diff --git a/apps/expo-nativewind/app/(components)/label.tsx b/apps/expo-nativewind/app/(components)/label.tsx new file mode 100644 index 00000000..3df67758 --- /dev/null +++ b/apps/expo-nativewind/app/(components)/label.tsx @@ -0,0 +1,30 @@ +import { View } from 'react-native'; +import { Input } from '~/components/ui/input'; +import { Label } from '~/components/ui/label'; + +export default function LabelScreen() { + return ( + + + + + ); +} diff --git a/apps/expo-nativewind/app/index.tsx b/apps/expo-nativewind/app/index.tsx index 671a4892..f716e244 100644 --- a/apps/expo-nativewind/app/index.tsx +++ b/apps/expo-nativewind/app/index.tsx @@ -74,6 +74,7 @@ const COMPONENTS = [ 'dialog', 'dropdown-menu', 'hover-card', + 'label', 'menubar', 'navigation-menu', 'popover', diff --git a/apps/expo-nativewind/components/ui/label.tsx b/apps/expo-nativewind/components/ui/label.tsx index f7b873ed..9591fbc5 100644 --- a/apps/expo-nativewind/components/ui/label.tsx +++ b/apps/expo-nativewind/components/ui/label.tsx @@ -3,25 +3,12 @@ import * as React from 'react'; import { cn } from '~/lib/utils'; const Label = ({ - ref, className, - onPress, - onLongPress, - onPressIn, - onPressOut, + native, ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - +}: Pick & LabelPrimitive.TextProps) => ( + ); -Label.displayName = LabelPrimitive.Root.displayName; export { Label }; diff --git a/apps/nextjs-nativewind/src/app/page.tsx b/apps/nextjs-nativewind/src/app/page.tsx index 6f68a014..2dc2f16b 100644 --- a/apps/nextjs-nativewind/src/app/page.tsx +++ b/apps/nextjs-nativewind/src/app/page.tsx @@ -1,14 +1,5 @@ import { View } from '@rn-primitives/core'; -import { CheckboxExample } from '~/components/CheckboxExample'; -import { CollapsibleExample } from '~/components/CollapsibleExample'; -import { ContextMenuExample } from '~/components/ContextMenuExample'; import { Core } from '~/components/core'; -import { MenubarExample } from '~/components/MenubarExample'; -import { NavigationMenuExample } from '~/components/NavigationMenuExample'; -import { RadioGroupExample } from '~/components/RadioGroupExample'; -import { SliderExample } from '~/components/SliderExample'; -import { SwitchExample } from '~/components/SwitchExample'; -import { TabsExample } from '~/components/TabsExample'; import { ToggleExample } from '~/components/ToggleExample'; import { ToggleGroupExample } from '~/components/ToggleGroupExample'; import { @@ -55,6 +46,7 @@ import { DropdownMenuTrigger, } from '~/components/ui/dropdown-menu'; import { HoverCard, HoverCardContent, HoverCardTrigger } from '~/components/ui/hover-card'; +import { Label } from '~/components/ui/label'; import { Popover, PopoverContent, PopoverTrigger } from '~/components/ui/popover'; import { Progress } from '~/components/ui/progress'; import { @@ -109,6 +101,7 @@ export default function Home() { + @@ -457,6 +450,15 @@ function TableExample() { ); } +function LabelExample() { + return ( + + + + + ); +} + function ProgressExample() { return ; } diff --git a/apps/nextjs-nativewind/src/components/ui/label.tsx b/apps/nextjs-nativewind/src/components/ui/label.tsx index 18ccae2d..66cd66f7 100644 --- a/apps/nextjs-nativewind/src/components/ui/label.tsx +++ b/apps/nextjs-nativewind/src/components/ui/label.tsx @@ -1,31 +1,14 @@ 'use client'; import * as LabelPrimitive from '@rn-primitives/label'; -import * as React from 'react'; import { cn } from '~/lib/utils'; const Label = ({ - ref, className, - onPress, - onLongPress, - onPressIn, - onPressOut, - onFocus, ...props -}: React.ComponentPropsWithoutRef & { - ref?: React.RefObject>; -}) => ( - +}: Pick & LabelPrimitive.TextProps) => ( + ); -Label.displayName = LabelPrimitive.Root.displayName; export { Label }; diff --git a/apps/nextjs-no-rn/package.json b/apps/nextjs-no-rn/package.json index e2bd661b..a18a1445 100644 --- a/apps/nextjs-no-rn/package.json +++ b/apps/nextjs-no-rn/package.json @@ -19,6 +19,7 @@ "@rn-primitives/alert-dialog": "workspace:*", "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", + "@rn-primitives/label": "workspace:*", "@rn-primitives/progress": "workspace:*", "@rn-primitives/separator": "workspace:*", "@rn-primitives/toggle": "workspace:*", diff --git a/apps/nextjs-no-rn/src/app/page.tsx b/apps/nextjs-no-rn/src/app/page.tsx index 83ffb28d..4b9684b7 100644 --- a/apps/nextjs-no-rn/src/app/page.tsx +++ b/apps/nextjs-no-rn/src/app/page.tsx @@ -1,4 +1,3 @@ -import { Text } from '~/components/ui/text'; import { View } from '@rn-primitives/core'; import { Core } from '~/components/core'; import { @@ -19,11 +18,13 @@ import { AlertDialogTrigger, } from '~/components/ui/alert-dialog'; import { AspectRatio } from '~/components/ui/aspect-ratio'; -import { Button } from '~/components/ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '~/components/ui/avatar'; +import { Button } from '~/components/ui/button'; import { Checkbox } from '~/components/ui/checkbox'; +import { Label } from '~/components/ui/label'; import { Progress } from '~/components/ui/progress'; import { Separator } from '~/components/ui/separator'; +import { Text } from '~/components/ui/text'; import { Toggle } from '~/components/ui/toggle'; import { ToggleGroup } from '~/components/ui/toggle-group'; @@ -42,6 +43,7 @@ export default function Home() { + @@ -150,6 +152,15 @@ function CheckboxExample() { ); } +function LabelExample() { + return ( + + + + + ); +} + function ProgressExample() { return ; } diff --git a/apps/nextjs-no-rn/src/components/ui/label.tsx b/apps/nextjs-no-rn/src/components/ui/label.tsx new file mode 100644 index 00000000..681fdbe1 --- /dev/null +++ b/apps/nextjs-no-rn/src/components/ui/label.tsx @@ -0,0 +1,16 @@ +import * as LabelPrimitive from '@rn-primitives/label'; +import { cn } from '~/lib/utils'; + +const Label = ({ className, ...props }: LabelPrimitive.TextProps) => ( + + + +); + +export { Label }; diff --git a/apps/vite-tanstack-router/package.json b/apps/vite-tanstack-router/package.json index 6a5136a7..647f696b 100644 --- a/apps/vite-tanstack-router/package.json +++ b/apps/vite-tanstack-router/package.json @@ -17,6 +17,7 @@ "@rn-primitives/aspect-ratio": "workspace:*", "@rn-primitives/avatar": "workspace:*", "@rn-primitives/checkbox": "workspace:*", + "@rn-primitives/label": "workspace:*", "@rn-primitives/progress": "workspace:*", "@rn-primitives/separator": "workspace:*", "@rn-primitives/toggle": "workspace:*", diff --git a/apps/vite-tanstack-router/src/components/ui/label.tsx b/apps/vite-tanstack-router/src/components/ui/label.tsx new file mode 100644 index 00000000..a947d5b9 --- /dev/null +++ b/apps/vite-tanstack-router/src/components/ui/label.tsx @@ -0,0 +1,16 @@ +import * as LabelPrimitive from '@rn-primitives/label'; +import { cn } from '@/lib/utils'; + +const Label = ({ className, ...props }: LabelPrimitive.TextProps) => ( + + + +); + +export { Label }; diff --git a/apps/vite-tanstack-router/src/routes/index.tsx b/apps/vite-tanstack-router/src/routes/index.tsx index 350e5d0f..39fc4d6f 100644 --- a/apps/vite-tanstack-router/src/routes/index.tsx +++ b/apps/vite-tanstack-router/src/routes/index.tsx @@ -17,6 +17,7 @@ import { CardTitle, } from '@/components/ui/card'; import { Checkbox } from '@/components/ui/checkbox'; +import { Label } from '@/components/ui/label'; import { Progress } from '@/components/ui/progress'; import { Separator } from '@/components/ui/separator'; import { Text } from '@/components/ui/text'; @@ -47,6 +48,7 @@ export function App() { + @@ -152,6 +154,15 @@ function CheckboxExample() { ); } +function LabelExample() { + return ( + + + + + ); +} + function ProgressExample() { return ; } diff --git a/packages/label/package.json b/packages/label/package.json index a0b4e97b..d8c22a73 100644 --- a/packages/label/package.json +++ b/packages/label/package.json @@ -1,6 +1,6 @@ { "name": "@rn-primitives/label", - "version": "1.1.0", + "version": "2.0.0-alpha.1", "description": "Primitive label", "license": "MIT", "main": "dist/index.js", @@ -13,11 +13,17 @@ "types": "./dist/index.d.ts", "default": "./dist/index.js" }, - "./dist/label": { - "import": "./dist/label.mjs", - "require": "./dist/label.js", - "types": "./dist/label.d.ts", - "default": "./dist/label.js" + "./native": { + "import": "./dist/native/index.mjs", + "require": "./dist/native/index.js", + "types": "./dist/native/index.d.ts", + "default": "./dist/native/index.js" + }, + "./web": { + "import": "./dist/web/index.mjs", + "require": "./dist/web/index.js", + "types": "./dist/web/index.d.ts", + "default": "./dist/web/index.js" } }, "files": [ @@ -32,9 +38,10 @@ "pub:release": "pnpm publish --access public" }, "dependencies": { - "@radix-ui/react-label": "^2.1.0", - "@rn-primitives/slot": "workspace:*", - "@rn-primitives/types": "workspace:*" + "@radix-ui/react-label": "^2.1.6", + "@rn-primitives/core": "workspace:*", + "@rn-primitives/types": "workspace:*", + "@rn-primitives/utils": "workspace:*" }, "devDependencies": { "@tsconfig/react-native": "^1.0.1", diff --git a/packages/label/src/base-types.ts b/packages/label/src/base-types.ts new file mode 100644 index 00000000..720a575f --- /dev/null +++ b/packages/label/src/base-types.ts @@ -0,0 +1,10 @@ +import type { ViewStyle } from 'react-native'; + +type BaseRootProps = { + children: React.ReactNode; + style?: ViewStyle; +}; + +type BaseTextProps = {}; + +export type { BaseRootProps, BaseTextProps }; diff --git a/packages/label/src/index.ts b/packages/label/src/index.ts index ce3a8fc3..33d97aee 100644 --- a/packages/label/src/index.ts +++ b/packages/label/src/index.ts @@ -1,2 +1,2 @@ -export * from './label'; -export * from './types'; +export { Root, Text } from './universal'; +export type { RootProps, TextProps } from './universal/types'; diff --git a/packages/label/src/label.tsx b/packages/label/src/label.tsx deleted file mode 100644 index f032ca35..00000000 --- a/packages/label/src/label.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { Pressable, Text as RNText } from 'react-native'; -import type { RootProps, RootRef, TextProps, TextRef } from './types'; - -const Root = ( - { - ref, - asChild, - ...props - }: RootProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : Pressable; - return ; -}; - -Root.displayName = 'RootNativeLabel'; - -const Text = ( - { - ref, - asChild, - ...props - }: TextProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : RNText; - return ; -}; - -Text.displayName = 'TextNativeLabel'; - -export { Root, Text }; diff --git a/packages/label/src/label.web.tsx b/packages/label/src/label.web.tsx deleted file mode 100644 index cdb61a89..00000000 --- a/packages/label/src/label.web.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import * as Label from '@radix-ui/react-label'; -import { Slot } from '@rn-primitives/slot'; -import * as React from 'react'; -import { Pressable, Text as RNText } from 'react-native'; -import type { RootProps, RootRef, TextProps, TextRef } from './types'; - -const Root = ( - { - ref, - asChild, - tabIndex = -1, - ...props - }: RootProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : Pressable; - return ; -}; - -Root.displayName = 'RootWebLabel'; - -const Text = ( - { - ref, - asChild, - nativeID, - htmlFor, - ...props - }: TextProps & { - ref: React.RefObject; - } -) => { - const Component = asChild ? Slot : RNText; - return ( - - - - ); -}; - -Text.displayName = 'TextWebLabel'; - -export { Root, Text }; diff --git a/packages/label/src/native/index.ts b/packages/label/src/native/index.ts new file mode 100644 index 00000000..5d0ff001 --- /dev/null +++ b/packages/label/src/native/index.ts @@ -0,0 +1,2 @@ +export { Root, Text } from './label-native'; +export type { RootProps, TextProps } from './types'; diff --git a/packages/label/src/native/label-native.native.tsx b/packages/label/src/native/label-native.native.tsx new file mode 100644 index 00000000..880ca075 --- /dev/null +++ b/packages/label/src/native/label-native.native.tsx @@ -0,0 +1,12 @@ +import { Pressable, Text as RNPText } from '@rn-primitives/core/dist/native'; +import type { RootProps, TextProps } from './types'; + +function Root({ ...props }: RootProps) { + return ; +} + +function Text({ ...props }: TextProps) { + return ; +} + +export { Root, Text }; diff --git a/packages/label/src/native/label-native.tsx b/packages/label/src/native/label-native.tsx new file mode 100644 index 00000000..9a88575d --- /dev/null +++ b/packages/label/src/native/label-native.tsx @@ -0,0 +1,17 @@ +import type { RootProps, TextProps } from './types'; + +function Root(props: RootProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/label/native is only supported on native.'); + } + return null; +} + +function Text(props: TextProps) { + if (process.env.NODE_ENV === 'development') { + console.log('`Text` from @rn-primitives/label/native is only supported on native.'); + } + return null; +} + +export { Root, Text }; diff --git a/packages/label/src/native/types.ts b/packages/label/src/native/types.ts new file mode 100644 index 00000000..7e9947ef --- /dev/null +++ b/packages/label/src/native/types.ts @@ -0,0 +1,16 @@ +import type { PressableProps, TextProps as RNPTextProps } from '@rn-primitives/core/dist/native'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps, BaseTextProps } from '../base-types'; + +type RootProps = Prettify< + Omit & BaseRootProps +>; +type RootPropsNativeOnly = Omit< + PressableProps & { isAnimated: false }, + 'children' | 'hitSlop' | 'style' +>; + +type TextProps = Prettify; +type TextPropsNativeOnly = RNPTextProps; + +export type { RootProps, RootPropsNativeOnly, TextProps, TextPropsNativeOnly }; diff --git a/packages/label/src/types.ts b/packages/label/src/types.ts deleted file mode 100644 index a6997c50..00000000 --- a/packages/label/src/types.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { - PressableRef, - SlottablePressableProps, - SlottableTextProps, - TextRef, -} from '@rn-primitives/types'; -import type { ViewStyle } from 'react-native'; - -type RootProps = Omit & { - children: React.ReactNode; - style?: ViewStyle; -}; - -type TextProps = SlottableTextProps & { - /** - * Equivalent to `id` so that the same value can be passed as `aria-labelledby` to the input element. - */ - nativeID?: string; - /** - * WEB ONLY - */ - htmlFor?: string; -}; - -type RootRef = PressableRef; - -export type { RootProps, RootRef, TextProps, TextRef }; diff --git a/packages/label/src/universal/index.ts b/packages/label/src/universal/index.ts new file mode 100644 index 00000000..e2e5ecf6 --- /dev/null +++ b/packages/label/src/universal/index.ts @@ -0,0 +1,2 @@ +export { Root, Text } from './label'; +export type { RootProps, TextProps } from './types'; diff --git a/packages/label/src/universal/label.tsx b/packages/label/src/universal/label.tsx new file mode 100644 index 00000000..a875d863 --- /dev/null +++ b/packages/label/src/universal/label.tsx @@ -0,0 +1,14 @@ +import { Root as RootNative, RootProps as RootPropsNative, Text as TextNative } from '../native'; +import type { RootProps, TextProps } from './types'; + +function Root({ web: _web, native, ref, ...props }: RootProps) { + return ( + + ); +} + +function Text({ web: _web, native, ...props }: TextProps) { + return ; +} + +export { Root, Text }; diff --git a/packages/label/src/universal/label.web.tsx b/packages/label/src/universal/label.web.tsx new file mode 100644 index 00000000..559c0b84 --- /dev/null +++ b/packages/label/src/universal/label.web.tsx @@ -0,0 +1,21 @@ +import { View } from '@rn-primitives/core'; +import { Root as RootWeb, Text as TextWeb } from '../web'; +import { RootProps, TextProps } from './types'; + +function Root({ web, native: _native, style, ...props }: RootProps) { + if (style) { + return ( + + + + ); + } + + return ; +} + +function Text({ web, native: _native, style, ...props }: TextProps) { + return ; +} + +export { Root, Text }; diff --git a/packages/label/src/universal/types.ts b/packages/label/src/universal/types.ts new file mode 100644 index 00000000..9cd2673c --- /dev/null +++ b/packages/label/src/universal/types.ts @@ -0,0 +1,19 @@ +import { PressablePropsUniversal, TextPropsUniversal } from '@rn-primitives/core'; +import type { Prettify } from '@rn-primitives/types'; +import type { BaseRootProps, BaseTextProps } from '../base-types'; +import type { RootPropsNativeOnly, TextPropsNativeOnly } from '../native/types'; +import type { RootPropsWebOnly, TextPropsWebOnly } from '../web/types'; + +type RootProps = Prettify< + BaseRootProps & + Omit & { + native?: RootPropsNativeOnly; + web?: RootPropsWebOnly; + } +>; + +type TextProps = Prettify< + BaseTextProps & TextPropsUniversal & { native?: TextPropsNativeOnly; web?: TextPropsWebOnly } +>; + +export type { RootProps, TextProps }; diff --git a/packages/label/src/web/index.ts b/packages/label/src/web/index.ts new file mode 100644 index 00000000..c5fde296 --- /dev/null +++ b/packages/label/src/web/index.ts @@ -0,0 +1,2 @@ +export { Root, Text } from './label-web'; +export type { RootProps, TextProps } from './types'; diff --git a/packages/label/src/web/label-web.tsx b/packages/label/src/web/label-web.tsx new file mode 100644 index 00000000..c63d10a4 --- /dev/null +++ b/packages/label/src/web/label-web.tsx @@ -0,0 +1,19 @@ +import { Label } from '@radix-ui/react-label'; +import * as React from 'react'; +import { RootProps, TextProps } from './types'; + +const Root = ((props: RootProps) => { + if (process.env.NODE_ENV === 'development') { + console.log('`Root` from @rn-primitives/label/web is only supported on web.'); + } + return null; +}) as React.FC; + +const Text = ((props: TextProps) => { + if (process.env.NODE_ENV === 'development') { + console.log('`Text` from @rn-primitives/label/web is only supported on web.'); + } + return null; +}) as unknown as typeof Label; + +export { Root, Text }; diff --git a/packages/label/src/web/label-web.web.tsx b/packages/label/src/web/label-web.web.tsx new file mode 100644 index 00000000..63c06b27 --- /dev/null +++ b/packages/label/src/web/label-web.web.tsx @@ -0,0 +1,15 @@ +import { Label } from '@radix-ui/react-label'; +import { withRNPrimitives } from '@rn-primitives/utils'; +import type { RootProps } from './types'; + +const Root = ({ children, tabIndex = -1, ...props }: RootProps) => { + return ( +
+ {children} +
+ ); +}; + +const Text = withRNPrimitives(Label, 'text'); + +export { Root, Text }; diff --git a/packages/label/src/web/types.ts b/packages/label/src/web/types.ts new file mode 100644 index 00000000..99f35b57 --- /dev/null +++ b/packages/label/src/web/types.ts @@ -0,0 +1,9 @@ +import type { Root } from '@radix-ui/react-label'; + +type RootProps = { children: React.ReactNode; tabIndex?: number }; +type RootPropsWebOnly = React.ComponentProps<'div'>; + +type TextProps = React.ComponentProps; +type TextPropsWebOnly = React.ComponentProps<'label'>; + +export type { RootProps, RootPropsWebOnly, TextProps, TextPropsWebOnly }; diff --git a/packages/label/tsup.config.ts b/packages/label/tsup.config.ts index b0908260..d382cce8 100644 --- a/packages/label/tsup.config.ts +++ b/packages/label/tsup.config.ts @@ -1,13 +1,32 @@ import { defineConfig, Options } from 'tsup'; export default defineConfig((options: Options) => ({ - entry: ['src/index.ts', 'src/label.tsx', 'src/label.web.tsx'], + entry: [ + 'src/index.ts', + 'src/universal/index.ts', + 'src/universal/label.tsx', + 'src/universal/label.web.tsx', + 'src/native/index.ts', + 'src/native/label-native.tsx', + 'src/native/label-native.native.tsx', + 'src/web/index.ts', + 'src/web/label-web.tsx', + 'src/web/label-web.web.tsx', + ], banner: { js: "'use client'", }, clean: true, format: ['cjs', 'esm'], - external: ['react', './label'], + external: [ + 'react', + './universal', + './label', + '../native', + './label-native', + '../web', + './label-web', + ], dts: true, ...options, esbuildOptions(options) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80e7ca48..644b697e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -713,6 +713,9 @@ importers: '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core + '@rn-primitives/label': + specifier: workspace:* + version: link:../../packages/label '@rn-primitives/progress': specifier: workspace:* version: link:../../packages/progress @@ -798,6 +801,9 @@ importers: '@rn-primitives/core': specifier: workspace:* version: link:../../packages/core + '@rn-primitives/label': + specifier: workspace:* + version: link:../../packages/label '@rn-primitives/progress': specifier: workspace:* version: link:../../packages/progress @@ -1319,14 +1325,17 @@ importers: packages/label: dependencies: '@radix-ui/react-label': - specifier: ^2.1.0 - version: 2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@rn-primitives/slot': + specifier: ^2.1.6 + version: 2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rn-primitives/core': specifier: workspace:* - version: link:../slot + version: link:../core '@rn-primitives/types': specifier: workspace:* version: link:../types + '@rn-primitives/utils': + specifier: workspace:* + version: link:../utils react-native-web: specifier: '*' version: 0.20.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -3405,8 +3414,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-label@2.1.3': - resolution: {integrity: sha512-zwSQ1NzSKG95yA0tvBMgv6XPHoqapJCcg9nsUBaQQ66iRBhZNhlpaQG2ERYYX4O4stkYFK5rxj5NsWfO9CS+Hg==} + '@radix-ui/react-label@2.1.6': + resolution: {integrity: sha512-S/hv1mTlgcPX2gCTJrWuTjSXf7ER3Zf7zWGtOprxhIIY93Qin3n5VgNA0Ez9AgrK/lEtlYgzLd4f5x6AVar4Yw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -10340,9 +10349,9 @@ snapshots: optionalDependencies: '@types/react': 19.0.10 - '@radix-ui/react-label@2.1.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@radix-ui/react-label@2.1.6(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@radix-ui/react-primitive': 2.0.3(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: From 653af9c0d497e3be9ac8abcdf2267ef0d98d6b39 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Tue, 13 May 2025 15:31:38 +0200 Subject: [PATCH 093/106] fix(label): add 'for' prop on Root, fix types --- packages/label/src/base-types.ts | 5 +--- .../label/src/native/label-native.native.tsx | 4 +-- packages/label/src/native/types.ts | 9 ++---- packages/label/src/universal/label.tsx | 4 +-- packages/label/src/universal/label.web.tsx | 11 +------- packages/label/src/universal/types.ts | 4 ++- packages/label/src/web/label-web.tsx | 5 ++-- packages/label/src/web/label-web.web.tsx | 28 ++++++++++++++----- packages/label/src/web/types.ts | 10 ++++--- 9 files changed, 39 insertions(+), 41 deletions(-) diff --git a/packages/label/src/base-types.ts b/packages/label/src/base-types.ts index 720a575f..41506a4d 100644 --- a/packages/label/src/base-types.ts +++ b/packages/label/src/base-types.ts @@ -1,8 +1,5 @@ -import type { ViewStyle } from 'react-native'; - type BaseRootProps = { - children: React.ReactNode; - style?: ViewStyle; + for?: string; }; type BaseTextProps = {}; diff --git a/packages/label/src/native/label-native.native.tsx b/packages/label/src/native/label-native.native.tsx index 880ca075..b087ab62 100644 --- a/packages/label/src/native/label-native.native.tsx +++ b/packages/label/src/native/label-native.native.tsx @@ -1,8 +1,8 @@ import { Pressable, Text as RNPText } from '@rn-primitives/core/dist/native'; import type { RootProps, TextProps } from './types'; -function Root({ ...props }: RootProps) { - return ; +function Root({ for: forProp, ...props }: RootProps) { + return ; } function Text({ ...props }: TextProps) { diff --git a/packages/label/src/native/types.ts b/packages/label/src/native/types.ts index 7e9947ef..0fbae3b3 100644 --- a/packages/label/src/native/types.ts +++ b/packages/label/src/native/types.ts @@ -2,13 +2,8 @@ import type { PressableProps, TextProps as RNPTextProps } from '@rn-primitives/c import type { Prettify } from '@rn-primitives/types'; import type { BaseRootProps, BaseTextProps } from '../base-types'; -type RootProps = Prettify< - Omit & BaseRootProps ->; -type RootPropsNativeOnly = Omit< - PressableProps & { isAnimated: false }, - 'children' | 'hitSlop' | 'style' ->; +type RootProps = Prettify; +type RootPropsNativeOnly = PressableProps; type TextProps = Prettify; type TextPropsNativeOnly = RNPTextProps; diff --git a/packages/label/src/universal/label.tsx b/packages/label/src/universal/label.tsx index a875d863..e533e114 100644 --- a/packages/label/src/universal/label.tsx +++ b/packages/label/src/universal/label.tsx @@ -2,9 +2,7 @@ import { Root as RootNative, RootProps as RootPropsNative, Text as TextNative } import type { RootProps, TextProps } from './types'; function Root({ web: _web, native, ref, ...props }: RootProps) { - return ( - - ); + return ; } function Text({ web: _web, native, ...props }: TextProps) { diff --git a/packages/label/src/universal/label.web.tsx b/packages/label/src/universal/label.web.tsx index 559c0b84..fb303ae0 100644 --- a/packages/label/src/universal/label.web.tsx +++ b/packages/label/src/universal/label.web.tsx @@ -1,16 +1,7 @@ -import { View } from '@rn-primitives/core'; import { Root as RootWeb, Text as TextWeb } from '../web'; import { RootProps, TextProps } from './types'; -function Root({ web, native: _native, style, ...props }: RootProps) { - if (style) { - return ( - - - - ); - } - +function Root({ ref, web, native: _native, style, ...props }: RootProps) { return ; } diff --git a/packages/label/src/universal/types.ts b/packages/label/src/universal/types.ts index 9cd2673c..239c8388 100644 --- a/packages/label/src/universal/types.ts +++ b/packages/label/src/universal/types.ts @@ -6,7 +6,9 @@ import type { RootPropsWebOnly, TextPropsWebOnly } from '../web/types'; type RootProps = Prettify< BaseRootProps & - Omit & { + PressablePropsUniversal & { + children?: React.ReactNode; + } & { native?: RootPropsNativeOnly; web?: RootPropsWebOnly; } diff --git a/packages/label/src/web/label-web.tsx b/packages/label/src/web/label-web.tsx index c63d10a4..b3c0f933 100644 --- a/packages/label/src/web/label-web.tsx +++ b/packages/label/src/web/label-web.tsx @@ -1,13 +1,12 @@ import { Label } from '@radix-ui/react-label'; -import * as React from 'react'; import { RootProps, TextProps } from './types'; -const Root = ((props: RootProps) => { +const Root = (props: RootProps) => { if (process.env.NODE_ENV === 'development') { console.log('`Root` from @rn-primitives/label/web is only supported on web.'); } return null; -}) as React.FC; +}; const Text = ((props: TextProps) => { if (process.env.NODE_ENV === 'development') { diff --git a/packages/label/src/web/label-web.web.tsx b/packages/label/src/web/label-web.web.tsx index 63c06b27..97143104 100644 --- a/packages/label/src/web/label-web.web.tsx +++ b/packages/label/src/web/label-web.web.tsx @@ -1,15 +1,29 @@ import { Label } from '@radix-ui/react-label'; -import { withRNPrimitives } from '@rn-primitives/utils'; -import type { RootProps } from './types'; +import { Pressable } from '@rn-primitives/core/dist/web'; +import * as React from 'react'; +import type { RootProps, TextProps } from './types'; -const Root = ({ children, tabIndex = -1, ...props }: RootProps) => { +const RootInternalContext = React.createContext<{ forProp?: string } | null>(null); + +const Root = ({ children, for: forProp, tabIndex = -1, ...props }: RootProps) => { return ( -
- {children} -
+ + + {children} + + ); }; -const Text = withRNPrimitives(Label, 'text'); +const Text = ({ children, ...props }: TextProps) => { + const context = React.useContext(RootInternalContext); + const forProp = context?.forProp; + + return ( + + ); +}; export { Root, Text }; diff --git a/packages/label/src/web/types.ts b/packages/label/src/web/types.ts index 99f35b57..9dde2105 100644 --- a/packages/label/src/web/types.ts +++ b/packages/label/src/web/types.ts @@ -1,9 +1,11 @@ import type { Root } from '@radix-ui/react-label'; +import type { PressableProps } from '@rn-primitives/core/dist/web'; +import type { BaseRootProps, BaseTextProps } from '../base-types'; -type RootProps = { children: React.ReactNode; tabIndex?: number }; -type RootPropsWebOnly = React.ComponentProps<'div'>; +type RootProps = BaseRootProps & PressableProps<'div'>; +type RootPropsWebOnly = { tabIndex?: number } & PressableProps<'div'>; -type TextProps = React.ComponentProps; -type TextPropsWebOnly = React.ComponentProps<'label'>; +type TextProps = BaseTextProps & React.ComponentProps; +type TextPropsWebOnly = React.ComponentProps; export type { RootProps, RootPropsWebOnly, TextProps, TextPropsWebOnly }; From 67b730006a80279a169bf3094bb250248cd748d2 Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Tue, 13 May 2025 15:42:29 +0200 Subject: [PATCH 094/106] fix(label): update example apps --- apps/expo-nativewind/app/(components)/label.tsx | 4 ++-- apps/expo-nativewind/components/ui/label.tsx | 2 +- apps/nextjs-nativewind/src/app/page.tsx | 2 +- apps/nextjs-nativewind/src/components/ui/label.tsx | 2 +- apps/nextjs-no-rn/src/app/page.tsx | 2 +- apps/nextjs-no-rn/src/components/ui/label.tsx | 5 ++++- apps/vite-tanstack-router/src/components/ui/label.tsx | 5 ++++- apps/vite-tanstack-router/src/routes/index.tsx | 2 +- 8 files changed, 15 insertions(+), 9 deletions(-) diff --git a/apps/expo-nativewind/app/(components)/label.tsx b/apps/expo-nativewind/app/(components)/label.tsx index 3df67758..411aee52 100644 --- a/apps/expo-nativewind/app/(components)/label.tsx +++ b/apps/expo-nativewind/app/(components)/label.tsx @@ -6,8 +6,8 @@ export default function LabelScreen() { return ( - + ); } diff --git a/apps/expo-nativewind/components/ui/label.tsx b/apps/expo-nativewind/components/ui/label.tsx index 9591fbc5..f7feb05b 100644 --- a/apps/expo-nativewind/components/ui/label.tsx +++ b/apps/expo-nativewind/components/ui/label.tsx @@ -6,7 +6,7 @@ const Label = ({ className, native, ...props -}: Pick & LabelPrimitive.TextProps) => ( +}: Pick & LabelPrimitive.TextProps) => ( - +
); diff --git a/apps/nextjs-nativewind/src/components/ui/label.tsx b/apps/nextjs-nativewind/src/components/ui/label.tsx index 66cd66f7..25430831 100644 --- a/apps/nextjs-nativewind/src/components/ui/label.tsx +++ b/apps/nextjs-nativewind/src/components/ui/label.tsx @@ -6,7 +6,7 @@ import { cn } from '~/lib/utils'; const Label = ({ className, ...props -}: Pick & LabelPrimitive.TextProps) => ( +}: Pick & LabelPrimitive.TextProps) => ( - +
); diff --git a/apps/nextjs-no-rn/src/components/ui/label.tsx b/apps/nextjs-no-rn/src/components/ui/label.tsx index 681fdbe1..34c6abe4 100644 --- a/apps/nextjs-no-rn/src/components/ui/label.tsx +++ b/apps/nextjs-no-rn/src/components/ui/label.tsx @@ -1,7 +1,10 @@ import * as LabelPrimitive from '@rn-primitives/label'; import { cn } from '~/lib/utils'; -const Label = ({ className, ...props }: LabelPrimitive.TextProps) => ( +const Label = ({ + className, + ...props +}: Pick & LabelPrimitive.TextProps) => ( ( +const Label = ({ + className, + ...props +}: Pick & LabelPrimitive.TextProps) => ( - +
); From fb6a747f40f768030f6f789786e0afa5b6ed159c Mon Sep 17 00:00:00 2001 From: Paul Kilmurray Date: Tue, 13 May 2025 21:42:44 +0200 Subject: [PATCH 095/106] fix(label): remove deconstructed children --- packages/label/src/universal/label.web.tsx | 10 +++++++++- packages/label/src/universal/types.ts | 2 -- packages/label/src/web/label-web.web.tsx | 10 ++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/label/src/universal/label.web.tsx b/packages/label/src/universal/label.web.tsx index fb303ae0..bf04bd64 100644 --- a/packages/label/src/universal/label.web.tsx +++ b/packages/label/src/universal/label.web.tsx @@ -1,11 +1,19 @@ import { Root as RootWeb, Text as TextWeb } from '../web'; import { RootProps, TextProps } from './types'; +import { View } from '@rn-primitives/core'; -function Root({ ref, web, native: _native, style, ...props }: RootProps) { +function Root({ ref, web, native: _native, ...props }: RootProps) { return ; } function Text({ web, native: _native, style, ...props }: TextProps) { + if (style) { + return ( + + + + ); + } return ; } diff --git a/packages/label/src/universal/types.ts b/packages/label/src/universal/types.ts index 239c8388..c34995b9 100644 --- a/packages/label/src/universal/types.ts +++ b/packages/label/src/universal/types.ts @@ -7,8 +7,6 @@ import type { RootPropsWebOnly, TextPropsWebOnly } from '../web/types'; type RootProps = Prettify< BaseRootProps & PressablePropsUniversal & { - children?: React.ReactNode; - } & { native?: RootPropsNativeOnly; web?: RootPropsWebOnly; } diff --git a/packages/label/src/web/label-web.web.tsx b/packages/label/src/web/label-web.web.tsx index 97143104..e492b9e8 100644 --- a/packages/label/src/web/label-web.web.tsx +++ b/packages/label/src/web/label-web.web.tsx @@ -8,9 +8,7 @@ const RootInternalContext = React.createContext<{ forProp?: string } | null>(nul const Root = ({ children, for: forProp, tabIndex = -1, ...props }: RootProps) => { return ( - - {children} - + ); }; @@ -19,11 +17,7 @@ const Text = ({ children, ...props }: TextProps) => { const context = React.useContext(RootInternalContext); const forProp = context?.forProp; - return ( - - ); + return - +
); } diff --git a/apps/expo-nativewind/app/(components)/popover.tsx b/apps/expo-nativewind/app/(components)/popover.tsx index 28003cec..7954cc78 100644 --- a/apps/expo-nativewind/app/(components)/popover.tsx +++ b/apps/expo-nativewind/app/(components)/popover.tsx @@ -74,13 +74,14 @@ function LabelledInput({ return ( -
@radix-ui/react-accordion** - - ```bash - npx expo install @radix-ui/react-accordion - ``` - -
- - **Copy/paste the following code for web to `~/components/primitives/accordion/accordion.web.tsx`** - - - - **Copy/paste the following code for native to `~/components/primitives/accordion/accordion.tsx`** - - - - **Copy/paste the following code for types to `~/components/primitives/accordion/types.ts`** - - - - **Copy/paste the following code for exporting to `~/components/primitives/accordion/index.ts`** - - - - - **Copy/paste the following code for native to `~/components/primitives/accordion/index.tsx`** - - - - **Copy/paste the following code for types to `~/components/primitives/accordion/types.ts`** - - - - - - +Install the component via your command line. +```bash +npx expo install @rn-primitives/accordion +``` ## Usage diff --git a/apps/docs/src/content/docs/alert-dialog.mdx b/apps/docs/src/content/docs/alert-dialog.mdx index 28f52c32..a6228502 100644 --- a/apps/docs/src/content/docs/alert-dialog.mdx +++ b/apps/docs/src/content/docs/alert-dialog.mdx @@ -9,83 +9,27 @@ description: A modal dialog that interrupts the user with important content and import Code from '@/components/ManualCode.astro'; import { LinkButton } from '@/components/react/LinkButton'; import { Aside, Tabs, TabItem } from '@astrojs/starlight/components'; -import importedNativeCode from '@/../node_modules/@rn-primitives/alert-dialog/src/alert-dialog.tsx?raw'; -import importedWebCode from '@/../node_modules/@rn-primitives/alert-dialog/src/alert-dialog.web.tsx?raw'; -import importedTypesCode from '@/../node_modules/@rn-primitives/alert-dialog/src/types.ts?raw'; -import importedIndexCode from '@/../node_modules/@rn-primitives/alert-dialog/src/index.ts?raw'; + A modal dialog that interrupts the user with important content and expects a response. ## Installation - - - - Install the component via your command line. - - ```bash - npx expo install @rn-primitives/alert-dialog - ``` - - +Install the component via your command line. - - - -
- - - **Install @radix-ui/react-alert-dialog** + + ## Usage