2023-01-05 08:50:41 -03:00
|
|
|
import { WEBAPP_URL } from "@calcom/lib/constants";
|
2023-06-28 13:22:51 -03:00
|
|
|
import type { AppCategories } from "@calcom/prisma/enums";
|
|
|
|
import type { LucideIcon } from "@calcom/ui/components/icon";
|
|
|
|
import {
|
|
|
|
Calendar,
|
|
|
|
Video,
|
|
|
|
CreditCard,
|
|
|
|
Share2,
|
|
|
|
BarChart,
|
|
|
|
Grid,
|
|
|
|
Mail,
|
|
|
|
Contact,
|
|
|
|
} from "@calcom/ui/components/icon";
|
2022-12-07 18:47:02 -03:00
|
|
|
|
2022-12-18 07:56:21 -03:00
|
|
|
function getHref(baseURL: string, category: string, useQueryParam: boolean) {
|
2023-01-05 08:50:41 -03:00
|
|
|
const baseUrlParsed = new URL(baseURL, WEBAPP_URL);
|
|
|
|
baseUrlParsed.searchParams.set("category", category);
|
|
|
|
return useQueryParam ? `${baseUrlParsed.toString()}` : `${baseURL}/${category}`;
|
2022-12-18 07:56:21 -03:00
|
|
|
}
|
|
|
|
|
2023-06-28 13:22:51 -03:00
|
|
|
type AppCategoryEntry = {
|
|
|
|
name: AppCategories;
|
|
|
|
href: string;
|
|
|
|
icon: LucideIcon;
|
|
|
|
};
|
|
|
|
|
|
|
|
const getAppCategories = (baseURL: string, useQueryParam: boolean): AppCategoryEntry[] => {
|
|
|
|
// Manually sorted alphabetically, but leaving "Other" at the end
|
|
|
|
// TODO: Refactor and type with Record<AppCategories, AppCategoryEntry> to enforce consistency
|
2022-12-07 18:47:02 -03:00
|
|
|
return [
|
2023-06-28 13:22:51 -03:00
|
|
|
{
|
|
|
|
name: "analytics",
|
|
|
|
href: getHref(baseURL, "analytics", useQueryParam),
|
|
|
|
icon: BarChart,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "automation",
|
|
|
|
href: getHref(baseURL, "automation", useQueryParam),
|
|
|
|
icon: Share2,
|
|
|
|
},
|
2022-12-07 18:47:02 -03:00
|
|
|
{
|
|
|
|
name: "calendar",
|
2022-12-18 07:56:21 -03:00
|
|
|
href: getHref(baseURL, "calendar", useQueryParam),
|
2023-04-12 12:26:31 -03:00
|
|
|
icon: Calendar,
|
2022-12-07 18:47:02 -03:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "conferencing",
|
2022-12-18 07:56:21 -03:00
|
|
|
href: getHref(baseURL, "conferencing", useQueryParam),
|
2023-04-12 12:26:31 -03:00
|
|
|
icon: Video,
|
2022-12-07 18:47:02 -03:00
|
|
|
},
|
|
|
|
{
|
2023-06-28 13:22:51 -03:00
|
|
|
name: "crm",
|
|
|
|
href: getHref(baseURL, "crm", useQueryParam),
|
|
|
|
icon: Contact,
|
2022-12-07 18:47:02 -03:00
|
|
|
},
|
|
|
|
{
|
2023-06-28 13:22:51 -03:00
|
|
|
name: "messaging",
|
|
|
|
href: getHref(baseURL, "messaging", useQueryParam),
|
|
|
|
icon: Mail,
|
2022-12-07 18:47:02 -03:00
|
|
|
},
|
|
|
|
{
|
2023-06-28 13:22:51 -03:00
|
|
|
name: "payment",
|
|
|
|
href: getHref(baseURL, "payment", useQueryParam),
|
|
|
|
icon: CreditCard,
|
2022-12-07 18:47:02 -03:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "other",
|
2022-12-18 07:56:21 -03:00
|
|
|
href: getHref(baseURL, "other", useQueryParam),
|
2023-04-12 12:26:31 -03:00
|
|
|
icon: Grid,
|
2022-12-07 18:47:02 -03:00
|
|
|
},
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
|
|
|
export default getAppCategories;
|