import { useT } from "@agent-native/core/client/i18n"; import { IconPlus } from "@tabler/icons-react"; import { useState, type FormEvent } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import type { FieldConfig, FieldType } from "@/hooks/use-custom-fields"; import { FieldConfigControl } from "./editor/config/FieldConfigControl"; import { normalizedInitialConfig } from "./editor/config/utils"; import type { FieldDraft } from "./editor/types"; import { FIELD_TYPE_LABEL_KEYS, FIELD_TYPE_VALUES } from "./field-types"; const FIELD_TYPES_WITH_CONFIG = new Set([ "currency", "number", "percent", "single_select", "multi_select", ]); export function FieldCreateBar({ busy, onCreate, }: { busy: boolean; onCreate: (draft: FieldDraft) => Promise; }) { const t = useT(); const [title, setTitle] = useState(""); const [type, setType] = useState("text"); const [config, setConfig] = useState( normalizedInitialConfig("text"), ); function handleTypeChange(nextType: FieldType) { setType(nextType); setConfig(normalizedInitialConfig(nextType)); } async function handleSubmit(event: FormEvent) { event.preventDefault(); const trimmedTitle = title.trim(); if (!trimmedTitle) return; await onCreate({ title: trimmedTitle, type, config }); setTitle(""); setType("text"); setConfig(normalizedInitialConfig("text")); } return (
void handleSubmit(event)} className="grid shrink-0 gap-3 rounded-lg border border-border bg-card p-3 md:grid-cols-[minmax(180px,1fr)_180px_auto] md:items-start" >

{t("fields.createNewFieldHeading")}

setTitle(event.currentTarget.value)} />
{FIELD_TYPES_WITH_CONFIG.has(type) ? (
) : null}
); }