@@ -4,6 +4,9 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com
44import { Label } from '@/components/ui/label' ;
55import { Select , SelectContent , SelectItem , SelectTrigger , SelectValue } from '@/components/ui/select' ;
66import { Separator } from '@/components/ui/separator' ;
7+ import { Button } from '@/components/ui/button' ;
8+ import { Accordion , AccordionContent , AccordionItem , AccordionTrigger } from '@/components/ui/accordion' ;
9+ import { ThemeToggle } from '@/components/ui/theme-toggle' ;
710import { useEffect , useMemo , useState } from 'react' ;
811import { useComponentStore } from '@/stores/component-store' ;
912
@@ -108,7 +111,7 @@ const alignOptions: Option[] = [
108111] ;
109112
110113export function StyleControls ( ) {
111- const { selectedComponent, stylePresetClassName , setStylePresetClassName } = useComponentStore ( ) ;
114+ const { selectedComponent, setStylePresetClassName } = useComponentStore ( ) ;
112115
113116 const [ bgColor , setBgColor ] = useState < string > ( 'none' ) ;
114117 const [ textColor , setTextColor ] = useState < string > ( 'auto' ) ;
@@ -168,6 +171,23 @@ export function StyleControls() {
168171 setStylePresetClassName ( '' ) ;
169172 } , [ selectedComponent , setStylePresetClassName ] ) ;
170173
174+ const resetAll = ( ) => {
175+ setBgColor ( 'none' ) ;
176+ setTextColor ( 'auto' ) ;
177+ setBorderStyle ( 'none' ) ;
178+ setBorderColor ( 'default' ) ;
179+ setPadding ( 'none' ) ;
180+ setMargin ( 'none' ) ;
181+ setFontSize ( 'text-sm' ) ;
182+ setFontWeight ( 'font-medium' ) ;
183+ setRadius ( 'rounded-md' ) ;
184+ setHoverEffect ( 'none' ) ;
185+ setShadow ( 'none' ) ;
186+ setGap ( 'none' ) ;
187+ setAlign ( 'text-left' ) ;
188+ setStylePresetClassName ( '' ) ;
189+ } ;
190+
171191 const renderSelect = ( id : string , label : string , value : string , onChange : ( val : string ) => void , options : Option [ ] ) => {
172192 return (
173193 < div className = "space-y-2" >
@@ -193,26 +213,44 @@ export function StyleControls() {
193213 < CardDescription > Adjust visual attributes in real time</ CardDescription >
194214 </ CardHeader >
195215 < CardContent className = "space-y-6" >
196- { renderSelect ( 'bg-color' , 'Background Color' , bgColor , setBgColor , colorOptions ) }
197- < Separator className = "my-4" />
198- { renderSelect ( 'text-color' , 'Text Color' , textColor , setTextColor , textColorOptions ) }
199- < Separator className = "my-4" />
200- { renderSelect ( 'border-style' , 'Border Style' , borderStyle , setBorderStyle , borderStyleOptions ) }
201- { renderSelect ( 'border-color' , 'Border Color' , borderColor , setBorderColor , borderColorOptions ) }
216+ { /* Top actions: Theme override and Reset button */ }
217+ < div className = "flex items-center justify-between gap-4" >
218+ < ThemeToggle />
219+ < Button variant = "secondary" onClick = { resetAll } aria-label = "Reset styles" > Reset</ Button >
220+ </ div >
202221 < Separator className = "my-4" />
203- { renderSelect ( 'padding' , 'Padding' , padding , setPadding , paddingOptions ) }
204- { renderSelect ( 'margin' , 'Margin' , margin , setMargin , marginOptions ) }
205- < Separator className = "my-4" />
206- { renderSelect ( 'font-size' , 'Font Size' , fontSize , setFontSize , fontSizeOptions ) }
207- { renderSelect ( 'font-weight' , 'Font Weight' , fontWeight , setFontWeight , fontWeightOptions ) }
208- < Separator className = "my-4" />
209- { renderSelect ( 'radius' , 'Border Radius' , radius , setRadius , radiusOptions ) }
210- < Separator className = "my-4" />
211- { renderSelect ( 'hover' , 'Hover Effect' , hoverEffect , setHoverEffect , hoverEffectOptions ) }
212- { renderSelect ( 'shadow' , 'Shadow' , shadow , setShadow , shadowOptions ) }
222+
223+ { /* Basic tools - prominent section */ }
224+ < div className = "grid grid-cols-1 md:grid-cols-2 gap-4" >
225+ { renderSelect ( 'bg-color' , 'Background Color' , bgColor , setBgColor , colorOptions ) }
226+ { renderSelect ( 'text-color' , 'Text Color' , textColor , setTextColor , textColorOptions ) }
227+ { renderSelect ( 'font-size' , 'Font Size' , fontSize , setFontSize , fontSizeOptions ) }
228+ { renderSelect ( 'font-weight' , 'Font Weight' , fontWeight , setFontWeight , fontWeightOptions ) }
229+ { renderSelect ( 'radius' , 'Border Radius' , radius , setRadius , radiusOptions ) }
230+ { renderSelect ( 'padding' , 'Padding' , padding , setPadding , paddingOptions ) }
231+ { renderSelect ( 'margin' , 'Margin' , margin , setMargin , marginOptions ) }
232+ </ div >
233+
213234 < Separator className = "my-4" />
214- { renderSelect ( 'gap' , 'Component Spacing' , gap , setGap , gapOptions ) }
215- { renderSelect ( 'align' , 'Alignment' , align , setAlign , alignOptions ) }
235+
236+ { /* Advanced options grouped under Accordion */ }
237+ < Accordion type = "single" collapsible >
238+ < AccordionItem value = "advanced" >
239+ < AccordionTrigger >
240+ < span className = "font-medium" > Advanced</ span >
241+ </ AccordionTrigger >
242+ < AccordionContent >
243+ < div className = "grid grid-cols-1 md:grid-cols-2 gap-4" >
244+ { renderSelect ( 'border-style' , 'Border Style' , borderStyle , setBorderStyle , borderStyleOptions ) }
245+ { renderSelect ( 'border-color' , 'Border Color' , borderColor , setBorderColor , borderColorOptions ) }
246+ { renderSelect ( 'hover' , 'Hover Effect' , hoverEffect , setHoverEffect , hoverEffectOptions ) }
247+ { renderSelect ( 'shadow' , 'Shadow' , shadow , setShadow , shadowOptions ) }
248+ { renderSelect ( 'gap' , 'Component Spacing' , gap , setGap , gapOptions ) }
249+ { renderSelect ( 'align' , 'Alignment' , align , setAlign , alignOptions ) }
250+ </ div >
251+ </ AccordionContent >
252+ </ AccordionItem >
253+ </ Accordion >
216254 </ CardContent >
217255 </ Card >
218256 ) ;
0 commit comments