feat: conditionally show contact us or report issue based on plan (#20629)

* feat: conditionally show contact us or report issue based on plan

Co-Authored-By: peer@cal.com <peer@cal.com>

* fix: update icon name to triangle-alert to fix type error

Co-Authored-By: peer@cal.com <peer@cal.com>

* fix: check specific plan type instead of isPaidUser flag

Co-Authored-By: peer@cal.com <peer@cal.com>

* fix: check userBillingData.valid to ensure billing plan is active

Co-Authored-By: peer@cal.com <peer@cal.com>

* fix: convert plan to lowercase before comparison

Co-Authored-By: peer@cal.com <peer@cal.com>

* fixup: dont show contact card for free platform users

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: peer@cal.com <peer@cal.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: Ryukemeister <sahalrajiv6900@gmail.com>
This commit is contained in:
devin-ai-integration[bot]
2025-04-14 11:13:05 +00:00
committed by GitHub
co-authored by Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> peer@cal.com <peer@cal.com> amrit Ryukemeister
parent 65abf4edc6
commit 70d29ab6fa
3 changed files with 33 additions and 3 deletions
@@ -1,23 +1,39 @@
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { Card } from "@calcom/ui/components/card";
import { Icon } from "@calcom/ui/components/icon";
import { helpCards } from "@lib/settings/platform/utils";
import { useGetUserAttributes } from "@components/settings/platform/hooks/useGetUserAttributes";
export const HelpCards = () => {
const { t } = useLocale();
const { userBillingData } = useGetUserAttributes();
const isPaidUser = userBillingData?.valid && userBillingData?.plan?.toLowerCase() !== "free";
return (
<>
<div className="grid-col-1 mb-4 grid gap-2 md:grid-cols-3">
{helpCards.map((card) => {
if (card.title === "Contact us" && !isPaidUser) return null;
if (card.title === "Report issue" && isPaidUser) return null;
const title = card.title === "Report issue" ? t("report_issue") : card.title;
const description =
card.title === "Report issue" ? t("report_issue_description") : card.description;
const actionButtonChild = card.title === "Report issue" ? t("open_issue") : card.actionButton.child;
return (
<div key={card.title}>
<Card
icon={<Icon name={card.icon} className="h-5 w-5 text-green-700" />}
variant={card.variant}
title={card.title}
description={card.description}
title={title}
description={description}
actionButton={{
href: `${card.actionButton.href}`,
child: `${card.actionButton.child}`,
child: actionButtonChild,
}}
/>
</div>
+11
View File
@@ -104,4 +104,15 @@ export const helpCards: HelpCardInfo[] = [
child: "Schedule a call",
},
},
{
icon: "triangle-alert",
title: "Report issue",
description:
"You can submit a ticket on GitHub or upgrade your plan to receive real-time support with developer conferences",
variant: "basic",
actionButton: {
href: "https://github.com/calcom/cal.com/issues/new?template=platform.md",
child: "Open Issue",
},
},
];
@@ -3085,6 +3085,9 @@
"disable_delegation_credential_description": "Once delegation credential is disabled, organization members who havent connected their calendars will need to do so manually.",
"salesforce_on_cancel_write_to_event": "On cancelled booking, write to event record instead of deleting event",
"salesforce_on_every_cancellation": "On every cancellation",
"report_issue": "Report issue",
"report_issue_description": "You can submit a ticket on GitHub or upgrade your plan to receive real-time support with developer conferences",
"open_issue": "Open Issue",
"this_is_your_current_plan": "This is your current plan",
"per_month": "per month",
"schedule_a_time": "Schedule a time",