Initial commit: OpenCode mobile app (extracted from opencode monorepo)
This commit is contained in:
31
src/types/expo-icons.d.ts
vendored
Normal file
31
src/types/expo-icons.d.ts
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
// Override @expo/vector-icons types to fix React 18/19 JSX element type mismatch.
|
||||
// The library bundles @types/react@18 internally which conflicts with our React 19.
|
||||
// This declaration makes Ionicons (and other icon sets) work as valid JSX elements.
|
||||
declare module "@expo/vector-icons" {
|
||||
import type { TextProps } from "react-native"
|
||||
|
||||
interface IconProps extends TextProps {
|
||||
name: string
|
||||
size?: number
|
||||
color?: string
|
||||
style?: any
|
||||
}
|
||||
|
||||
interface IconComponent extends React.FC<IconProps> {
|
||||
glyphMap: Record<string, number>
|
||||
}
|
||||
|
||||
export const Ionicons: IconComponent
|
||||
export const MaterialIcons: IconComponent
|
||||
export const MaterialCommunityIcons: IconComponent
|
||||
export const FontAwesome: IconComponent
|
||||
export const FontAwesome5: IconComponent
|
||||
export const Feather: IconComponent
|
||||
export const AntDesign: IconComponent
|
||||
export const Entypo: IconComponent
|
||||
export const EvilIcons: IconComponent
|
||||
export const Foundation: IconComponent
|
||||
export const Octicons: IconComponent
|
||||
export const SimpleLineIcons: IconComponent
|
||||
export const Zocial: IconComponent
|
||||
}
|
||||
100
src/types/react-native-marked.d.ts
vendored
Normal file
100
src/types/react-native-marked.d.ts
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
// Override react-native-marked types to fix React 18/19 ReactNode mismatch.
|
||||
// The library bundles @types/react@18 internally which conflicts with our React 19.
|
||||
// This declaration re-exports the module with React 19-compatible types.
|
||||
declare module "react-native-marked" {
|
||||
import type { ReactNode } from "react"
|
||||
import type { FlatListProps, ImageStyle, TextStyle, ViewStyle } from "react-native"
|
||||
import type { Hooks, Tokenizer } from "marked"
|
||||
|
||||
export interface RendererInterface {
|
||||
paragraph(children: ReactNode[], styles?: ViewStyle): ReactNode
|
||||
blockquote(children: ReactNode[], styles?: ViewStyle): ReactNode
|
||||
heading(text: string | ReactNode[], styles?: TextStyle, depth?: number): ReactNode
|
||||
code(text: string, language?: string, containerStyle?: ViewStyle, textStyle?: TextStyle): ReactNode
|
||||
hr(styles?: ViewStyle): ReactNode
|
||||
listItem(children: ReactNode[], styles?: ViewStyle): ReactNode
|
||||
list(
|
||||
ordered: boolean,
|
||||
li: ReactNode[],
|
||||
listStyle?: ViewStyle,
|
||||
textStyle?: TextStyle,
|
||||
startIndex?: number,
|
||||
): ReactNode
|
||||
escape(text: string, styles?: TextStyle): ReactNode
|
||||
link(children: string | ReactNode[], href: string, styles?: TextStyle, title?: string): ReactNode
|
||||
image(uri: string, alt?: string, style?: ImageStyle, title?: string): ReactNode
|
||||
strong(children: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
em(children: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
codespan(text: string, styles?: TextStyle): ReactNode
|
||||
br(): ReactNode
|
||||
del(children: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
text(text: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
html(text: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
linkImage(href: string, imageUrl: string, alt?: string, style?: ImageStyle, title?: string | null): ReactNode
|
||||
table(
|
||||
header: ReactNode[][],
|
||||
rows: ReactNode[][][],
|
||||
tableStyle?: ViewStyle,
|
||||
rowStyle?: ViewStyle,
|
||||
cellStyle?: ViewStyle,
|
||||
): ReactNode
|
||||
}
|
||||
|
||||
export class Renderer implements RendererInterface {
|
||||
paragraph(children: ReactNode[], styles?: ViewStyle): ReactNode
|
||||
blockquote(children: ReactNode[], styles?: ViewStyle): ReactNode
|
||||
heading(text: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
code(text: string, language?: string, containerStyle?: ViewStyle, textStyle?: TextStyle): ReactNode
|
||||
hr(styles?: ViewStyle): ReactNode
|
||||
listItem(children: ReactNode[], styles?: ViewStyle): ReactNode
|
||||
list(
|
||||
ordered: boolean,
|
||||
li: ReactNode[],
|
||||
listStyle?: ViewStyle,
|
||||
textStyle?: TextStyle,
|
||||
startIndex?: number,
|
||||
): ReactNode
|
||||
escape(text: string, styles?: TextStyle): ReactNode
|
||||
link(children: string | ReactNode[], href: string, styles?: TextStyle, title?: string): ReactNode
|
||||
image(uri: string, alt?: string, style?: ImageStyle, title?: string): ReactNode
|
||||
strong(children: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
em(children: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
codespan(text: string, styles?: TextStyle): ReactNode
|
||||
br(): ReactNode
|
||||
del(children: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
text(text: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
html(text: string | ReactNode[], styles?: TextStyle): ReactNode
|
||||
linkImage(href: string, imageUrl: string, alt?: string, style?: ImageStyle, title?: string | null): ReactNode
|
||||
table(
|
||||
header: ReactNode[][],
|
||||
rows: ReactNode[][][],
|
||||
tableStyle?: ViewStyle,
|
||||
rowStyle?: ViewStyle,
|
||||
cellStyle?: ViewStyle,
|
||||
): ReactNode
|
||||
getKey(): string
|
||||
}
|
||||
|
||||
export interface UserTheme {
|
||||
colors?: Record<string, string>
|
||||
spacing?: Record<string, number>
|
||||
}
|
||||
|
||||
export interface MarkedStyles {
|
||||
[key: string]: ViewStyle | TextStyle | ImageStyle | undefined
|
||||
}
|
||||
|
||||
export interface MarkdownProps {
|
||||
value: string
|
||||
flatListProps?: Omit<FlatListProps<ReactNode>, "data" | "renderItem" | "horizontal">
|
||||
theme?: UserTheme
|
||||
renderer?: RendererInterface
|
||||
styles?: MarkedStyles | Record<string, unknown>
|
||||
baseUrl?: string
|
||||
tokenizer?: Tokenizer
|
||||
hooks?: Hooks
|
||||
}
|
||||
|
||||
const Markdown: React.FC<MarkdownProps>
|
||||
export default Markdown
|
||||
}
|
||||
Reference in New Issue
Block a user