import { useParams } from 'common' import { ExternalLink, Eye, EyeOff, Loader } from 'lucide-react' import Link from 'next/link' import { useState } from 'react' import { Button, CardContent, Tooltip, TooltipContent, TooltipTrigger } from 'ui' import { Input } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { useVaultSecretDecryptedValueQuery } from '@/data/vault/vault-secret-decrypted-value-query' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' export const DecryptedReadOnlyInput = ({ value, secureEntry, descriptionText, label, }: { value?: string secureEntry: boolean descriptionText: string label: string }) => { const { ref } = useParams() const { data: project } = useSelectedProjectQuery() const [showHidden, setShowHidden] = useState(false) const { data: decryptedValue, isPending: isDecryptedValueLoading } = useVaultSecretDecryptedValueQuery( { projectRef: project?.ref, connectionString: project?.connectionString, id: value ?? '', }, { enabled: secureEntry && showHidden } ) const isLoading = isDecryptedValueLoading && showHidden const renderedValue = secureEntry ? isLoading ? 'Fetching value from Vault...' : showHidden ? decryptedValue : value : value return ( {label} {secureEntry && ( Open in Vault )} } description={descriptionText} isReactForm={false} >