31 lines
696 B
TypeScript
31 lines
696 B
TypeScript
'use client'
|
|
|
|
import { useState, useCallback } from 'react'
|
|
|
|
export function useSecret() {
|
|
const [secret, setSecret] = useState('')
|
|
const [secretError, setSecretError] = useState<string | null>(null)
|
|
const [secretVisible, setSecretVisible] = useState(false)
|
|
|
|
const isSecretEmpty = !secret.trim()
|
|
|
|
const handleSecretChange = useCallback((value: string) => {
|
|
setSecret(value)
|
|
if (secretError) setSecretError(null)
|
|
}, [secretError])
|
|
|
|
const toggleSecretVisible = useCallback(() => {
|
|
setSecretVisible((v) => !v)
|
|
}, [])
|
|
|
|
return {
|
|
secret,
|
|
secretError,
|
|
secretVisible,
|
|
isSecretEmpty,
|
|
setSecretError,
|
|
handleSecretChange,
|
|
toggleSecretVisible,
|
|
}
|
|
}
|