* refactor: move timezone-select, settings, and insights components from packages/features to apps/web/modules Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * fix * fix * fix * wip * wip * wip * wip * wip * wip * wip --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
61 lines
2.4 KiB
TypeScript
61 lines
2.4 KiB
TypeScript
"use client";
|
|
|
|
import type { Timezones } from "@calcom/lib/timezone";
|
|
import { TimezoneSelectComponent } from "@calcom/features/timezone/components/TimezoneSelectComponent";
|
|
import { CALCOM_VERSION } from "@calcom/lib/constants";
|
|
import { trpc } from "@calcom/trpc/react";
|
|
import { useMemo } from "react";
|
|
import type { Props as SelectProps } from "react-timezone-select";
|
|
|
|
const SELECT_SEARCH_DATA: Timezones = [
|
|
{ label: "San Francisco", timezone: "America/Los_Angeles" },
|
|
{ label: "Sao Francisco do Sul", timezone: "America/Sao_Paulo" },
|
|
{ label: "San Francisco de Macoris", timezone: "America/Santo_Domingo" },
|
|
{ label: "San Francisco Gotera", timezone: "America/El_Salvador" },
|
|
{ label: "Eastern Time - US & Canada", timezone: "America/New_York" },
|
|
{ label: "Pacific Time - US & Canada", timezone: "America/Los_Angeles" },
|
|
{ label: "Central Time - US & Canada", timezone: "America/Chicago" },
|
|
{ label: "Mountain Time - US & Canada", timezone: "America/Denver" },
|
|
{ label: "Atlantic Time - Canada", timezone: "America/Halifax" },
|
|
{ label: "Eastern European Time", timezone: "Europe/Bucharest" },
|
|
{ label: "Central European Time", timezone: "Europe/Berlin" },
|
|
{ label: "Western European Time", timezone: "Europe/London" },
|
|
{ label: "Australian Eastern Time", timezone: "Australia/Sydney" },
|
|
{ label: "Japan Standard Time", timezone: "Asia/Tokyo" },
|
|
{ label: "India Standard Time", timezone: "Asia/Kolkata" },
|
|
{ label: "Gulf Standard Time", timezone: "Asia/Dubai" },
|
|
{ label: "South Africa Standard Time", timezone: "Africa/Johannesburg" },
|
|
{ label: "Brazil Time", timezone: "America/Sao_Paulo" },
|
|
{ label: "Hawaii-Aleutian Standard Time", timezone: "Pacific/Honolulu" },
|
|
];
|
|
|
|
export type TimezoneSelectProps = SelectProps & {
|
|
variant?: "default" | "minimal";
|
|
timezoneSelectCustomClassname?: string;
|
|
size?: "sm" | "md";
|
|
grow?: boolean;
|
|
};
|
|
|
|
export function TimezoneSelect(props: TimezoneSelectProps) {
|
|
const { data = [], isPending } = trpc.viewer.timezones.cityTimezones.useQuery(
|
|
{
|
|
CalComVersion: CALCOM_VERSION,
|
|
},
|
|
{
|
|
trpc: { context: { skipBatch: true } },
|
|
}
|
|
);
|
|
|
|
const cityTimezonesFormatted = useMemo(
|
|
() => data.map(({ city, timezone }) => ({ label: city, timezone })),
|
|
[data]
|
|
);
|
|
|
|
const combinedData = useMemo(
|
|
() => [...cityTimezonesFormatted, ...SELECT_SEARCH_DATA],
|
|
[cityTimezonesFormatted]
|
|
);
|
|
|
|
return <TimezoneSelectComponent data={combinedData} isPending={isPending} {...props} />;
|
|
}
|