begin adding URL, link action on AbstractCard

This commit is contained in:
2024-05-09 23:08:32 -05:00
parent 28f58a362f
commit bd49b57376
4 changed files with 22 additions and 6 deletions

View File

@@ -1,16 +1,21 @@
import type { FunctionComponent, ReactNode } from "react"; import type { FunctionComponent, ReactNode } from "react";
import React from "react"; import React from "react";
import { useBoolean } from "usehooks-ts"; import { useBoolean } from "usehooks-ts";
import { CodeBracketIcon } from "@heroicons/react/24/solid"; import {
LinkIcon,
CodeBracketIcon,
} from "@heroicons/react/24/outline";
type AbstractCardProps = { type AbstractCardProps = {
children?: ReactNode; children?: ReactNode;
header?: ReactNode; header?: ReactNode;
footer?: ReactNode; footer?: ReactNode;
data?: object; data?: object;
url?: string;
}; };
const AbstractCard: FunctionComponent<AbstractCardProps> = ({ const AbstractCard: FunctionComponent<AbstractCardProps> = ({
url,
children, children,
header, header,
footer, footer,
@@ -29,6 +34,11 @@ const AbstractCard: FunctionComponent<AbstractCardProps> = ({
onClick={toggleRaw} onClick={toggleRaw}
className="h-6 w-6 cursor-pointer" className="h-6 w-6 cursor-pointer"
/> />
{url != undefined ? (
<div className="pr-2">
<a href={url} target="_blank" rel="noreferrer">
<LinkIcon className="h-5 w-5 mt-1 cursor-pointer" />
</a>
</div> </div>
) : null} ) : null}
</div> </div>

View File

@@ -9,12 +9,17 @@ import AbstractCard from "@/components/common/AbstractCard";
export type DomainProps = { export type DomainProps = {
data: Domain; data: Domain;
url?: string;
}; };
const DomainCard: FunctionComponent<DomainProps> = ({ data }: DomainProps) => { const DomainCard: FunctionComponent<DomainProps> = ({
data,
url,
}: DomainProps) => {
return ( return (
<AbstractCard <AbstractCard
data={data} data={data}
url={url}
header={ header={
<> <>
<span className="font-mono tracking-tighter">DOMAIN</span> <span className="font-mono tracking-tighter">DOMAIN</span>

View File

@@ -17,19 +17,20 @@ export type ParsedGeneric =
| IpNetwork; | IpNetwork;
export type ObjectProps = { export type ObjectProps = {
data: ParsedGeneric; data: ParsedGeneric;
url?: string;
}; };
const Generic: FunctionComponent<ObjectProps> = ({ data }: ObjectProps) => { const Generic: FunctionComponent<ObjectProps> = ({ data, url }: ObjectProps) => {
switch (data.objectClassName) { switch (data.objectClassName) {
case "domain": case "domain":
return <DomainCard data={data} />; return <DomainCard url={url} data={data} />;
case "autnum": case "autnum":
case "entity": case "entity":
case "ip network": case "ip network":
case "nameserver": case "nameserver":
default: default:
return ( return (
<AbstractCard> <AbstractCard url={url}>
Not implemented. (<pre>{data.objectClassName ?? "null"}</pre>) Not implemented. (<pre>{data.objectClassName ?? "null"}</pre>)
</AbstractCard> </AbstractCard>
); );

View File

@@ -81,7 +81,7 @@ const Index: NextPage = () => {
className="mb-2" className="mb-2"
/> />
) : null} ) : null}
{response != null ? <Generic data={response} /> : null} {response != null ? <Generic url={"https://google.com"} data={response} /> : null}
</div> </div>
</div> </div>
</> </>