mirror of
https://github.com/Xevion/rdap.git
synced 2025-12-11 23:10:59 -06:00
begin adding URL, link action on AbstractCard
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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>
|
||||||
</>
|
</>
|
||||||
|
|||||||
Reference in New Issue
Block a user