refactor: Simplify GitHub connect form by removing unused components and documentation sections

This commit is contained in:
Anish Sarkar 2026-01-21 00:21:21 +05:30
parent 6dd535c85a
commit 8bd1ba0251

View file

@ -8,9 +8,6 @@ import { useForm } from "react-hook-form";
import * as z from "zod";
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
import { Badge } from "@/components/ui/badge";
@ -34,7 +31,6 @@ import {
} from "@/components/ui/select";
import { Switch } from "@/components/ui/switch";
import { EnumConnectorName } from "@/contracts/enums/connector";
import { getConnectorBenefits } from "../connector-benefits";
import type { ConnectFormProps } from "../index";
const githubConnectorFormSchema = z.object({
@ -298,165 +294,12 @@ export const GithubConnectForm: FC<ConnectFormProps> = ({ onSubmit, isSubmitting
</Form>
</div>
{/* What you get section */}
{getConnectorBenefits(EnumConnectorName.GITHUB_CONNECTOR) && (
<div className="rounded-xl border border-border bg-slate-400/5 dark:bg-white/5 px-3 sm:px-6 py-4 space-y-2">
<h4 className="text-xs sm:text-sm font-medium">What you get with GitHub integration:</h4>
<ul className="list-disc pl-5 text-[10px] sm:text-xs text-muted-foreground space-y-1">
{getConnectorBenefits(EnumConnectorName.GITHUB_CONNECTOR)?.map((benefit) => (
<li key={benefit}>{benefit}</li>
))}
</ul>
</div>
)}
{/* Documentation Section */}
<Accordion
type="single"
collapsible
className="w-full border border-border rounded-xl bg-slate-400/5 dark:bg-white/5"
>
<AccordionItem value="documentation" className="border-0">
<AccordionTrigger className="text-sm sm:text-base font-medium px-3 sm:px-6 no-underline hover:no-underline">
Documentation
</AccordionTrigger>
<AccordionContent className="px-3 sm:px-6 pb-3 sm:pb-6 space-y-6">
<div>
<h3 className="text-sm sm:text-base font-semibold mb-2">How it works</h3>
<p className="text-[10px] sm:text-xs text-muted-foreground">
The GitHub connector ingests entire repositories in one pass using gitingest,
making it highly efficient. Provide a comma-separated list of repository full
names (e.g., "owner/repo1, owner/repo2") to index.
</p>
<ul className="mt-2 list-disc pl-5 text-[10px] sm:text-xs text-muted-foreground space-y-1">
<li>
<strong>Public repos:</strong> No authentication required.
</li>
<li>
<strong>Private repos:</strong> Requires a GitHub Personal Access Token (PAT).
</li>
<li>Indexes code, documentation, and configuration files.</li>
<li>Large files (over 5MB) and binary files are automatically skipped.</li>
<li>
Periodic sync detects changes and only re-indexes when content has changed.
</li>
</ul>
</div>
<div className="space-y-4">
<div>
<h3 className="text-sm sm:text-base font-semibold mb-2">Authorization</h3>
<Alert className="bg-slate-400/5 dark:bg-white/5 border-slate-400/20 mb-4">
<Info className="h-3 w-3 sm:h-4 sm:w-4" />
<AlertTitle className="text-[10px] sm:text-xs">
Personal Access Token (Optional)
</AlertTitle>
<AlertDescription className="text-[9px] sm:text-[10px]">
A GitHub PAT is only needed for <strong>private repositories</strong>. Public
repos can be indexed without authentication. If you need to access private
repos, create a PAT with the 'repo' scope.
</AlertDescription>
</Alert>
<div className="space-y-4 sm:space-y-6">
<div>
<h4 className="text-[10px] sm:text-xs font-medium mb-2">
For Private Repositories Only: Generate GitHub PAT
</h4>
<p className="text-[10px] sm:text-xs text-muted-foreground mb-2">
Skip this step if you're only indexing public repositories.
</p>
<ol className="list-decimal pl-5 space-y-2 text-[10px] sm:text-xs text-muted-foreground">
<li>
Go to your GitHub{" "}
<a
href="https://github.com/settings/tokens"
target="_blank"
rel="noopener noreferrer"
className="font-medium underline underline-offset-4"
>
Developer settings
</a>
</li>
<li>
Click on <strong>Personal access tokens</strong>, then choose{" "}
<strong>Tokens (classic)</strong> or <strong>Fine-grained tokens</strong>.
</li>
<li>
Click <strong>Generate new token</strong>.
</li>
<li>Give your token a descriptive name (e.g., "SurfSense Connector").</li>
<li>
Grant the <strong>`repo`</strong> scope (for classic tokens) or read access
to the specific repositories you want to index (for fine-grained tokens).
</li>
<li>
Click <strong>Generate token</strong> and copy it immediately.
</li>
</ol>
</div>
<div>
<h4 className="text-[10px] sm:text-xs font-medium mb-2">
Specify Repositories
</h4>
<p className="text-[10px] sm:text-xs text-muted-foreground mb-3">
Enter a comma-separated list of repository full names in the format
"owner/repo1, owner/repo2". For example: "facebook/react, vercel/next.js".
</p>
<Alert className="bg-slate-400/5 dark:bg-white/5 border-slate-400/20">
<Info className="h-3 w-3 sm:h-4 sm:w-4" />
<AlertTitle className="text-[10px] sm:text-xs">Public vs Private</AlertTitle>
<AlertDescription className="text-[9px] sm:text-[10px]">
Public repositories work without a PAT. For private repositories, ensure
your PAT has access to the repos you want to index.
</AlertDescription>
</Alert>
</div>
</div>
</div>
</div>
<div className="space-y-4">
<div>
<h3 className="text-sm sm:text-base font-semibold mb-2">Quick Start</h3>
<ol className="list-decimal pl-5 space-y-2 text-[10px] sm:text-xs text-muted-foreground mb-4">
<li>
Enter the <strong>Repository Names</strong> you want to index (e.g.,
"facebook/react, vercel/next.js").
</li>
<li>
<strong>(Optional)</strong> Add a GitHub PAT if indexing private repositories.
</li>
<li>
Click <strong>Connect GitHub</strong> to start indexing.
</li>
<li>
Enable <strong>Periodic Sync</strong> to automatically detect and index
changes.
</li>
</ol>
<Alert className="bg-slate-400/5 dark:bg-white/5 border-slate-400/20">
<Info className="h-3 w-3 sm:h-4 sm:w-4" />
<AlertTitle className="text-[10px] sm:text-xs">What Gets Indexed</AlertTitle>
<AlertDescription className="text-[9px] sm:text-[10px]">
<p className="mb-2">The GitHub connector indexes:</p>
<ul className="list-disc pl-5 space-y-1">
<li>All code files (Python, JavaScript, TypeScript, etc.)</li>
<li>Documentation (README, Markdown, text files)</li>
<li>Configuration files (JSON, YAML, TOML, etc.)</li>
<li>Repository structure and file tree</li>
</ul>
<p className="mt-2">
Binary files, images, and build artifacts are automatically excluded.
</p>
</AlertDescription>
</Alert>
</div>
</div>
</AccordionContent>
</AccordionItem>
</Accordion>
</div>
);