import React from "react"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Star, Globe, Lock, Shield, Info, MonitorCog } from "lucide-react"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import type { MirrorStrategy, GiteaOrgVisibility, StarredReposMode } from "@/types/config"; interface OrganizationConfigurationProps { strategy: MirrorStrategy; destinationOrg?: string; starredReposOrg?: string; starredReposMode?: StarredReposMode; personalReposOrg?: string; visibility: GiteaOrgVisibility; onDestinationOrgChange: (org: string) => void; onStarredReposOrgChange: (org: string) => void; onStarredReposModeChange: (mode: StarredReposMode) => void; onPersonalReposOrgChange: (org: string) => void; onVisibilityChange: (visibility: GiteaOrgVisibility) => void; } const visibilityOptions = [ { value: "public" as GiteaOrgVisibility, label: "Public", icon: Globe, description: "Visible to everyone" }, { value: "private" as GiteaOrgVisibility, label: "Private", icon: Lock, description: "Visible to members only" }, { value: "limited" as GiteaOrgVisibility, label: "Limited", icon: Shield, description: "Visible to logged-in users" }, ]; export const OrganizationConfiguration: React.FC = ({ strategy, destinationOrg, starredReposOrg, starredReposMode, personalReposOrg, visibility, onDestinationOrgChange, onStarredReposOrgChange, onStarredReposModeChange, onPersonalReposOrgChange, onVisibilityChange, }) => { const activeStarredMode = starredReposMode || "dedicated-org"; const showStarredReposOrgInput = activeStarredMode === "dedicated-org"; const showDestinationOrgInput = strategy === "single-org" || strategy === "mixed"; return (

Organization Configuration

{ activeStarredMode === "dedicated-org" ? "All starred repositories go to a single destination organization." : "Starred repositories keep their original GitHub Owner/Org destination." }

{/* First row - Organization inputs */} {(showStarredReposOrgInput || showDestinationOrgInput) && (
{showStarredReposOrgInput ? (
onStarredReposOrgChange(e.target.value)} placeholder="starred" className="" />

Keep starred repos organized separately

) : (
)} {showDestinationOrgInput ? (
onDestinationOrgChange(e.target.value)} placeholder={strategy === "mixed" ? "github-personal" : "github-mirrors"} className="" />

{strategy === "mixed" ? "All personal repos will go to this organization" : "Organization for consolidated repositories" }

) : (
)}
)} {/* Second row - Organization Visibility (always shown) */}
{visibilityOptions.map((option) => { const Icon = option.icon; const isSelected = visibility === option.value; return (

{option.description}

); })}
); };