diff --git a/assets/components/search/DomainLifecycleSteps.tsx b/assets/components/search/DomainLifecycleSteps.tsx
new file mode 100644
index 0000000..180f22c
--- /dev/null
+++ b/assets/components/search/DomainLifecycleSteps.tsx
@@ -0,0 +1,55 @@
+import {StepProps, Steps, Tooltip} from "antd";
+import React from "react";
+import {t} from "ttag";
+import {
+ CheckOutlined,
+ DeleteOutlined,
+ ExclamationCircleOutlined,
+ ReloadOutlined,
+ SignatureOutlined
+} from "@ant-design/icons";
+import {rdapEventDetailTranslation, rdapStatusCodeDetailTranslation} from "../../utils/functions/rdapTranslation";
+
+export function DomainLifecycleSteps({status}: { status: string[] }) {
+
+ const rdapEventDetailTranslated = rdapEventDetailTranslation()
+ const rdapStatusCodeDetailTranslated = rdapStatusCodeDetailTranslation()
+
+
+ const steps: StepProps[] = [
+ {
+ title: {t`Registration`},
+ icon:
+ },
+ {
+ title: {t`Active`},
+ icon:
+ },
+ {
+ title: {t`Renew Period`},
+ icon:
+ },
+ {
+ title: {t`Redemption Period`},
+ icon:
+ },
+ {
+ title: {t`Pending Delete`},
+ icon:
+ }
+ ]
+
+ let currentStep = 1
+
+ if (status.includes('redemption period')) {
+ currentStep = 4
+ } else if (status.includes('pending delete')) {
+ currentStep = 5
+ }
+
+ return
+}
\ No newline at end of file
diff --git a/assets/components/search/DomainResult.tsx b/assets/components/search/DomainResult.tsx
index 3ef7d55..ed4d1db 100644
--- a/assets/components/search/DomainResult.tsx
+++ b/assets/components/search/DomainResult.tsx
@@ -5,15 +5,18 @@ import {EntitiesList} from "./EntitiesList";
import {DomainDiagram} from "./DomainDiagram";
import React from "react";
import {Domain} from "../../utils/api";
-import {rdapStatusCodeDetailTranslation} from "./rdapTranslation";
+import {rdapStatusCodeDetailTranslation} from "../../utils/functions/rdapTranslation";
import {regionNames} from "../../i18n";
import {getCountryCode} from "../../utils/functions/getCountryCode";
+import {eppStatusCodeToColor} from "../../utils/functions/eppStatusCodeToColor";
+import {DomainLifecycleSteps} from "./DomainLifecycleSteps";
export function DomainResult({domain}: { domain: Domain }) {
const rdapStatusCodeDetailTranslated = rdapStatusCodeDetailTranslation()
- const {tld} = domain
+ const {tld, events} = domain
+ const domainEvents = events.sort((e1, e2) => new Date(e2.date).getTime() - new Date(e1.date).getTime())
return
@@ -34,6 +37,9 @@ export function DomainResult({domain}: { domain: Domain }) {
{domain.ldhName}{domain.handle && {domain.handle}}
}
size="small">
+ {
+ domain.events.length > 0 &&
+ }
{domain.status.length > 0 &&
<>
{t`EPP Status Codes`}
@@ -43,15 +49,19 @@ export function DomainResult({domain}: { domain: Domain }) {
- {s}
+ {s}
)
}
>
}
- {t`Timeline`}
-
+ {
+ domain.events.length > 0 && <>
+ {t`Timeline`}
+
+ >
+ }
{
domain.entities.length > 0 &&
<>
diff --git a/assets/components/search/DomainSearchBar.tsx b/assets/components/search/DomainSearchBar.tsx
index e85a9b0..f98c124 100644
--- a/assets/components/search/DomainSearchBar.tsx
+++ b/assets/components/search/DomainSearchBar.tsx
@@ -10,10 +10,9 @@ export type FieldType = {
export function DomainSearchBar({onFinish}: { onFinish: (values: FieldType) => void }) {
return
name="ldhName"
diff --git a/assets/components/search/EntitiesList.tsx b/assets/components/search/EntitiesList.tsx
index 599e7bb..7a12d6c 100644
--- a/assets/components/search/EntitiesList.tsx
+++ b/assets/components/search/EntitiesList.tsx
@@ -1,7 +1,7 @@
import {List, Tag, Tooltip} from "antd";
import React from "react";
import {Domain} from "../../utils/api";
-import {rdapRoleDetailTranslation, rdapRoleTranslation} from "./rdapTranslation";
+import {rdapRoleDetailTranslation, rdapRoleTranslation} from "../../utils/functions/rdapTranslation";
import {roleToAvatar} from "../../utils/functions/roleToAvatar";
import {rolesToColor} from "../../utils/functions/rolesToColor";
import {entityToName} from "../../utils/functions/entityToName";
diff --git a/assets/components/search/EventTimeline.tsx b/assets/components/search/EventTimeline.tsx
index c5a4a16..86f20f0 100644
--- a/assets/components/search/EventTimeline.tsx
+++ b/assets/components/search/EventTimeline.tsx
@@ -1,53 +1,53 @@
-import {Timeline, Tooltip, Typography} from "antd";
+import {Progress, Timeline, Tooltip, Typography} from "antd";
import React from "react";
-import {Domain} from "../../utils/api";
+import {Event} from "../../utils/api";
import useBreakpoint from "../../hooks/useBreakpoint";
-import {rdapEventDetailTranslation, rdapEventNameTranslation} from "./rdapTranslation";
+import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../utils/functions/rdapTranslation";
import {actionToColor} from "../../utils/functions/actionToColor";
import {actionToIcon} from "../../utils/functions/actionToIcon";
-export function EventTimeline({domain}: { domain: Domain }) {
+export function EventTimeline({events}: { events: Event[] }) {
const sm = useBreakpoint('sm')
const locale = navigator.language.split('-')[0]
const rdapEventNameTranslated = rdapEventNameTranslation()
const rdapEventDetailTranslated = rdapEventDetailTranslation()
- const domainEvents = domain.events.sort((e1, e2) => new Date(e2.date).getTime() - new Date(e1.date).getTime())
+ return <>
+ {
+ const sameEvents = events.filter(se => se.action === e.action)
+ const isRelevant = !(sameEvents.length > 1 && sameEvents.indexOf(e) !== 0)
- return {
- const sameEvents = domainEvents.filter(se => se.action === e.action)
- const isRelevant = !(sameEvents.length > 1 && sameEvents.indexOf(e) !== 0)
+ const eventName =
+ {e.action in rdapEventNameTranslated ? rdapEventNameTranslated[e.action as keyof typeof rdapEventNameTranslated] : e.action}
+
- const eventName =
- {e.action in rdapEventNameTranslated ? rdapEventNameTranslated[e.action as keyof typeof rdapEventNameTranslated] : e.action}
-
+ const dateStr = {new Date(e.date).toLocaleString(locale)}
+
- const dateStr = {new Date(e.date).toLocaleString(locale)}
-
+ const eventDetail = e.action in rdapEventDetailTranslated ? rdapEventDetailTranslated[e.action as keyof typeof rdapEventDetailTranslated] : undefined
- const eventDetail = e.action in rdapEventDetailTranslated ? rdapEventDetailTranslated[e.action as keyof typeof rdapEventDetailTranslated] : undefined
+ const text = sm ? {
+ children:
+ {eventName} {dateStr}
+
+ } : {
+ label: dateStr,
+ children: {eventName},
+ }
- const text = sm ? {
- children:
- {eventName} {dateStr}
-
- } : {
- label: dateStr,
- children: {eventName},
- }
-
- return {
- color: isRelevant ? actionToColor(e.action) : 'grey',
- dot: actionToIcon(e.action),
- pending: new Date(e.date).getTime() > new Date().getTime(),
- ...text
+ return {
+ color: isRelevant ? actionToColor(e.action) : 'grey',
+ dot: actionToIcon(e.action),
+ pending: new Date(e.date).getTime() > new Date().getTime(),
+ ...text
+ }
}
+ )
}
- )
- }
- />
+ />
+ >
}
\ No newline at end of file
diff --git a/assets/components/tracking/watchlist/WatchlistCard.tsx b/assets/components/tracking/watchlist/WatchlistCard.tsx
index 334fe28..a93b9e5 100644
--- a/assets/components/tracking/watchlist/WatchlistCard.tsx
+++ b/assets/components/tracking/watchlist/WatchlistCard.tsx
@@ -10,7 +10,7 @@ import {Watchlist} from "../../../pages/tracking/WatchlistPage";
import {Connector} from "../../../utils/api/connectors";
import useBreakpoint from "../../../hooks/useBreakpoint";
import {CalendarWatchlistButton} from "./CalendarWatchlistButton";
-import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../search/rdapTranslation";
+import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../../utils/functions/rdapTranslation";
import {actionToColor} from "../../../utils/functions/actionToColor";
diff --git a/assets/components/tracking/watchlist/WatchlistForm.tsx b/assets/components/tracking/watchlist/WatchlistForm.tsx
index 02a22e7..ac9cf56 100644
--- a/assets/components/tracking/watchlist/WatchlistForm.tsx
+++ b/assets/components/tracking/watchlist/WatchlistForm.tsx
@@ -3,7 +3,7 @@ import {t} from "ttag";
import {ApiOutlined, MinusCircleOutlined, PlusOutlined} from "@ant-design/icons";
import React from "react";
import {Connector} from "../../../utils/api/connectors";
-import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../search/rdapTranslation";
+import {rdapEventDetailTranslation, rdapEventNameTranslation} from "../../../utils/functions/rdapTranslation";
import {actionToColor} from "../../../utils/functions/actionToColor";
import {actionToIcon} from "../../../utils/functions/actionToIcon";
diff --git a/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx b/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx
index 8168d3e..572cd94 100644
--- a/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx
+++ b/assets/components/tracking/watchlist/diagram/watchlistToEdges.tsx
@@ -1,5 +1,5 @@
import {Domain, Watchlist} from "../../../../utils/api";
-import {rdapRoleTranslation} from "../../../search/rdapTranslation";
+import {rdapRoleTranslation} from "../../../../utils/functions/rdapTranslation";
import {t} from "ttag";
import {rolesToColor} from "../../../../utils/functions/rolesToColor";
diff --git a/assets/pages/search/DomainSearchPage.tsx b/assets/pages/search/DomainSearchPage.tsx
index 9049b34..f5be277 100644
--- a/assets/pages/search/DomainSearchPage.tsx
+++ b/assets/pages/search/DomainSearchPage.tsx
@@ -1,5 +1,5 @@
import React, {useState} from "react";
-import {Card, Empty, Flex, FormProps, message, Skeleton} from "antd";
+import {Empty, Flex, FormProps, message, Skeleton} from "antd";
import {Domain, getDomain} from "../../utils/api";
import {AxiosError} from "axios"
import {t} from 'ttag'
@@ -23,18 +23,16 @@ export default function DomainSearchPage() {
}
return
-
- {contextHolder}
-
+ {contextHolder}
+
-
- {
- domain &&
- (!domain.deleted ?
- : )
- }
-
-
+
+ {
+ domain &&
+ (!domain.deleted ?
+ : )
+ }
+
}
\ No newline at end of file
diff --git a/assets/utils/functions/eppStatusCodeToColor.tsx b/assets/utils/functions/eppStatusCodeToColor.tsx
new file mode 100644
index 0000000..cb5c897
--- /dev/null
+++ b/assets/utils/functions/eppStatusCodeToColor.tsx
@@ -0,0 +1,5 @@
+export const eppStatusCodeToColor = (s: string) =>
+ ['active', 'ok'].includes(s) ? 'green' :
+ s.startsWith('client') ? 'purple' :
+ s.startsWith('server') ? 'geekblue' :
+ s.includes('prohibited') ? 'red' : 'blue'
\ No newline at end of file
diff --git a/assets/components/search/rdapTranslation.ts b/assets/utils/functions/rdapTranslation.ts
similarity index 100%
rename from assets/components/search/rdapTranslation.ts
rename to assets/utils/functions/rdapTranslation.ts
diff --git a/assets/utils/functions/rolesToColor.tsx b/assets/utils/functions/rolesToColor.tsx
index f4d40f0..fbfb73e 100644
--- a/assets/utils/functions/rolesToColor.tsx
+++ b/assets/utils/functions/rolesToColor.tsx
@@ -1,6 +1,6 @@
export const rolesToColor = (roles: string[]) => roles.includes('registrant') ? 'green' :
- roles.includes('administrative') ? 'blue' :
- roles.includes('technical') ? 'orange' :
+ roles.includes('technical') ? 'orange' :
+ roles.includes('administrative') ? 'blue' :
roles.includes('registrar') ? 'purple' :
roles.includes('sponsor') ? 'magenta' :
roles.includes('billing') ? 'cyan' : 'default'
\ No newline at end of file
diff --git a/public/manifest.json b/public/manifest.json
index 57bbd98..fb215e3 100644
--- a/public/manifest.json
+++ b/public/manifest.json
@@ -10,7 +10,6 @@
],
"scope": "/",
"start_url": "/",
- "orientation": "landscape",
"display": "standalone",
"background_color": "#fff",
"description": "A standalone app that collects open access information about domain names, helping users track the history and changes associated with domain names. "
diff --git a/src/Controller/WatchListController.php b/src/Controller/WatchListController.php
index 0266c1d..760b1a5 100644
--- a/src/Controller/WatchListController.php
+++ b/src/Controller/WatchListController.php
@@ -52,7 +52,10 @@ class WatchListController extends AbstractController
private readonly SerializerInterface $serializer,
private readonly EntityManagerInterface $em,
private readonly WatchListRepository $watchListRepository,
- private readonly LoggerInterface $logger, private readonly HttpClientInterface $httpClient, private readonly CacheItemPoolInterface $cacheItemPool, private readonly KernelInterface $kernel
+ private readonly LoggerInterface $logger,
+ private readonly HttpClientInterface $httpClient,
+ private readonly CacheItemPoolInterface $cacheItemPool,
+ private readonly KernelInterface $kernel
) {
}
diff --git a/src/MessageHandler/ProcessDomainTriggerHandler.php b/src/MessageHandler/ProcessDomainTriggerHandler.php
index 770c94d..8bbbf71 100644
--- a/src/MessageHandler/ProcessDomainTriggerHandler.php
+++ b/src/MessageHandler/ProcessDomainTriggerHandler.php
@@ -43,7 +43,8 @@ final readonly class ProcessDomainTriggerHandler
private KernelInterface $kernel,
private LoggerInterface $logger,
private HttpClientInterface $client,
- private MailerInterface $mailer, private CacheItemPoolInterface $cacheItemPool
+ private MailerInterface $mailer,
+ private CacheItemPoolInterface $cacheItemPool
) {
$this->sender = new Address($mailerSenderEmail, $mailerSenderName);
}
diff --git a/translations/translations.pot b/translations/translations.pot
index 9dfef2d..14ec0f6 100644
--- a/translations/translations.pot
+++ b/translations/translations.pot
@@ -12,7 +12,7 @@ msgstr ""
#: assets/components/LoginForm.tsx:62
#: assets/components/RegisterForm.tsx:41
#: assets/components/RegisterForm.tsx:49
-#: assets/components/search/DomainSearchBar.tsx:22
+#: assets/components/search/DomainSearchBar.tsx:21
#: assets/components/tracking/connector/ConnectorForm.tsx:43
#: assets/components/tracking/connector/ConnectorForm.tsx:69
#: assets/components/tracking/connector/ConnectorForm.tsx:77
@@ -40,471 +40,44 @@ msgstr ""
msgid "Log in with SSO"
msgstr ""
-#: assets/components/search/rdapTranslation.ts:7
-msgid "Registrant"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:8
-msgid "Technical"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:9
-msgid "Administrative"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:10
-msgid "Abuse"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:11
-msgid "Billing"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:12
-msgid "Registrar"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:13
-msgid "Reseller"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:14
-msgid "Sponsor"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:15
-msgid "Proxy"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:16
-msgid "Notifications"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:17
-msgid "Noc"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:25
-msgid ""
-"The entity object instance is the registrant of the registration. In some "
-"registries, this is known as a maintainer."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:26
-msgid "The entity object instance is a technical contact for the registration."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:27
-msgid ""
-"The entity object instance is an administrative contact for the "
-"registration."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:28
-msgid ""
-"The entity object instance handles network abuse issues on behalf of the "
-"registrant of the registration."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:29
-msgid ""
-"The entity object instance handles payment and billing issues on behalf of "
-"the registrant of the registration."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:30
-msgid ""
-"The entity object instance represents the authority responsible for the "
-"registration in the registry."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:31
-msgid ""
-"The entity object instance represents a third party through which the "
-"registration was conducted (i.e., not the registry or registrar)."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:32
-msgid ""
-"The entity object instance represents a domain policy sponsor, such as an "
-"ICANN-approved sponsor."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:33
-msgid ""
-"The entity object instance represents a proxy for another entity object, "
-"such as a registrant."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:34
-msgid ""
-"An entity object instance designated to receive notifications about "
-"association object instances."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:35
-msgid ""
-"The entity object instance handles communications related to a network "
-"operations center (NOC)."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:43
-msgid "Registration"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:44
-msgid "Reregistration"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:45
-msgid "Changed"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:46
-msgid "Expiration"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:47
-msgid "Deletion"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:48
-msgid "Reinstantiation"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:49
-msgid "Transfer"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:50
-msgid "Locked"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:51
-msgid "Unlocked"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:52
-msgid "Registrar expiration"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:53
-msgid "ENUM validation expiration"
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:60
-msgid "The object instance was initially registered."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:61
-msgid "The object instance was registered subsequently to initial registration."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:62
-msgid ""
-"An action noting when the information in the object instance was last "
-"changed."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:63
-msgid ""
-"The object instance has been removed or will be removed at a predetermined "
-"date and time from the registry."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:64
-msgid ""
-"The object instance was removed from the registry at a point in time that "
-"was not predetermined."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:65
-msgid ""
-"The object instance was reregistered after having been removed from the "
-"registry."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:66
-msgid "The object instance was transferred from one registrar to another."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:67
-msgid "The object instance was locked."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:68
-msgid "The object instance was unlocked."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:69
-msgid "An action noting the expiration date of the object in the registrar system."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:70
-msgid ""
-"Association of phone number represented by this ENUM domain to registrant "
-"has expired or will expire at a predetermined date and time."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:78
-msgid ""
-"Signifies that the data of the object instance has been found to be "
-"accurate."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:79
-msgid "Renewal or reregistration of the object instance is forbidden."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:80
-msgid "Updates to the object instance are forbidden."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:81
-msgid "Transfers of the registration from one registrar to another are forbidden."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:82
-msgid "Deletion of the registration of the object instance is forbidden."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:83
-msgid "The registration of the object instance has been performed by a third party."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:84
-msgid ""
-"The information of the object instance is not designated for public "
-"consumption."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:85
-msgid ""
-"Some of the information of the object instance has not been made available "
-"and has been removed."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:86
-msgid ""
-"Some of the information of the object instance has been altered for the "
-"purposes of not readily revealing the actual information of the object "
-"instance."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:87
-msgid ""
-"The object instance is associated with other object instances in the "
-"registry."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:88
-msgid ""
-"Changes to the object instance cannot be made, including the association of "
-"other object instances."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:90
-#: assets/components/search/rdapTranslation.ts:99
-msgid ""
-"This is the standard status for a domain, meaning it has no pending "
-"operations or prohibitions."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:91
-msgid ""
-"This status code indicates that delegation information (name servers) has "
-"not been associated with your domain. Your domain is not activated in the "
-"DNS and will not resolve."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:92
-msgid ""
-"This status code indicates that a request to create your domain has been "
-"received and is being processed."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:93
-msgid ""
-"This status code indicates that a request to renew your domain has been "
-"received and is being processed."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:94
-msgid ""
-"This status code indicates that a request to transfer your domain to a new "
-"registrar has been received and is being processed."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:95
-msgid ""
-"This status code indicates that a request to update your domain has been "
-"received and is being processed."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:96
-msgid ""
-"This status code may be mixed with redemptionPeriod or pendingRestore. In "
-"such case, depending on the status (i.e. redemptionPeriod or "
-"pendingRestore) set in the domain name, the corresponding description "
-"presented above applies. If this status is not combined with the "
-"redemptionPeriod or pendingRestore status, the pendingDelete status code "
-"indicates that your domain has been in redemptionPeriod status for 30 days "
-"and you have not restored it within that 30-day period. Your domain will "
-"remain in this status for several days, after which time your domain will "
-"be purged and dropped from the registry database. Once deletion occurs, the "
-"domain is available for re-registration in accordance with the registry's "
-"policies."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:97
-msgid ""
-"This grace period is provided after the initial registration of a domain "
-"name. If the registrar deletes the domain name during this period, the "
-"registry may provide credit to the registrar for the cost of the "
-"registration."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:98
-msgid ""
-"This grace period is provided after a domain name registration period "
-"expires and is extended (renewed) automatically by the registry. If the "
-"registrar deletes the domain name during this period, the registry provides "
-"a credit to the registrar for the cost of the renewal."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:100
-msgid ""
-"This status code tells your domain's registry to reject requests to delete "
-"the domain."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:101
-msgid ""
-"This status code tells your domain's registry to not activate your domain "
-"in the DNS and as a consequence, it will not resolve. It is an uncommon "
-"status that is usually enacted during legal disputes, non-payment, or when "
-"your domain is subject to deletion."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:102
-msgid ""
-"This status code tells your domain's registry to reject requests to renew "
-"your domain. It is an uncommon status that is usually enacted during legal "
-"disputes or when your domain is subject to deletion."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:103
-msgid ""
-"This status code tells your domain's registry to reject requests to "
-"transfer the domain from your current registrar to another."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:104
-msgid ""
-"This status code tells your domain's registry to reject requests to update "
-"the domain."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:105
-msgid ""
-"This status code indicates that your registrar has asked the registry to "
-"restore your domain that was in redemptionPeriod status. Your registry will "
-"hold the domain in this status while waiting for your registrar to provide "
-"required restoration documentation. If your registrar fails to provide "
-"documentation to the registry operator within a set time period to confirm "
-"the restoration request, the domain will revert to redemptionPeriod status."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:106
-msgid ""
-"This status code indicates that your registrar has asked the registry to "
-"delete your domain. Your domain will be held in this status for 30 days. "
-"After five calendar days following the end of the redemptionPeriod, your "
-"domain is purged from the registry database and becomes available for "
-"registration."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:107
-msgid ""
-"This grace period is provided after a domain name registration period is "
-"explicitly extended (renewed) by the registrar. If the registrar deletes "
-"the domain name during this period, the registry provides a credit to the "
-"registrar for the cost of the renewal."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:108
-msgid ""
-"This status code prevents your domain from being deleted. It is an uncommon "
-"status that is usually enacted during legal disputes, at your request, or "
-"when a redemptionPeriod status is in place."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:109
-msgid ""
-"This status code indicates your domain's Registry Operator will not allow "
-"your registrar to renew your domain. It is an uncommon status that is "
-"usually enacted during legal disputes or when your domain is subject to "
-"deletion."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:110
-msgid ""
-"This status code prevents your domain from being transferred from your "
-"current registrar to another. It is an uncommon status that is usually "
-"enacted during legal or other disputes, at your request, or when a "
-"redemptionPeriod status is in place."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:111
-msgid ""
-"This status code locks your domain preventing it from being updated. It is "
-"an uncommon status that is usually enacted during legal disputes, at your "
-"request, or when a redemptionPeriod status is in place."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:112
-msgid ""
-"This status code is set by your domain's Registry Operator. Your domain is "
-"not activated in the DNS."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:113
-msgid ""
-"This grace period is provided after the successful transfer of a domain "
-"name from one registrar to another. If the new registrar deletes the domain "
-"name during this period, the registry provides a credit to the registrar "
-"for the cost of the transfer."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:115
-msgid ""
-"The object instance has been allocated administratively (i.e., not for use "
-"by the recipient in their own right in operational networks)."
-msgstr ""
-
-#: assets/components/search/rdapTranslation.ts:116
-msgid ""
-"The object instance has been allocated to an IANA special-purpose address "
-"registry."
-msgstr ""
-
-#: assets/components/search/DomainResult.tsx:39
+#: assets/components/search/DomainResult.tsx:45
msgid "EPP Status Codes"
msgstr ""
-#: assets/components/search/DomainResult.tsx:53
+#: assets/components/search/DomainResult.tsx:61
msgid "Timeline"
msgstr ""
-#: assets/components/search/DomainResult.tsx:58
+#: assets/components/search/DomainResult.tsx:68
msgid "Entities"
msgstr ""
-#: assets/components/search/DomainSearchBar.tsx:25
+#: assets/components/search/DomainSearchBar.tsx:24
#: assets/components/tracking/watchlist/WatchlistForm.tsx:118
msgid "This domain name does not appear to be valid"
msgstr ""
+#: assets/components/search/DomainLifecycleSteps.tsx:21
+#: assets/utils/functions/rdapTranslation.ts:43
+msgid "Registration"
+msgstr ""
+
+#: assets/components/search/DomainLifecycleSteps.tsx:25
+msgid "Active"
+msgstr ""
+
+#: assets/components/search/DomainLifecycleSteps.tsx:29
+msgid "Renew Period"
+msgstr ""
+
+#: assets/components/search/DomainLifecycleSteps.tsx:34
+msgid "Redemption Period"
+msgstr ""
+
+#: assets/components/search/DomainLifecycleSteps.tsx:38
+msgid "Pending Delete"
+msgstr ""
+
#: assets/components/tracking/connector/ConnectorForm.tsx:40
msgid "Provider"
msgstr ""
@@ -818,11 +391,7 @@ msgstr ""
msgid "Found !"
msgstr ""
-#: assets/pages/search/DomainSearchPage.tsx:26
-msgid "Domain finder"
-msgstr ""
-
-#: assets/pages/search/DomainSearchPage.tsx:35
+#: assets/pages/search/DomainSearchPage.tsx:34
msgid ""
"Although the domain exists in my database, it has been deleted from the "
"WHOIS by its registrar."
@@ -963,6 +532,450 @@ msgstr ""
msgid "Roles"
msgstr ""
+#: assets/utils/functions/rdapTranslation.ts:7
+msgid "Registrant"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:8
+msgid "Technical"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:9
+msgid "Administrative"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:10
+msgid "Abuse"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:11
+msgid "Billing"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:12
+msgid "Registrar"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:13
+msgid "Reseller"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:14
+msgid "Sponsor"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:15
+msgid "Proxy"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:16
+msgid "Notifications"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:17
+msgid "Noc"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:25
+msgid ""
+"The entity object instance is the registrant of the registration. In some "
+"registries, this is known as a maintainer."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:26
+msgid "The entity object instance is a technical contact for the registration."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:27
+msgid ""
+"The entity object instance is an administrative contact for the "
+"registration."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:28
+msgid ""
+"The entity object instance handles network abuse issues on behalf of the "
+"registrant of the registration."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:29
+msgid ""
+"The entity object instance handles payment and billing issues on behalf of "
+"the registrant of the registration."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:30
+msgid ""
+"The entity object instance represents the authority responsible for the "
+"registration in the registry."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:31
+msgid ""
+"The entity object instance represents a third party through which the "
+"registration was conducted (i.e., not the registry or registrar)."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:32
+msgid ""
+"The entity object instance represents a domain policy sponsor, such as an "
+"ICANN-approved sponsor."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:33
+msgid ""
+"The entity object instance represents a proxy for another entity object, "
+"such as a registrant."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:34
+msgid ""
+"An entity object instance designated to receive notifications about "
+"association object instances."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:35
+msgid ""
+"The entity object instance handles communications related to a network "
+"operations center (NOC)."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:44
+msgid "Reregistration"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:45
+msgid "Changed"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:46
+msgid "Expiration"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:47
+msgid "Deletion"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:48
+msgid "Reinstantiation"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:49
+msgid "Transfer"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:50
+msgid "Locked"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:51
+msgid "Unlocked"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:52
+msgid "Registrar expiration"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:53
+msgid "ENUM validation expiration"
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:60
+msgid "The object instance was initially registered."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:61
+msgid "The object instance was registered subsequently to initial registration."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:62
+msgid ""
+"An action noting when the information in the object instance was last "
+"changed."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:63
+msgid ""
+"The object instance has been removed or will be removed at a predetermined "
+"date and time from the registry."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:64
+msgid ""
+"The object instance was removed from the registry at a point in time that "
+"was not predetermined."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:65
+msgid ""
+"The object instance was reregistered after having been removed from the "
+"registry."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:66
+msgid "The object instance was transferred from one registrar to another."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:67
+msgid "The object instance was locked."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:68
+msgid "The object instance was unlocked."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:69
+msgid "An action noting the expiration date of the object in the registrar system."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:70
+msgid ""
+"Association of phone number represented by this ENUM domain to registrant "
+"has expired or will expire at a predetermined date and time."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:78
+msgid ""
+"Signifies that the data of the object instance has been found to be "
+"accurate."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:79
+msgid "Renewal or reregistration of the object instance is forbidden."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:80
+msgid "Updates to the object instance are forbidden."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:81
+msgid "Transfers of the registration from one registrar to another are forbidden."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:82
+msgid "Deletion of the registration of the object instance is forbidden."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:83
+msgid "The registration of the object instance has been performed by a third party."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:84
+msgid ""
+"The information of the object instance is not designated for public "
+"consumption."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:85
+msgid ""
+"Some of the information of the object instance has not been made available "
+"and has been removed."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:86
+msgid ""
+"Some of the information of the object instance has been altered for the "
+"purposes of not readily revealing the actual information of the object "
+"instance."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:87
+msgid ""
+"The object instance is associated with other object instances in the "
+"registry."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:88
+msgid ""
+"Changes to the object instance cannot be made, including the association of "
+"other object instances."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:90
+#: assets/utils/functions/rdapTranslation.ts:99
+msgid ""
+"This is the standard status for a domain, meaning it has no pending "
+"operations or prohibitions."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:91
+msgid ""
+"This status code indicates that delegation information (name servers) has "
+"not been associated with your domain. Your domain is not activated in the "
+"DNS and will not resolve."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:92
+msgid ""
+"This status code indicates that a request to create your domain has been "
+"received and is being processed."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:93
+msgid ""
+"This status code indicates that a request to renew your domain has been "
+"received and is being processed."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:94
+msgid ""
+"This status code indicates that a request to transfer your domain to a new "
+"registrar has been received and is being processed."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:95
+msgid ""
+"This status code indicates that a request to update your domain has been "
+"received and is being processed."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:96
+msgid ""
+"This status code may be mixed with redemptionPeriod or pendingRestore. In "
+"such case, depending on the status (i.e. redemptionPeriod or "
+"pendingRestore) set in the domain name, the corresponding description "
+"presented above applies. If this status is not combined with the "
+"redemptionPeriod or pendingRestore status, the pendingDelete status code "
+"indicates that your domain has been in redemptionPeriod status for 30 days "
+"and you have not restored it within that 30-day period. Your domain will "
+"remain in this status for several days, after which time your domain will "
+"be purged and dropped from the registry database. Once deletion occurs, the "
+"domain is available for re-registration in accordance with the registry's "
+"policies."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:97
+msgid ""
+"This grace period is provided after the initial registration of a domain "
+"name. If the registrar deletes the domain name during this period, the "
+"registry may provide credit to the registrar for the cost of the "
+"registration."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:98
+msgid ""
+"This grace period is provided after a domain name registration period "
+"expires and is extended (renewed) automatically by the registry. If the "
+"registrar deletes the domain name during this period, the registry provides "
+"a credit to the registrar for the cost of the renewal."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:100
+msgid ""
+"This status code tells your domain's registry to reject requests to delete "
+"the domain."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:101
+msgid ""
+"This status code tells your domain's registry to not activate your domain "
+"in the DNS and as a consequence, it will not resolve. It is an uncommon "
+"status that is usually enacted during legal disputes, non-payment, or when "
+"your domain is subject to deletion."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:102
+msgid ""
+"This status code tells your domain's registry to reject requests to renew "
+"your domain. It is an uncommon status that is usually enacted during legal "
+"disputes or when your domain is subject to deletion."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:103
+msgid ""
+"This status code tells your domain's registry to reject requests to "
+"transfer the domain from your current registrar to another."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:104
+msgid ""
+"This status code tells your domain's registry to reject requests to update "
+"the domain."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:105
+msgid ""
+"This status code indicates that your registrar has asked the registry to "
+"restore your domain that was in redemptionPeriod status. Your registry will "
+"hold the domain in this status while waiting for your registrar to provide "
+"required restoration documentation. If your registrar fails to provide "
+"documentation to the registry operator within a set time period to confirm "
+"the restoration request, the domain will revert to redemptionPeriod status."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:106
+msgid ""
+"This status code indicates that your registrar has asked the registry to "
+"delete your domain. Your domain will be held in this status for 30 days. "
+"After five calendar days following the end of the redemptionPeriod, your "
+"domain is purged from the registry database and becomes available for "
+"registration."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:107
+msgid ""
+"This grace period is provided after a domain name registration period is "
+"explicitly extended (renewed) by the registrar. If the registrar deletes "
+"the domain name during this period, the registry provides a credit to the "
+"registrar for the cost of the renewal."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:108
+msgid ""
+"This status code prevents your domain from being deleted. It is an uncommon "
+"status that is usually enacted during legal disputes, at your request, or "
+"when a redemptionPeriod status is in place."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:109
+msgid ""
+"This status code indicates your domain's Registry Operator will not allow "
+"your registrar to renew your domain. It is an uncommon status that is "
+"usually enacted during legal disputes or when your domain is subject to "
+"deletion."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:110
+msgid ""
+"This status code prevents your domain from being transferred from your "
+"current registrar to another. It is an uncommon status that is usually "
+"enacted during legal or other disputes, at your request, or when a "
+"redemptionPeriod status is in place."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:111
+msgid ""
+"This status code locks your domain preventing it from being updated. It is "
+"an uncommon status that is usually enacted during legal disputes, at your "
+"request, or when a redemptionPeriod status is in place."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:112
+msgid ""
+"This status code is set by your domain's Registry Operator. Your domain is "
+"not activated in the DNS."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:113
+msgid ""
+"This grace period is provided after the successful transfer of a domain "
+"name from one registrar to another. If the new registrar deletes the domain "
+"name during this period, the registry provides a credit to the registrar "
+"for the cost of the transfer."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:115
+msgid ""
+"The object instance has been allocated administratively (i.e., not for use "
+"by the recipient in their own right in operational networks)."
+msgstr ""
+
+#: assets/utils/functions/rdapTranslation.ts:116
+msgid ""
+"The object instance has been allocated to an IANA special-purpose address "
+"registry."
+msgstr ""
+
#: assets/utils/functions/showErrorAPI.tsx:19
#, javascript-format
msgid "Please retry after ${ duration } seconds"