@@ -4,12 +4,10 @@ import { useContext, useEffect, useState } from "react";
44import { DownloadButton } from "@repo/web-ui/download-button" ;
55import { CardSizeContext } from "@repo/ui/context/CardSizeContext" ;
66import SocialMediaController from "@repo/web-ui/SocialMediaController" ;
7- import { Slider } from "./ui/slider" ;
8- import { Input } from "./ui/input" ;
9- import { Textarea } from "./ui/textarea" ;
10- import { cn } from "../lib/cn" ;
7+
118import { Cog , Delete , Move , Package2 , Trash2 } from "lucide-react" ;
129import { Tabs , TabsList , TabsTrigger , TabsContent } from "./ui/tabs" ;
10+ import { SliderBox , DrawInput , CheckBox } from "./common" ;
1311
1412const STORAGE_KEY = "gradient-editor-v1" ;
1513
@@ -472,106 +470,4 @@ export default function GradientEditor() {
472470 < DownloadButton className = "show-mobile bg-black shadow-2xl text-white p-4 rounded-md hover:bg-sky-700" />
473471 </ div >
474472 ) ;
475- }
476-
477- function CheckBox ( {
478- keyName,
479- value,
480- label,
481- setStateValue,
482- } : {
483- keyName : string ;
484- value : boolean ;
485- label : string ;
486- setStateValue : ( name : string , value : any ) => void ;
487- } ) {
488- return (
489- < label className = "flex items-center" >
490- < input
491- type = "checkbox"
492- checked = { value }
493- name = { keyName }
494- onChange = { ( e ) => setStateValue ( keyName , e . target . checked ) }
495- className = "mr-2"
496- />
497- { label || < span > { keyName } </ span > }
498- </ label >
499- ) ;
500- }
501-
502- function SliderBox ( {
503- keyName,
504- value,
505- label,
506- min,
507- max,
508- unit,
509- setStateValue,
510- } : {
511- keyName : string ;
512- value : number ;
513- label : string ;
514- min : number ;
515- max : number ;
516- unit ?: string ;
517- setStateValue : ( name : string , value : any ) => void ;
518- } ) {
519- return (
520- < >
521- < label className = "block mb-2" >
522- { label || < span > { keyName } </ span > } : { value }
523- { unit && < span className = "" > { unit } </ span > }
524- </ label >
525- < Slider
526- min = { min }
527- max = { max }
528- name = { keyName }
529- value = { [ value ] }
530- onValueChange = { ( val ) => setStateValue ( keyName , val ) }
531- className = "w-full"
532- />
533- </ >
534- ) ;
535- }
536-
537- function DrawInput ( {
538- keyName,
539- value,
540- placeholder,
541- label,
542- onChange : setStateValue ,
543- isTextArea = false ,
544- type = "text" ,
545- className = "" ,
546- } : {
547- keyName : string ;
548- value : string ;
549- placeholder ?: string ;
550- label ?: React . ReactNode ;
551- onChange : ( name : string , value : any ) => void ;
552- isTextArea ?: boolean ;
553- type ?: string ;
554- className ?: string ;
555- } ) {
556- return (
557- < div className = { cn ( "mb-4" , className ) } >
558- < label className = "block" > { label || < span > { keyName } </ span > } :</ label >
559- { isTextArea ? (
560- < Textarea
561- value = { value }
562- onChange = { ( e ) => setStateValue ( keyName , e . target . value ) }
563- className = "w-full px-2 border rounded-md"
564- placeholder = { placeholder }
565- />
566- ) : (
567- < Input
568- type = { type }
569- value = { value }
570- onChange = { ( e ) => setStateValue ( keyName , e . target . value ) }
571- className = "w-full px-2 border rounded-md"
572- placeholder = { placeholder }
573- />
574- ) }
575- </ div >
576- ) ;
577- }
473+ }
0 commit comments