@@ -72,9 +72,7 @@ export function WebsiteSettingsTab({
7272} : WebsiteDataTabProps ) {
7373 const router = useRouter ( ) ;
7474 const [ copied , setCopied ] = useState ( false ) ;
75- const [ installMethod , setInstallMethod ] = useState < 'script' | 'npm' > (
76- 'script'
77- ) ;
75+ const [ installMethod ] = useState < 'script' | 'npm' > ( 'script' ) ;
7876 const [ showDeleteDialog , setShowDeleteDialog ] = useState ( false ) ;
7977 const [ showEditDialog , setShowEditDialog ] = useState ( false ) ;
8078 const [ activeTab , setActiveTab ] = useState <
@@ -140,15 +138,13 @@ export function WebsiteSettingsTab({
140138 { activeTab === 'tracking' && (
141139 < TrackingCodeTab
142140 copied = { copied }
143- installMethod = { installMethod }
144141 npmCode = { npmCode }
145142 onCopyCode = { handleCopyCode }
146143 onCopyComponentCode = { ( ) =>
147144 handleCopyCode (
148145 generateNpmComponentCode ( websiteId , trackingOptions )
149146 )
150147 }
151- setInstallMethod = { setInstallMethod }
152148 trackingCode = { trackingCode }
153149 websiteData = { websiteData }
154150 websiteId = { websiteId }
@@ -178,7 +174,6 @@ export function WebsiteSettingsTab({
178174
179175 { activeTab !== 'tracking' && (
180176 < TabActions
181- activeTab = { activeTab }
182177 installMethod = { installMethod }
183178 onCopyCode = { ( ) =>
184179 handleCopyCode (
@@ -201,7 +196,6 @@ export function WebsiteSettingsTab({
201196 }
202197 } }
203198 onResetDefaults = { ( ) => setTrackingOptions ( resetToDefaults ( ) ) }
204- trackingCode = { trackingCode }
205199 />
206200 ) }
207201 </ CardContent >
@@ -351,8 +345,6 @@ function SettingsNavigation({
351345 const advancedEnabled = [
352346 trackingOptions . trackEngagement ,
353347 trackingOptions . trackScrollDepth ,
354- trackingOptions . trackExitIntent ,
355- trackingOptions . trackBounceRate ,
356348 trackingOptions . trackErrors ,
357349 trackingOptions . trackPerformance ,
358350 trackingOptions . trackWebVitals ,
@@ -418,9 +410,9 @@ function SettingsNavigation({
418410 </ div >
419411 < Badge
420412 className = "h-5 px-2 text-xs"
421- variant = { advancedEnabled > 4 ? 'default' : 'secondary' }
413+ variant = { advancedEnabled > 2 ? 'default' : 'secondary' }
422414 >
423- { advancedEnabled } /7
415+ { advancedEnabled } /5
424416 </ Badge >
425417 </ Button >
426418
@@ -621,14 +613,17 @@ function CodeBlock({
621613 onCopy : ( ) => void ;
622614} ) {
623615 // Determine language based on code content
624- const getLanguage = ( code : string ) => {
625- if ( code . includes ( 'npm install' ) || code . includes ( 'bun add' ) ) {
616+ const getLanguage = ( codeContent : string ) => {
617+ if (
618+ codeContent . includes ( 'npm install' ) ||
619+ codeContent . includes ( 'bun add' )
620+ ) {
626621 return 'bash' ;
627622 }
628- if ( code . includes ( '<script' ) ) {
623+ if ( codeContent . includes ( '<script' ) ) {
629624 return 'html' ;
630625 }
631- if ( code . includes ( 'import' ) && code . includes ( 'from' ) ) {
626+ if ( codeContent . includes ( 'import' ) && codeContent . includes ( 'from' ) ) {
632627 return 'jsx' ;
633628 }
634629 return 'javascript' ;
@@ -683,7 +678,13 @@ function CodeBlock({
683678 ) ;
684679}
685680
686- function WebsiteInfoSection ( { websiteData, websiteId } : any ) {
681+ function WebsiteInfoSection ( {
682+ websiteData,
683+ websiteId,
684+ } : {
685+ websiteData : Website ;
686+ websiteId : string ;
687+ } ) {
687688 return (
688689 < div className = "mt-6 grid grid-cols-2 gap-4" >
689690 < div className = "space-y-3 rounded-md bg-muted/50 p-4" >
@@ -748,7 +749,14 @@ function BasicTrackingTab({
748749 trackingOptions : TrackingOptions ;
749750 onToggleOption : ( option : keyof TrackingOptions ) => void ;
750751} ) {
751- const trackingOptionsConfig = [
752+ const trackingOptionsConfig : Array < {
753+ key : keyof TrackingOptions ;
754+ title : string ;
755+ description : string ;
756+ data : string [ ] ;
757+ required ?: boolean ;
758+ inverted ?: boolean ;
759+ } > = [
752760 {
753761 key : 'disabled' ,
754762 title : 'Enable Tracking' ,
@@ -835,7 +843,14 @@ function AdvancedTrackingTab({
835843 trackingOptions : TrackingOptions ;
836844 onToggleOption : ( option : keyof TrackingOptions ) => void ;
837845} ) {
838- const advancedOptionsConfig = [
846+ const advancedOptionsConfig : Array < {
847+ key : keyof TrackingOptions ;
848+ title : string ;
849+ description : string ;
850+ data : string [ ] ;
851+ required ?: boolean ;
852+ inverted ?: boolean ;
853+ } > = [
839854 {
840855 key : 'trackEngagement' ,
841856 title : 'Engagement Tracking' ,
@@ -857,26 +872,6 @@ function AdvancedTrackingTab({
857872 'Time spent at different scroll positions' ,
858873 ] ,
859874 } ,
860- {
861- key : 'trackExitIntent' ,
862- title : 'Exit Intent' ,
863- description : 'Track when users are about to leave the page' ,
864- data : [
865- 'Mouse movement towards browser controls' ,
866- 'Exit intent events' ,
867- 'Time before exit detection' ,
868- ] ,
869- } ,
870- {
871- key : 'trackBounceRate' ,
872- title : 'Bounce Rate' ,
873- description : 'Track bounce behavior and engagement quality' ,
874- data : [
875- 'Single page sessions' ,
876- 'Time spent before bounce' ,
877- 'Interaction before leaving' ,
878- ] ,
879- } ,
880875 {
881876 key : 'trackErrors' ,
882877 title : 'Error Tracking' ,
@@ -937,9 +932,8 @@ function TrackingOptionsGrid({
937932 title : string ;
938933 description : string ;
939934 data : string [ ] ;
940- enabled : boolean ;
941- required : boolean ;
942- inverted : boolean ;
935+ required ?: boolean ;
936+ inverted ?: boolean ;
943937 } [ ] ;
944938 trackingOptions : TrackingOptions ;
945939 onToggleOption : ( option : keyof TrackingOptions ) => void ;
@@ -958,8 +952,10 @@ function TrackingOptionsGrid({
958952 < TrackingOptionCard
959953 key = { key }
960954 { ...optionProps }
961- enabled = { trackingOptions [ key ] }
955+ enabled = { trackingOptions [ key ] as boolean }
956+ inverted = { optionProps . inverted ?? false }
962957 onToggle = { ( ) => onToggleOption ( key ) }
958+ required = { optionProps . required ?? false }
963959 />
964960 ) ;
965961 } ) }
@@ -974,16 +970,16 @@ function TrackingOptionCard({
974970 data,
975971 enabled,
976972 onToggle,
977- required,
978- inverted,
973+ required = false ,
974+ inverted = false ,
979975} : {
980976 title : string ;
981977 description : string ;
982978 data : string [ ] ;
983979 enabled : boolean ;
984980 onToggle : ( ) => void ;
985- required : boolean ;
986- inverted : boolean ;
981+ required ? : boolean ;
982+ inverted ? : boolean ;
987983} ) {
988984 const isEnabled = inverted ? ! enabled : enabled ;
989985
@@ -1023,7 +1019,9 @@ function OptimizationTab({
10231019 setTrackingOptions,
10241020} : {
10251021 trackingOptions : TrackingOptions ;
1026- setTrackingOptions : ( options : TrackingOptions ) => void ;
1022+ setTrackingOptions : (
1023+ options : TrackingOptions | ( ( prev : TrackingOptions ) => TrackingOptions )
1024+ ) => void ;
10271025} ) {
10281026 return (
10291027 < div className = "space-y-4" >
@@ -1116,7 +1114,9 @@ function BatchingSection({
11161114 setTrackingOptions,
11171115} : {
11181116 trackingOptions : TrackingOptions ;
1119- setTrackingOptions : ( options : TrackingOptions ) => void ;
1117+ setTrackingOptions : (
1118+ options : TrackingOptions | ( ( prev : TrackingOptions ) => TrackingOptions )
1119+ ) => void ;
11201120} ) {
11211121 return (
11221122 < div className = "rounded-lg border p-4" >
@@ -1214,7 +1214,9 @@ function NetworkResilienceSection({
12141214 setTrackingOptions,
12151215} : {
12161216 trackingOptions : TrackingOptions ;
1217- setTrackingOptions : ( options : TrackingOptions ) => void ;
1217+ setTrackingOptions : (
1218+ options : TrackingOptions | ( ( prev : TrackingOptions ) => TrackingOptions )
1219+ ) => void ;
12181220} ) {
12191221 return (
12201222 < div className = "rounded-lg border p-4" >
0 commit comments