import { useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { useOnePasswordToken } from "@/hooks/useOnePasswordToken"; import { EyeOpenIcon, EyeClosedIcon } from "@radix-ui/react-icons"; const formSchema = z.object({ token: z.string().min(1, "1Password token is required"), }); type FormData = z.infer; export function OnePasswordTokenForm() { const [showToken, setShowToken] = useState(false); const { onePasswordToken, isLoading, createOrUpdateToken, isUpdating } = useOnePasswordToken(); const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { token: onePasswordToken?.token || "", }, }); const onSubmit = (data: FormData) => { createOrUpdateToken(data); }; const toggleTokenVisibility = () => { setShowToken(!showToken); }; // Update form when token data loads if ( onePasswordToken?.token && form.getValues("token") !== onePasswordToken.token ) { form.setValue("token", onePasswordToken.token); } return (

1Password Service Account Token

Configure your 1Password service account token for credential management.

{onePasswordToken && (
Status: {onePasswordToken.valid ? "Active" : "Inactive"}
)}
( Service Account Token
)} />
{onePasswordToken && (
Last updated:{" "} {new Date(onePasswordToken.modified_at).toLocaleDateString()}
)}
{onePasswordToken && (

Token Information

ID: {onePasswordToken.id}
Type: {onePasswordToken.token_type}
Created:{" "} {new Date(onePasswordToken.created_at).toLocaleDateString()}
)}
); }