Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
3.0 kB · 113 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114import { type AccessibilityProps, type AccessibilityRole, type GestureResponderEvent, type PressableProps,} from 'react-native'import type React from 'react'
import {type TextStyleProp, type ViewStyleProp} from '#/alf'import type * as Dialog from '#/components/Dialog'import {type Props as SVGIconProps} from '#/components/icons/common'
export type ContextType = { control: Dialog.DialogOuterProps['control']}
export type ItemContextType = { disabled: boolean}
export type RadixPassThroughTriggerProps = { ref: React.RefObject<any> id: string type: 'button' disabled: boolean ['data-disabled']: boolean ['data-state']: string ['aria-controls']?: string ['aria-haspopup']?: boolean ['aria-expanded']?: AccessibilityProps['aria-expanded'] onKeyDown: (e: React.KeyboardEvent) => void /** * Radix provides this, but we override on web to use `onPress` instead, * which is less sensitive while scrolling. */ onPointerDown: PressableProps['onPointerDown']}export type TriggerProps = { children(props: TriggerChildProps): React.ReactNode label: string hint?: string role?: AccessibilityRole}export type TriggerChildProps = | { IS_NATIVE: true control: Dialog.DialogOuterProps['control'] state: { /** * Web only, `false` on native */ hovered: false focused: boolean pressed: boolean } /** * We don't necessarily know what these will be spread on to, so we * should add props one-by-one. * * On web, these properties are applied to a parent `Pressable`, so this * object is empty. */ props: { ref: null onPress: () => void onFocus: () => void onBlur: () => void onPressIn: () => void onPressOut: () => void accessibilityHint?: string accessibilityLabel: string accessibilityRole: AccessibilityRole } } | { IS_NATIVE: false control: Dialog.DialogOuterProps['control'] state: { hovered: boolean focused: boolean /** * Native only, `false` on web */ pressed: false } props: RadixPassThroughTriggerProps & { onPress: () => void onFocus: () => void onBlur: () => void onMouseEnter: () => void onMouseLeave: () => void accessibilityHint?: string accessibilityLabel: string accessibilityRole: AccessibilityRole } }
export type ItemProps = React.PropsWithChildren< Omit<PressableProps, 'style'> & ViewStyleProp & { label: string onPress: (e: GestureResponderEvent) => void }>
export type ItemTextProps = React.PropsWithChildren<TextStyleProp & {}>export type ItemIconProps = React.PropsWithChildren<{ icon: React.ComponentType<SVGIconProps> position?: 'left' | 'right' fill?: (props: {disabled: boolean}) => string}>
export type GroupProps = React.PropsWithChildren<ViewStyleProp & {}>