@@ -3,8 +3,10 @@ import { useForm } from "@tanstack/react-form";
33import type { Template , TemplateSection , TemplateStorage } from "@hypr/store" ;
44import { Input } from "@hypr/ui/components/ui/input" ;
55import { Textarea } from "@hypr/ui/components/ui/textarea" ;
6+ import { cn } from "@hypr/utils" ;
67
78import * as main from "../../../../store/tinybase/store/main" ;
9+ import * as settings from "../../../../store/tinybase/store/settings" ;
810import { DangerZone } from "../resource-list" ;
911import { RelatedSessions } from "./related-sessions" ;
1012import { SectionsList } from "./sections-editor" ;
@@ -62,6 +64,19 @@ export function TemplateForm({
6264 const row = main . UI . useRow ( "templates" , id , main . STORE_ID ) ;
6365 const value = row ? normalizeTemplatePayload ( row ) : undefined ;
6466
67+ const selectedTemplateId = settings . UI . useValue (
68+ "selected_template_id" ,
69+ settings . STORE_ID ,
70+ ) as string | undefined ;
71+ const isDefault = selectedTemplateId === id ;
72+
73+ const setSelectedTemplateId = settings . UI . useSetValueCallback (
74+ "selected_template_id" ,
75+ ( ) => ( isDefault ? "" : id ) ,
76+ [ id , isDefault ] ,
77+ settings . STORE_ID ,
78+ ) ;
79+
6580 const handleUpdate = main . UI . useSetPartialRowCallback (
6681 "templates" ,
6782 id ,
@@ -109,16 +124,31 @@ export function TemplateForm({
109124 return (
110125 < div className = "flex-1 flex flex-col h-full" >
111126 < div className = "px-6 py-4 border-b border-neutral-200" >
112- < form . Field name = "title" >
113- { ( field ) => (
114- < Input
115- value = { field . state . value }
116- onChange = { ( e ) => field . handleChange ( e . target . value ) }
117- placeholder = "Enter template title"
118- className = "border-0 shadow-none text-lg font-semibold px-0 focus-visible:ring-0 h-8"
119- />
120- ) }
121- </ form . Field >
127+ < div className = "flex items-center gap-2" >
128+ < form . Field name = "title" >
129+ { ( field ) => (
130+ < Input
131+ value = { field . state . value }
132+ onChange = { ( e ) => field . handleChange ( e . target . value ) }
133+ placeholder = "Enter template title"
134+ className = "border-0 shadow-none text-lg font-semibold px-0 focus-visible:ring-0 h-8 flex-1"
135+ />
136+ ) }
137+ </ form . Field >
138+ < button
139+ type = "button"
140+ onClick = { setSelectedTemplateId }
141+ title = { isDefault ? "Remove as default" : "Set as default" }
142+ className = { cn ( [
143+ "shrink-0 text-xs px-2 py-0.5 rounded border transition-colors" ,
144+ isDefault
145+ ? "border-neutral-800 bg-neutral-800 text-white"
146+ : "border-neutral-300 text-neutral-500 hover:border-neutral-500 hover:text-neutral-700" ,
147+ ] ) }
148+ >
149+ { isDefault ? "Default" : "Set default" }
150+ </ button >
151+ </ div >
122152 < form . Field name = "description" >
123153 { ( field ) => (
124154 < Textarea
0 commit comments