import type { Component } from 'solid-js'; import { createSignal } from 'solid-js'; import { Save } from 'lucide-solid'; import type { TemplateItem, Template } from '../types'; import TemplateItemList from '../components/template/TemplateItemList'; const TemplateCreator: Component = () => { const [templateName, setTemplateName] = createSignal(''); const [items, setItems] = createSignal([]); const handleAddItem = () => { const newItem: TemplateItem = { id: crypto.randomUUID(), description: '', quantity: 1, unitPrice: 0 }; setItems([...items(), newItem]); }; const handleUpdateItem = (id: string, updates: Partial) => { setItems(items().map(item => item.id === id ? { ...item, ...updates } : item)); }; const handleDeleteItem = (id: string) => { setItems(items().filter(item => item.id !== id)); }; const handleSaveTemplate = () => { // Here we would typically save to localStorage or backend // For now, we'll just log it or show a toast const template: Template = { id: crypto.randomUUID(), name: templateName(), items: items() }; console.log('Template saved:', template); alert(`Template "${template.name}" saved successfully!`); // Reset form setTemplateName(''); setItems([]); }; return (

Template Creator

Create templates for your estimate sub-scopes.

setTemplateName(e.currentTarget.value)} placeholder="e.g. Master Bathroom Rough-in" class="w-full bg-gray-50/50 border border-gray-200 rounded-xl px-4 py-3 text-gray-800 focus:bg-white focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 outline-none font-medium transition-all shadow-sm" />
); }; export default TemplateCreator;