Files
2026-02-05 13:16:05 +08:00

232 lines
8.6 KiB
TypeScript

/* eslint-disable react/jsx-key */
import { TextStyle, ViewStyle } from "react-native"
import { Icon } from "@/components/Icon"
import { TextField } from "@/components/TextField"
import type { ThemedStyle } from "@/theme/types"
import { DemoDivider } from "../DemoDivider"
import { Demo } from "./types"
import { DemoUseCase } from "../DemoUseCase"
const $customInputStyle: ThemedStyle<TextStyle> = ({ colors }) => ({
backgroundColor: colors.error,
color: colors.palette.neutral100,
})
const $customInputWrapperStyle: ThemedStyle<ViewStyle> = ({ colors }) => ({
backgroundColor: colors.error,
borderColor: colors.palette.neutral800,
})
const $customContainerStyle: ThemedStyle<ViewStyle> = ({ colors }) => ({
backgroundColor: colors.error,
})
const $customLabelAndHelperStyle: ThemedStyle<TextStyle> = ({ colors }) => ({
color: colors.palette.neutral100,
})
const $customInputWithAbsoluteAccessoriesStyle: ThemedStyle<ViewStyle> = ({ spacing }) => ({
marginHorizontal: spacing.xxl,
})
const $customLeftAccessoryStyle: ThemedStyle<ViewStyle> = ({ colors }) => ({
backgroundColor: colors.error,
position: "absolute",
left: 0,
})
const $customRightAccessoryStyle: ThemedStyle<ViewStyle> = ({ colors }) => ({
backgroundColor: colors.error,
position: "absolute",
right: 0,
})
export const DemoTextField: Demo = {
name: "TextField",
description: "demoTextField:description",
data: ({ themed }) => [
<DemoUseCase
name="demoTextField:useCase.statuses.name"
description="demoTextField:useCase.statuses.description"
>
<TextField
value="Labore occaecat in id eu commodo aliquip occaecat veniam officia pariatur."
labelTx="demoTextField:useCase.statuses.noStatus.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.statuses.noStatus.helper"
helperTxOptions={{ prop: "helper" }}
placeholderTx="demoTextField:useCase.statuses.noStatus.placeholder"
placeholderTxOptions={{ prop: "placeholder" }}
/>
<DemoDivider size={24} />
<TextField
status="error"
value="Est Lorem duis sunt sunt duis proident minim elit dolore incididunt pariatur eiusmod anim cillum."
labelTx="demoTextField:useCase.statuses.error.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.statuses.error.helper"
helperTxOptions={{ prop: "helper" }}
placeholderTx="demoTextField:useCase.statuses.error.placeholder"
placeholderTxOptions={{ prop: "placeholder" }}
/>
<DemoDivider size={24} />
<TextField
status="disabled"
value="Eu ipsum mollit non minim voluptate nulla fugiat aliqua ullamco aute consectetur nulla nulla amet."
labelTx="demoTextField:useCase.statuses.disabled.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.statuses.disabled.helper"
helperTxOptions={{ prop: "helper" }}
placeholderTx="demoTextField:useCase.statuses.disabled.placeholder"
placeholderTxOptions={{ prop: "placeholder" }}
/>
</DemoUseCase>,
<DemoUseCase
name="demoTextField:useCase.passingContent.name"
description="demoTextField:useCase.passingContent.description"
>
<TextField
labelTx="demoTextField:useCase.passingContent.viaLabel.labelTx"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.passingContent.viaLabel.helper"
helperTxOptions={{ prop: "helper" }}
placeholderTx="demoTextField:useCase.passingContent.viaLabel.placeholder"
placeholderTxOptions={{ prop: "placeholder" }}
/>
<DemoDivider size={24} />
<TextField
labelTx="showroomScreen:demoViaSpecifiedTxProp"
labelTxOptions={{ prop: "label" }}
helperTx="showroomScreen:demoViaSpecifiedTxProp"
helperTxOptions={{ prop: "helper" }}
placeholderTx="showroomScreen:demoViaSpecifiedTxProp"
placeholderTxOptions={{ prop: "placeholder" }}
/>
<DemoDivider size={24} />
<TextField
value="Reprehenderit Lorem magna non consequat ullamco cupidatat."
labelTx="demoTextField:useCase.passingContent.rightAccessory.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.passingContent.rightAccessory.helper"
helperTxOptions={{ prop: "helper" }}
RightAccessory={(props) => <Icon icon="ladybug" containerStyle={props.style} size={21} />}
/>
<DemoDivider size={24} />
<TextField
labelTx="demoTextField:useCase.passingContent.leftAccessory.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.passingContent.leftAccessory.helper"
helperTxOptions={{ prop: "helper" }}
value="Eiusmod exercitation mollit elit magna occaecat eiusmod Lorem minim veniam."
LeftAccessory={(props) => <Icon icon="ladybug" containerStyle={props.style} size={21} />}
/>
<DemoDivider size={24} />
<TextField
labelTx="demoTextField:useCase.passingContent.supportsMultiline.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.passingContent.supportsMultiline.helper"
helperTxOptions={{ prop: "helper" }}
value="Eiusmod exercitation mollit elit magna occaecat eiusmod Lorem minim veniam. Laborum Lorem velit velit minim irure ad in ut adipisicing consectetur."
multiline
RightAccessory={(props) => <Icon icon="ladybug" containerStyle={props.style} size={21} />}
/>
</DemoUseCase>,
<DemoUseCase
name="demoTextField:useCase.styling.name"
description="demoTextField:useCase.styling.description"
>
<TextField
labelTx="demoTextField:useCase.styling.styleInput.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.styling.styleInput.helper"
helperTxOptions={{ prop: "helper" }}
value="Laborum cupidatat aliquip sunt sunt voluptate sint sit proident sunt mollit exercitation ullamco ea elit."
style={themed($customInputStyle)}
/>
<DemoDivider size={24} />
<TextField
labelTx="demoTextField:useCase.styling.styleInputWrapper.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.styling.styleInputWrapper.helper"
helperTxOptions={{ prop: "helper" }}
value="Aute velit esse dolore pariatur exercitation irure nulla do sunt in duis mollit duis et."
inputWrapperStyle={themed($customInputWrapperStyle)}
style={themed($customInputStyle)}
/>
<DemoDivider size={24} />
<TextField
labelTx="demoTextField:useCase.styling.styleContainer.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.styling.styleContainer.helper"
helperTxOptions={{ prop: "helper" }}
value="Aliquip proident commodo adipisicing non adipisicing Lorem excepteur ullamco voluptate laborum."
style={themed($customInputStyle)}
containerStyle={themed($customContainerStyle)}
inputWrapperStyle={themed($customInputWrapperStyle)}
/>
<DemoDivider size={24} />
<TextField
labelTx="demoTextField:useCase.styling.styleLabel.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.styling.styleLabel.helper"
helperTxOptions={{ prop: "helper" }}
value="Ex culpa in consectetur dolor irure velit."
style={themed($customInputStyle)}
containerStyle={themed($customContainerStyle)}
inputWrapperStyle={themed($customInputWrapperStyle)}
HelperTextProps={{ style: themed($customLabelAndHelperStyle) }}
LabelTextProps={{ style: themed($customLabelAndHelperStyle) }}
/>
<DemoDivider size={24} />
<TextField
labelTx="demoTextField:useCase.styling.styleAccessories.label"
labelTxOptions={{ prop: "label" }}
helperTx="demoTextField:useCase.styling.styleAccessories.helper"
helperTxOptions={{ prop: "helper" }}
value="Aute nisi dolore fugiat anim mollit nulla ex minim ipsum ex elit."
style={themed($customInputWithAbsoluteAccessoriesStyle)}
LeftAccessory={() => (
<Icon
icon="ladybug"
containerStyle={themed($customLeftAccessoryStyle)}
color="white"
size={41}
/>
)}
RightAccessory={() => (
<Icon
icon="ladybug"
containerStyle={themed($customRightAccessoryStyle)}
color="white"
size={41}
/>
)}
/>
</DemoUseCase>,
],
}