UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

127 lines (104 loc) • 3.45 kB
import type { ReactNode } from 'react' import type { ViewProps } from 'react-native' import type { ZStackAlignment } from './generated/containerTypes' import type { SFSymbolName } from './generated/sfSymbolNames' import type { ControlGroupStyle } from './generated/swiftui' import type { ViewSlotConfiguration } from './generated/viewSlots' // hand-written round-2 container types, pending the container emitter (see // listTypes.ts for round 1). they merge into src/generated/containerTypes.ts // when the emitter carries these views. export const swipeActionsEdges = ['leading', 'trailing'] as const export type SwipeActionsEdge = (typeof swipeActionsEdges)[number] export interface ControlGroupProps extends ViewProps { label?: string systemImage?: SFSymbolName | '' controlGroupStyle?: ControlGroupStyle children: ReactNode } export interface DisclosureGroupProps extends ViewProps { label: string isExpanded: boolean onIsExpandedChange: (isExpanded: boolean) => void revision?: number children: ReactNode } export type DividerProps = ViewProps export interface LinkProps extends ViewProps { destination: string label?: string children?: ReactNode } export interface GroupProps extends ViewProps { children: ReactNode } export interface GroupBoxProps extends ViewProps { label?: string children?: ReactNode } export interface ViewThatFitsProps extends ViewProps { axes?: ViewThatFitsAxes children: ReactNode } export const viewThatFitsAxes = ['horizontal', 'vertical', 'both'] as const export type ViewThatFitsAxes = (typeof viewThatFitsAxes)[number] export interface GlassEffectContainerProps extends ViewProps { spacing?: number children: ReactNode } // the geometry SwiftUI proposes to a GeometryReader's content, in points. it // mirrors GeometryProxy's native size, safe-area insets and coordinate-space // frames. named spaces and // opaque anchor resolution need native value mappings and remain unsupported. export interface GeometryProxySize { width: number height: number } export interface GeometryProxySafeAreaInsets { top: number leading: number bottom: number trailing: number } export interface GeometryProxyFrame { x: number y: number width: number height: number } export interface GeometryProxy { readonly size: GeometryProxySize readonly safeAreaInsets: GeometryProxySafeAreaInsets frame(coordinateSpace: 'global' | 'local'): GeometryProxyFrame } // ViewProps.children is ReactNode, which cannot hold the content closure, so // the reader omits it and declares the closure instead. export interface GeometryReaderProps extends Omit<ViewProps, 'children'> { children: (geometry: GeometryProxy) => ReactNode } export interface OverlayProps extends ViewProps { alignment?: ZStackAlignment children: ReactNode } export interface OverlayContentProps extends ViewProps { children: ReactNode } export type ViewSlotProps = ViewProps & ViewSlotConfiguration & { children: ReactNode } export interface SwipeActionsProps extends ViewProps { children: ReactNode } export interface SwipeActionsActionsProps extends ViewProps { edge?: SwipeActionsEdge allowsFullSwipe?: boolean children: ReactNode } export interface PageProps { id: string testID?: string children: ReactNode } export interface PagerProps extends ViewProps { selection: string onSelectionChange: (id: string) => void revision?: number children: ReactNode }