import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import InputError from '@/components/InputError'; import { useForm } from '@inertiajs/react'; import { LoaderCircle } from 'lucide-react'; import { FormEventHandler, useState } from 'react'; import ComponentTitle from '@/components/ui/ComponentTitle'; interface TrackerFormData { label: string; unit: string; price_tracking_enabled: string; symbol: string; full_name: string; [key: string]: string; } interface CreateTrackerStepProps { onSuccess: (priceTrackingEnabled: boolean) => void; } export default function CreateTrackerStep({ onSuccess }: CreateTrackerStepProps) { const [priceTracking, setPriceTracking] = useState(false); const { data, setData, post, processing, errors } = useForm({ label: '', unit: '', price_tracking_enabled: '0', symbol: '', full_name: '', }); const togglePriceTracking = (enabled: boolean) => { setPriceTracking(enabled); setData({ ...data, price_tracking_enabled: enabled ? '1' : '0', symbol: enabled ? data.symbol : '', full_name: enabled ? data.full_name : '', }); }; const submit: FormEventHandler = (e) => { e.preventDefault(); post(route('tracker.store'), { onSuccess: () => { onSuccess(priceTracking); }, }); }; return (
SET UP YOUR TRACKER

[SYSTEM] What are you tracking?

setData('label', e.target.value)} className="bg-black border-red-500 text-red-400 focus:border-red-300 font-mono text-sm rounded-none border-2 focus:ring-0 focus:outline-none focus:shadow-[0_0_10px_rgba(239,68,68,0.5)] placeholder:text-red-400/40 transition-all" />

[REQUIRED] e.g. "My Portfolio", "Books Read", "KM Run"

setData('unit', e.target.value)} className="bg-black border-red-500 text-red-400 focus:border-red-300 font-mono text-sm rounded-none border-2 focus:ring-0 focus:outline-none focus:shadow-[0_0_10px_rgba(239,68,68,0.5)] placeholder:text-red-400/40 transition-all" />

[REQUIRED] e.g. "shares", "books", "km"

Track market price, portfolio value, and P&L. Requires an asset symbol.

{priceTracking && (
setData('symbol', e.target.value.toUpperCase())} className="bg-black border-red-500 text-red-400 focus:border-red-300 font-mono text-sm rounded-none border-2 focus:ring-0 focus:outline-none focus:shadow-[0_0_10px_rgba(239,68,68,0.5)] placeholder:text-red-400/40 transition-all" />
setData('full_name', e.target.value)} className="bg-black border-red-500 text-red-400 focus:border-red-300 font-mono text-sm rounded-none border-2 focus:ring-0 focus:outline-none focus:shadow-[0_0_10px_rgba(239,68,68,0.5)] placeholder:text-red-400/40 transition-all" />
)}
); }