import { useCallback, useState, Fragment } from 'react' import { InputAction, InputComponentProps, SettingComponentProps, } from '@janhq/core' import { Input } from '@janhq/joi' import { CopyIcon, EyeIcon, FolderOpenIcon } from 'lucide-react' import { markdownParser } from '@/utils/markdown-parser' type Props = { settingProps: SettingComponentProps onValueChanged?: (e: string) => void } const SettingDetailTextInputItem = ({ settingProps, onValueChanged, }: Props) => { const { value, type, placeholder, textAlign, inputActions } = settingProps.controllerProps as InputComponentProps const [obscure, setObscure] = useState(type === 'password') const description = markdownParser.parse(settingProps.description ?? '', { async: false, }) const toggleObscure = useCallback(() => { setObscure((prev) => !prev) }, []) const copy = useCallback(() => { navigator.clipboard.writeText(value) }, [value]) const onAction = useCallback( (action: InputAction) => { switch (action) { case 'copy': copy() break case 'unobscure': toggleObscure() break default: break } }, [toggleObscure, copy] ) return (