remove unused

This commit is contained in:
Pallavi Kumari
2025-10-09 01:36:30 +05:30
parent 94137e587c
commit b33a54a449
4 changed files with 0 additions and 192 deletions

View File

@@ -110,8 +110,6 @@ import {
} from "@app/components/PathMatchRenameModal";
import { Badge } from "@app/components/ui/badge";
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@app/components/ui/tooltip";
import { TargetModal } from "@app/components/TargetModal";
import { TargetDisplay } from "@app/components/TargetDisplay";
const addTargetSchema = z
.object({

View File

@@ -94,8 +94,6 @@ import { DomainRow } from "../../../../../components/DomainsTable";
import { finalizeSubdomainSanitize } from "@app/lib/subdomain-utils";
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@app/components/ui/tooltip";
import { PathMatchDisplay, PathMatchModal, PathRewriteDisplay, PathRewriteModal } from "@app/components/PathMatchRenameModal";
import { TargetModal } from "@app/components/TargetModal";
import { TargetDisplay } from "@app/components/TargetDisplay";
import { Badge } from "@app/components/ui/badge";

View File

@@ -1,44 +0,0 @@
import { Globe, Hash, Shield } from "lucide-react";
interface TargetDisplayProps {
value: {
method?: string | null;
ip?: string;
port?: number;
};
showMethod?: boolean;
}
export function TargetDisplay({ value, showMethod = true }: TargetDisplayProps) {
const { method, ip, port } = value;
if (!ip && !port && !method) {
return <span className="text-muted-foreground text-sm">Not configured</span>;
}
return (
<div className="flex items-center gap-0 text-sm font-mono">
{showMethod && method && (
<span className="inline-flex items-center gap-1 font-medium">
{method === "https" && <Shield className="h-3 w-3 text-green-600 dark:text-green-400" />}
<span className={method === "https" ? "text-green-600 dark:text-green-400" : ""}>
{method}<span className="text-muted-foreground">://</span>
</span>
</span>
)}
{ip && (
<span className="inline-flex items-center font-medium">
{ip}
{port && <span className="text-muted-foreground">:</span>}
</span>
)}
{port && (
<span className="inline-flex items-center text-muted-foreground font-medium">
{port}
</span>
)}
</div>
);
}

View File

@@ -1,144 +0,0 @@
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
import { useState } from "react";
interface TargetConfig {
method?: string | null;
ip?: string;
port?: number;
}
interface TargetModalProps {
value: TargetConfig;
onChange: (config: TargetConfig) => void;
trigger: React.ReactNode;
showMethod?: boolean;
}
export function TargetModal({
value,
onChange,
trigger,
showMethod = true
}: TargetModalProps) {
const [open, setOpen] = useState(false);
const [config, setConfig] = useState<TargetConfig>(value);
const handleSave = () => {
onChange(config);
setOpen(false);
};
const parseHostTarget = (input: string) => {
const protocolMatch = input.match(/^(https?|h2c):\/\//);
const protocol = protocolMatch ? protocolMatch[1] : null;
const withoutProtocol = input.replace(/^(https?|h2c):\/\//, '');
const portMatch = withoutProtocol.match(/:(\d+)(?:\/|$)/);
const port = portMatch ? parseInt(portMatch[1], 10) : null;
const host = withoutProtocol.replace(/:\d+(?:\/|$)/, '').replace(/\/$/, '');
return { protocol, host, port };
};
const handleHostChange = (input: string) => {
const trimmed = input.trim();
const hasProtocol = /^(https?|h2c):\/\//.test(trimmed);
const hasPort = /:\d+(?:\/|$)/.test(trimmed);
if (hasProtocol || hasPort) {
const parsed = parseHostTarget(trimmed);
setConfig({
...config,
...(hasProtocol && parsed.protocol ? { method: parsed.protocol } : {}),
ip: parsed.host,
...(hasPort && parsed.port ? { port: parsed.port } : {})
});
} else {
setConfig({ ...config, ip: trimmed });
}
};
return (
<Dialog open={open} onOpenChange={setOpen}>
<DialogTrigger asChild>{trigger}</DialogTrigger>
<DialogContent className="sm:max-w-[500px]">
<DialogHeader>
<DialogTitle>Configure Target</DialogTitle>
</DialogHeader>
<div className="grid gap-4 py-4">
{showMethod && (
<div className="grid gap-2">
<Label htmlFor="method">Method</Label>
<Select
value={config.method || "http"}
onValueChange={(value) =>
setConfig({ ...config, method: value })
}
>
<SelectTrigger id="method">
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="http">http</SelectItem>
<SelectItem value="https">https</SelectItem>
<SelectItem value="h2c">h2c</SelectItem>
</SelectContent>
</Select>
</div>
)}
<div className="grid gap-2">
<Label htmlFor="host">IP Address / Hostname</Label>
<Input
id="host"
placeholder="e.g., 192.168.1.1 or example.com"
value={config.ip || ""}
onChange={(e) => setConfig({ ...config, ip: e.target.value })}
onBlur={(e) => handleHostChange(e.target.value)}
/>
<p className="text-xs text-muted-foreground">
You can also paste: http://example.com:8080
</p>
</div>
<div className="grid gap-2">
<Label htmlFor="port">Port</Label>
<Input
id="port"
type="number"
placeholder="e.g., 8080"
value={config.port || ""}
onChange={(e) =>
setConfig({
...config,
port: parseInt(e.target.value, 10) || undefined
})
}
/>
</div>
</div>
<div className="flex justify-end gap-2">
<Button variant="outline" onClick={() => setOpen(false)}>
Cancel
</Button>
<Button onClick={handleSave}>Save</Button>
</div>
</DialogContent>
</Dialog>
);
}