@@ -30,7 +32,7 @@ export function SubscriptionHeader({
? d.dashboard.header.thanks_for_subscription.replace(
"%s",
productName(
- subscription?.prices?.products,
+ subscription?.prices?.product_id,
d
)
)
@@ -39,12 +41,12 @@ export function SubscriptionHeader({
{subscription && (
<>
-
+
{d.dashboard.header.manage_subscription}
>
)}
-
+
{d.dashboard.header.billing_history}
@@ -53,31 +55,46 @@ export function SubscriptionHeader({
{d.dashboard.header.active_subscription}
- {productName(subscription?.prices?.products, d)}
+ {productName(subscription?.prices?.product_id, d)}
{subscription?.status === "active" && subscription?.cancel_at && (
{d.dashboard.header.plan_ends_on.replace(
"%s",
- formatDate(
- new Date(subscription.cancel_at),
- router.locale
- )
+ formatDate(new Date(subscription.cancel_at), d.lang)
)}
)}
- {subscription?.prices?.products?.id !==
+ {subscription?.prices?.product_id !==
COMMERCIAL_LICENSE_PRODUCT_ID && (
-
{d.dashboard.header.upgrade}
-
+
)}
);
}
+
+// Get the user-friendly name of a product.
+function productName(
+ product_id: string | null | undefined,
+ d: Dictionary
+): string {
+ switch (product_id) {
+ case COMMERCIAL_LICENSE_PRODUCT_ID:
+ return d.pricing.plans.commercial_license;
+ case SAAS_100K_PRODUCT_ID:
+ return d.pricing.plans.saas_100k;
+ case SAAS_10K_PRODUCT_ID:
+ return d.pricing.plans.saas_10k;
+ default:
+ return d.dashboard.header.no_active_subscription;
+ }
+}
diff --git a/src/app/[lang]/dashboard/Tabs.tsx b/src/app/[lang]/dashboard/Tabs.tsx
new file mode 100644
index 00000000..4d03557b
--- /dev/null
+++ b/src/app/[lang]/dashboard/Tabs.tsx
@@ -0,0 +1,54 @@
+import { Tabs as GTabs } from "@geist-ui/react";
+import React from "react";
+import { Dictionary } from "@/dictionaries";
+import Mail from "@geist-ui/react-icons/mail";
+import Database from "@geist-ui/react-icons/database";
+import Lock from "@geist-ui/react-icons/lock";
+import { ENABLE_BULK } from "@/util/helpers";
+import { useRouter } from "next/navigation";
+
+export interface TabsProps {
+ d: Dictionary;
+ bulkDisabled: boolean;
+ tab: "verify" | "bulk" | "api";
+}
+
+export function Tabs({ bulkDisabled, tab, ...props }: TabsProps) {
+ const router = useRouter();
+ const d = props.d.dashboard.tabs;
+
+ const handler = (value: string) => {
+ router.push(`/${props.d.lang}/dashboard/${value}`);
+ };
+
+ return ENABLE_BULK === 1 ? (
+