Skip to content

Commit 72526b9

Browse files
thetronjohnson123vivekr
authored andcommitted
move privacy settings to the general tab
1 parent b827a34 commit 72526b9

1 file changed

Lines changed: 50 additions & 92 deletions

File tree

src/components/Settings.tsx

Lines changed: 50 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ export const Settings: React.FC<SettingsProps> = ({
388388
) : (
389389
<div className="flex-1 overflow-y-auto p-6">
390390
<Tabs value={activeTab} onValueChange={setActiveTab} className="w-full">
391-
<TabsList className="grid grid-cols-9 w-full mb-6 h-auto p-1">
391+
<TabsList className="grid grid-cols-8 w-full mb-6 h-auto p-1">
392392
<TabsTrigger value="general" className="py-2.5 px-3">General</TabsTrigger>
393393
<TabsTrigger value="permissions" className="py-2.5 px-3">Permissions</TabsTrigger>
394394
<TabsTrigger value="environment" className="py-2.5 px-3">Environment</TabsTrigger>
@@ -397,7 +397,6 @@ export const Settings: React.FC<SettingsProps> = ({
397397
<TabsTrigger value="commands" className="py-2.5 px-3">Commands</TabsTrigger>
398398
<TabsTrigger value="storage" className="py-2.5 px-3">Storage</TabsTrigger>
399399
<TabsTrigger value="proxy" className="py-2.5 px-3">Proxy</TabsTrigger>
400-
<TabsTrigger value="analytics" className="py-2.5 px-3">Analytics</TabsTrigger>
401400
</TabsList>
402401

403402
{/* General Settings */}
@@ -662,6 +661,55 @@ export const Settings: React.FC<SettingsProps> = ({
662661
</p>
663662
)}
664663
</div>
664+
665+
{/* Separator */}
666+
<div className="border-t border-border pt-4 mt-6" />
667+
668+
{/* Analytics Toggle */}
669+
<div className="flex items-center justify-between">
670+
<div className="space-y-1">
671+
<Label htmlFor="analytics-enabled">Enable Analytics</Label>
672+
<p className="text-caption text-muted-foreground">
673+
Help improve Claudia by sharing anonymous usage data
674+
</p>
675+
</div>
676+
<Switch
677+
id="analytics-enabled"
678+
checked={analyticsEnabled}
679+
onCheckedChange={async (checked) => {
680+
if (checked && !analyticsConsented) {
681+
setShowAnalyticsConsent(true);
682+
} else if (checked) {
683+
await analytics.enable();
684+
setAnalyticsEnabled(true);
685+
trackEvent.settingsChanged('analytics_enabled', true);
686+
setToast({ message: "Analytics enabled", type: "success" });
687+
} else {
688+
await analytics.disable();
689+
setAnalyticsEnabled(false);
690+
trackEvent.settingsChanged('analytics_enabled', false);
691+
setToast({ message: "Analytics disabled", type: "success" });
692+
}
693+
}}
694+
/>
695+
</div>
696+
697+
{/* Privacy Info */}
698+
{analyticsEnabled && (
699+
<div className="rounded-lg border border-blue-200 dark:border-blue-900 bg-blue-50 dark:bg-blue-950/20 p-3">
700+
<div className="flex gap-2">
701+
<Shield className="h-4 w-4 text-blue-600 dark:text-blue-400 flex-shrink-0 mt-0.5" />
702+
<div className="space-y-1">
703+
<p className="text-xs font-medium text-blue-900 dark:text-blue-100">Your privacy is protected</p>
704+
<ul className="text-xs text-blue-800 dark:text-blue-200 space-y-0.5">
705+
<li>• No personal information or file contents collected</li>
706+
<li>• All data is anonymous with random IDs</li>
707+
<li>• You can disable analytics at any time</li>
708+
</ul>
709+
</div>
710+
</div>
711+
</div>
712+
)}
665713
</div>
666714
</div>
667715
</Card>
@@ -952,96 +1000,6 @@ export const Settings: React.FC<SettingsProps> = ({
9521000
</Card>
9531001
</TabsContent>
9541002

955-
{/* Analytics Settings */}
956-
<TabsContent value="analytics" className="space-y-6">
957-
<Card className="p-6 space-y-6">
958-
<div>
959-
<div className="flex items-center gap-3 mb-4">
960-
<BarChart3 className="h-5 w-5 text-purple-600 dark:text-purple-400" />
961-
<h3 className="text-base font-semibold">Analytics Settings</h3>
962-
</div>
963-
964-
<div className="space-y-6">
965-
{/* Analytics Toggle */}
966-
<div className="flex items-center justify-between">
967-
<div className="space-y-1">
968-
<Label htmlFor="analytics-enabled" className="text-base">Enable Analytics</Label>
969-
<p className="text-sm text-muted-foreground">
970-
Help improve Claudia by sharing anonymous usage data
971-
</p>
972-
</div>
973-
<Switch
974-
id="analytics-enabled"
975-
checked={analyticsEnabled}
976-
onCheckedChange={async (checked) => {
977-
if (checked && !analyticsConsented) {
978-
setShowAnalyticsConsent(true);
979-
} else if (checked) {
980-
await analytics.enable();
981-
setAnalyticsEnabled(true);
982-
trackEvent.settingsChanged('analytics_enabled', true);
983-
setToast({ message: "Analytics enabled", type: "success" });
984-
} else {
985-
await analytics.disable();
986-
setAnalyticsEnabled(false);
987-
trackEvent.settingsChanged('analytics_enabled', false);
988-
setToast({ message: "Analytics disabled", type: "success" });
989-
}
990-
}}
991-
/>
992-
</div>
993-
994-
{/* Privacy Info */}
995-
<div className="rounded-lg border border-blue-200 dark:border-blue-900 bg-blue-50 dark:bg-blue-950/20 p-4">
996-
<div className="flex gap-3">
997-
<Shield className="h-5 w-5 text-blue-600 dark:text-blue-400 flex-shrink-0 mt-0.5" />
998-
<div className="space-y-2">
999-
<p className="font-medium text-blue-900 dark:text-blue-100">Your privacy is protected</p>
1000-
<ul className="text-sm text-blue-800 dark:text-blue-200 space-y-1">
1001-
<li>• No personal information is collected</li>
1002-
<li>• No file contents, paths, or project names</li>
1003-
<li>• All data is anonymous with random IDs</li>
1004-
<li>• You can disable analytics at any time</li>
1005-
</ul>
1006-
</div>
1007-
</div>
1008-
</div>
1009-
1010-
{/* Data Collection Info */}
1011-
{analyticsEnabled && (
1012-
<div className="space-y-4">
1013-
<div>
1014-
<h4 className="text-sm font-medium mb-2">What we collect:</h4>
1015-
<ul className="text-sm text-muted-foreground space-y-1">
1016-
<li>• Feature usage patterns</li>
1017-
<li>• Performance metrics</li>
1018-
<li>• Error reports (without sensitive data)</li>
1019-
<li>• Session frequency and duration</li>
1020-
</ul>
1021-
</div>
1022-
1023-
{/* Delete Data Button */}
1024-
<div className="pt-4 border-t">
1025-
<Button
1026-
variant="destructive"
1027-
size="sm"
1028-
onClick={async () => {
1029-
await analytics.deleteAllData();
1030-
setAnalyticsEnabled(false);
1031-
setAnalyticsConsented(false);
1032-
setToast({ message: "All analytics data deleted", type: "success" });
1033-
}}
1034-
>
1035-
<Trash className="mr-2 h-4 w-4" />
1036-
Delete All Analytics Data
1037-
</Button>
1038-
</div>
1039-
</div>
1040-
)}
1041-
</div>
1042-
</div>
1043-
</Card>
1044-
</TabsContent>
10451003
</Tabs>
10461004
</div>
10471005
)}

0 commit comments

Comments
 (0)