import React from 'react'
import {ScrollView, View} from 'react-native'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
import {
type CommonNavigatorParams,
type NativeStackScreenProps,
} from '#/lib/routes/types'
import {s} from '#/lib/styles'
import {type PaletteColorName, ThemeProvider} from '#/lib/ThemeContext'
import {EmptyState} from '#/view/com/util/EmptyState'
import {ErrorMessage} from '#/view/com/util/error/ErrorMessage'
import {ErrorScreen} from '#/view/com/util/error/ErrorScreen'
import {Button} from '#/view/com/util/forms/Button'
import {ToggleButton} from '#/view/com/util/forms/ToggleButton'
import * as LoadingPlaceholder from '#/view/com/util/LoadingPlaceholder'
import {Text} from '#/view/com/util/text/Text'
import * as Toast from '#/view/com/util/Toast'
import {ViewHeader} from '#/view/com/util/ViewHeader'
import {ViewSelector} from '#/view/com/util/ViewSelector'
import * as Layout from '#/components/Layout'
const MAIN_VIEWS = ['Base', 'Controls', 'Error', 'Notifs']
export const DebugScreen = ({}: NativeStackScreenProps<
CommonNavigatorParams,
'Debug'
>) => {
const [colorScheme, setColorScheme] = React.useState<'light' | 'dark'>(
'light',
)
const onToggleColorScheme = () => {
setColorScheme(colorScheme === 'light' ? 'dark' : 'light')
}
return (
)
}
function DebugInner({
colorScheme,
onToggleColorScheme,
}: {
colorScheme: 'light' | 'dark'
onToggleColorScheme: () => void
}) {
const [currentView, setCurrentView] = React.useState(0)
const pal = usePalette('default')
const {_} = useLingui()
const renderItem = (item: any) => {
return (
{item.currentView === 3 ? (
) : item.currentView === 2 ? (
) : item.currentView === 1 ? (
) : (
)}
)
}
const items = [{currentView}]
return (
)
}
function Heading({label}: {label: string}) {
const pal = usePalette('default')
return (
{label}
)
}
function BaseView() {
return (
)
}
function ControlsView() {
return (
)
}
function ErrorView() {
return (
{}}
/>
{}}
/>
{}}
numberOfLines={1}
/>
)
}
function NotifsView() {
const triggerPush = () => {
// TODO: implement local notification for testing
}
const triggerToast = () => {
Toast.show('The task has been completed')
}
const triggerToast2 = () => {
Toast.show('The task has been completed successfully and with no problems')
}
return (
)
}
function PaletteView({palette}: {palette: PaletteColorName}) {
const defaultPal = usePalette('default')
const pal = usePalette(palette)
return (
{palette} colors
Light text
Link text
{palette !== 'default' && (
Inverted text
)}
)
}
function TypographyView() {
const pal = usePalette('default')
return (
'2xl-thin' lorem ipsum dolor
'2xl' lorem ipsum dolor
'2xl-medium' lorem ipsum dolor
'2xl-bold' lorem ipsum dolor
'2xl-heavy' lorem ipsum dolor
'xl-thin' lorem ipsum dolor
'xl' lorem ipsum dolor
'xl-medium' lorem ipsum dolor
'xl-bold' lorem ipsum dolor
'xl-heavy' lorem ipsum dolor
'lg-thin' lorem ipsum dolor
'lg' lorem ipsum dolor
'lg-medium' lorem ipsum dolor
'lg-bold' lorem ipsum dolor
'lg-heavy' lorem ipsum dolor
'md-thin' lorem ipsum dolor
'md' lorem ipsum dolor
'md-medium' lorem ipsum dolor
'md-bold' lorem ipsum dolor
'md-heavy' lorem ipsum dolor
'sm-thin' lorem ipsum dolor
'sm' lorem ipsum dolor
'sm-medium' lorem ipsum dolor
'sm-bold' lorem ipsum dolor
'sm-heavy' lorem ipsum dolor
'xs-thin' lorem ipsum dolor
'xs' lorem ipsum dolor
'xs-medium' lorem ipsum dolor
'xs-bold' lorem ipsum dolor
'xs-heavy' lorem ipsum dolor
'title-2xl' lorem ipsum dolor
'title-xl' lorem ipsum dolor
'title-lg' lorem ipsum dolor
'title' lorem ipsum dolor
Button
Button-lg
)
}
function EmptyStateView() {
return
}
function LoadingPlaceholderView() {
return (
<>
>
)
}
function ButtonsView() {
const defaultPal = usePalette('default')
const buttonStyles = {marginRight: 5}
return (
)
}
function ToggleButtonsView() {
const defaultPal = usePalette('default')
const buttonStyles = s.mb5
const [isSelected, setIsSelected] = React.useState(false)
const onToggle = () => setIsSelected(!isSelected)
return (
)
}