diff --git a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx
index 7317bec27c..667786ac02 100644
--- a/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx
+++ b/apps/web/app/(use-page-wrapper)/settings/(admin-layout)/admin/flags/page.tsx
@@ -1,6 +1,6 @@
import { _generateMetadata, getTranslate } from "app/_utils";
-import { FlagListingView } from "@calcom/features/flags/pages/flag-listing-view";
+import { FlagListingView } from "@calcom/web/modules/feature-flags/views/flag-listing-view";
import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader";
export const generateMetadata = async () =>
diff --git a/apps/web/components/getting-started/components/CreateEventsOnCalendarSelect.tsx b/apps/web/components/getting-started/components/CreateEventsOnCalendarSelect.tsx
index 6b0fb73697..2b551b2dc6 100644
--- a/apps/web/components/getting-started/components/CreateEventsOnCalendarSelect.tsx
+++ b/apps/web/components/getting-started/components/CreateEventsOnCalendarSelect.tsx
@@ -1,4 +1,4 @@
-import DestinationCalendarSelector from "@calcom/features/calendars/DestinationCalendarSelector";
+import DestinationCalendarSelector from "@calcom/features/calendars/components/DestinationCalendarSelector";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import type { RouterInputs } from "@calcom/trpc/react";
import { trpc } from "@calcom/trpc/react";
diff --git a/apps/web/components/getting-started/steps-views/SetupAvailability.tsx b/apps/web/components/getting-started/steps-views/SetupAvailability.tsx
index 55e2bf14ac..413b69a7e4 100644
--- a/apps/web/components/getting-started/steps-views/SetupAvailability.tsx
+++ b/apps/web/components/getting-started/steps-views/SetupAvailability.tsx
@@ -1,6 +1,6 @@
import { useForm } from "react-hook-form";
-import Schedule from "@calcom/features/schedules/components/Schedule";
+import Schedule from "@calcom/web/modules/schedules/components/Schedule";
import { DEFAULT_SCHEDULE } from "@calcom/lib/availability";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { trpc } from "@calcom/trpc/react";
diff --git a/apps/web/lib/app-providers-app-dir.tsx b/apps/web/lib/app-providers-app-dir.tsx
index 239fb54bca..7c116c492d 100644
--- a/apps/web/lib/app-providers-app-dir.tsx
+++ b/apps/web/lib/app-providers-app-dir.tsx
@@ -11,7 +11,7 @@ import DynamicPostHogProvider from "~/ee/posthog/providerDynamic";
import DynamicPostHogPageView from "~/ee/posthog/pageViewDynamic";
import { OrgBrandingProvider } from "@calcom/features/ee/organizations/context/provider";
import { FeatureProvider } from "@calcom/features/flags/context/provider";
-import { useFlags } from "@calcom/features/flags/hooks";
+import { useFlags } from "@calcom/web/modules/feature-flags/hooks/useFlags";
import DynamicHelpscoutProvider from "@calcom/web/modules/ee/support/lib/helpscout/providerDynamic";
import DynamicIntercomProvider from "@calcom/web/modules/ee/support/lib/intercom/providerDynamic";
diff --git a/apps/web/lib/app-providers.tsx b/apps/web/lib/app-providers.tsx
index b80e249625..21d2bc1441 100644
--- a/apps/web/lib/app-providers.tsx
+++ b/apps/web/lib/app-providers.tsx
@@ -21,7 +21,7 @@ import { useEffect } from "react";
import { OrgBrandingProvider } from "@calcom/features/ee/organizations/context/provider";
import { FeatureProvider } from "@calcom/features/flags/context/provider";
-import { useFlags } from "@calcom/features/flags/hooks";
+import { useFlags } from "@calcom/web/modules/feature-flags/hooks/useFlags";
import DynamicHelpscoutProvider from "@calcom/web/modules/ee/support/lib/helpscout/providerDynamic";
import DynamicIntercomProvider from "@calcom/web/modules/ee/support/lib/intercom/providerDynamic";
diff --git a/apps/web/modules/availability/availability-view.tsx b/apps/web/modules/availability/availability-view.tsx
index 5e4ae68742..ce529583ff 100644
--- a/apps/web/modules/availability/availability-view.tsx
+++ b/apps/web/modules/availability/availability-view.tsx
@@ -9,7 +9,7 @@ import posthog from "posthog-js";
import { BulkEditDefaultForEventsModal } from "@calcom/web/modules/event-types/components/BulkEditDefaultForEventsModal";
import type { BulkUpdatParams } from "@calcom/web/modules/event-types/components/BulkEditDefaultForEventsModal";
-import { NewScheduleButton } from "@calcom/features/schedules/components/NewScheduleButton";
+import { NewScheduleButton } from "@calcom/web/modules/schedules/components/NewScheduleButton";
import { ScheduleListItem } from "@calcom/features/schedules/components/ScheduleListItem";
import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams";
import { useLocale } from "@calcom/lib/hooks/useLocale";
diff --git a/apps/web/modules/bookings/components/Booker.test.tsx b/apps/web/modules/bookings/components/Booker.test.tsx
index 751b01b212..956944c31e 100644
--- a/apps/web/modules/bookings/components/Booker.test.tsx
+++ b/apps/web/modules/bookings/components/Booker.test.tsx
@@ -81,7 +81,7 @@ const mockEvent = {
isPending: false,
};
-vi.mock("@calcom/features/calendars/NoAvailabilityDialog", () => ({
+vi.mock("@calcom/features/calendars/components/NoAvailabilityDialog", () => ({
default: () => {
return null;
},
diff --git a/apps/web/modules/bookings/components/DatePicker.test.tsx b/apps/web/modules/bookings/components/DatePicker.test.tsx
index 43c81dfc48..fca02d08e6 100644
--- a/apps/web/modules/bookings/components/DatePicker.test.tsx
+++ b/apps/web/modules/bookings/components/DatePicker.test.tsx
@@ -2,12 +2,12 @@ import React from "react";
import { vi, afterEach } from "vitest";
import dayjs from "@calcom/dayjs";
-import { DatePicker as DatePickerComponent } from "@calcom/features/calendars/DatePicker";
+import { DatePicker as DatePickerComponent } from "@calcom/features/calendars/components/DatePicker";
import { render } from "@calcom/features/bookings/Booker/__tests__/test-utils";
import { DatePicker } from "./DatePicker";
-vi.mock("@calcom/features/calendars/DatePicker", () => {
+vi.mock("@calcom/features/calendars/components/DatePicker", () => {
return {
DatePicker: vi.fn(() =>
),
};
diff --git a/apps/web/modules/bookings/components/DatePicker.tsx b/apps/web/modules/bookings/components/DatePicker.tsx
index d2d4193a93..3b67e75348 100644
--- a/apps/web/modules/bookings/components/DatePicker.tsx
+++ b/apps/web/modules/bookings/components/DatePicker.tsx
@@ -4,7 +4,7 @@ import type { Dayjs } from "@calcom/dayjs";
import dayjs from "@calcom/dayjs";
import { useBookerStoreContext } from "@calcom/features/bookings/Booker/BookerStoreProvider";
import type { DatePickerClassNames } from "@calcom/features/bookings/Booker/types";
-import { DatePicker as DatePickerComponent } from "@calcom/features/calendars/DatePicker";
+import { DatePicker as DatePickerComponent } from "@calcom/features/calendars/components/DatePicker";
import { useNonEmptyScheduleDays } from "@calcom/features/schedules/lib/use-schedule/useNonEmptyScheduleDays";
import { weekdayToWeekIndex } from "@calcom/lib/dayjs";
import { useLocale } from "@calcom/lib/hooks/useLocale";
diff --git a/apps/web/modules/embed/components/Embed.tsx b/apps/web/modules/embed/components/Embed.tsx
index 2dc768cff4..14384e06ae 100644
--- a/apps/web/modules/embed/components/Embed.tsx
+++ b/apps/web/modules/embed/components/Embed.tsx
@@ -22,7 +22,7 @@ import {
useEvent,
useScheduleForEvent,
} from "@calcom/features/bookings/Booker/utils/event";
-import DatePicker from "@calcom/features/calendars/DatePicker";
+import DatePicker from "@calcom/features/calendars/components/DatePicker";
import { Dialog } from "@calcom/features/components/controlled-dialog";
import { TimezoneSelect } from "@calcom/web/modules/timezone/components/TimezoneSelect";
import type { Slot } from "@calcom/features/schedules/lib/use-schedule/types";
diff --git a/apps/web/modules/event-types/components/tabs/advanced/EventAdvancedTab.tsx b/apps/web/modules/event-types/components/tabs/advanced/EventAdvancedTab.tsx
index d8b123412a..4b9f222f20 100644
--- a/apps/web/modules/event-types/components/tabs/advanced/EventAdvancedTab.tsx
+++ b/apps/web/modules/event-types/components/tabs/advanced/EventAdvancedTab.tsx
@@ -13,7 +13,7 @@ import {
} from "@calcom/web/modules/calendars/components/SelectedCalendarsSettingsWebWrapper";
import { Timezone as PlatformTimzoneSelect } from "@calcom/atoms/timezone";
import getLocationsOptionsForSelect from "@calcom/features/bookings/lib/getLocationOptionsForSelect";
-import DestinationCalendarSelector from "@calcom/features/calendars/DestinationCalendarSelector";
+import DestinationCalendarSelector from "@calcom/features/calendars/components/DestinationCalendarSelector";
import { TimezoneSelect as WebTimezoneSelect } from "@calcom/web/modules/timezone/components/TimezoneSelect";
import useLockedFieldsManager from "@calcom/features/ee/managed-event-types/hooks/useLockedFieldsManager";
import {
diff --git a/packages/features/flags/components/AssignFeatureSheet.tsx b/apps/web/modules/feature-flags/components/AssignFeatureSheet.tsx
similarity index 100%
rename from packages/features/flags/components/AssignFeatureSheet.tsx
rename to apps/web/modules/feature-flags/components/AssignFeatureSheet.tsx
diff --git a/packages/features/flags/components/FlagAdminList.tsx b/apps/web/modules/feature-flags/components/FlagAdminList.tsx
similarity index 100%
rename from packages/features/flags/components/FlagAdminList.tsx
rename to apps/web/modules/feature-flags/components/FlagAdminList.tsx
diff --git a/packages/features/flags/hooks/index.ts b/apps/web/modules/feature-flags/hooks/useFlags.ts
similarity index 100%
rename from packages/features/flags/hooks/index.ts
rename to apps/web/modules/feature-flags/hooks/useFlags.ts
diff --git a/packages/features/flags/pages/flag-listing-view.tsx b/apps/web/modules/feature-flags/views/flag-listing-view.tsx
similarity index 100%
rename from packages/features/flags/pages/flag-listing-view.tsx
rename to apps/web/modules/feature-flags/views/flag-listing-view.tsx
diff --git a/apps/web/modules/onboarding/components/InviteOptions.tsx b/apps/web/modules/onboarding/components/InviteOptions.tsx
index 5cbda5b731..3ef587a9af 100644
--- a/apps/web/modules/onboarding/components/InviteOptions.tsx
+++ b/apps/web/modules/onboarding/components/InviteOptions.tsx
@@ -1,6 +1,6 @@
"use client";
-import { useFlags } from "@calcom/features/flags/hooks";
+import { useFlags } from "@calcom/web/modules/feature-flags/hooks/useFlags";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { Button } from "@calcom/ui/components/button";
import { Icon } from "@calcom/ui/components/icon";
diff --git a/apps/web/modules/onboarding/organization/invite/email/organization-invite-email-view.tsx b/apps/web/modules/onboarding/organization/invite/email/organization-invite-email-view.tsx
index 2749d1d4b3..3de06b7f23 100644
--- a/apps/web/modules/onboarding/organization/invite/email/organization-invite-email-view.tsx
+++ b/apps/web/modules/onboarding/organization/invite/email/organization-invite-email-view.tsx
@@ -6,7 +6,7 @@ import React from "react";
import { useForm, useFieldArray } from "react-hook-form";
import { z } from "zod";
-import { useFlags } from "@calcom/features/flags/hooks";
+import { useFlags } from "@calcom/web/modules/feature-flags/hooks/useFlags";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { Button } from "@calcom/ui/components/button";
import { Form } from "@calcom/ui/components/form";
diff --git a/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx b/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx
index 55030ec1e8..61203d157e 100644
--- a/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx
+++ b/apps/web/modules/onboarding/organization/invite/organization-invite-view.tsx
@@ -4,7 +4,7 @@ import { useRouter } from "next/navigation";
import posthog from "posthog-js";
import React from "react";
-import { useFlags } from "@calcom/features/flags/hooks";
+import { useFlags } from "@calcom/web/modules/feature-flags/hooks/useFlags";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { Button } from "@calcom/ui/components/button";
diff --git a/apps/web/modules/onboarding/teams/invite/team-invite-view.tsx b/apps/web/modules/onboarding/teams/invite/team-invite-view.tsx
index 10f3b3e2e7..43200764f8 100644
--- a/apps/web/modules/onboarding/teams/invite/team-invite-view.tsx
+++ b/apps/web/modules/onboarding/teams/invite/team-invite-view.tsx
@@ -4,7 +4,7 @@ import { useRouter, useSearchParams } from "next/navigation";
import posthog from "posthog-js";
import React, { useEffect } from "react";
-import { useFlags } from "@calcom/features/flags/hooks";
+import { useFlags } from "@calcom/web/modules/feature-flags/hooks/useFlags";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { Button } from "@calcom/ui/components/button";
diff --git a/packages/features/schedules/components/NewScheduleButton.tsx b/apps/web/modules/schedules/components/NewScheduleButton.tsx
similarity index 100%
rename from packages/features/schedules/components/NewScheduleButton.tsx
rename to apps/web/modules/schedules/components/NewScheduleButton.tsx
diff --git a/apps/web/modules/schedules/components/Schedule.tsx b/apps/web/modules/schedules/components/Schedule.tsx
new file mode 100644
index 0000000000..e8cae81dfd
--- /dev/null
+++ b/apps/web/modules/schedules/components/Schedule.tsx
@@ -0,0 +1,29 @@
+import React from "react";
+import type { Control, FieldValues } from "react-hook-form";
+
+import {
+ ScheduleComponent,
+ type FieldPathByValue,
+ type ScheduleLabelsType,
+} from "@calcom/features/schedules/components/ScheduleComponent";
+import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery";
+import type { TimeRange } from "@calcom/types/schedule";
+
+const Schedule = <
+ TFieldValues extends FieldValues,
+ TPath extends FieldPathByValue
+>(props: {
+ name: TPath;
+ control: Control;
+ weekStart?: number;
+ disabled?: boolean;
+ labels?: ScheduleLabelsType;
+ userTimeFormat?: number | null;
+}) => {
+ const query = useMeQuery();
+ const { timeFormat } = query.data || { timeFormat: null };
+
+ return ;
+};
+
+export default Schedule;
diff --git a/packages/features/schedules/components/date-override-list.test.tsx b/apps/web/modules/schedules/components/date-override-list.test.tsx
similarity index 100%
rename from packages/features/schedules/components/date-override-list.test.tsx
rename to apps/web/modules/schedules/components/date-override-list.test.tsx
diff --git a/apps/web/modules/timezone-buddy/components/AvailabilityEditSheet.tsx b/apps/web/modules/timezone-buddy/components/AvailabilityEditSheet.tsx
index 1fb4d4ecc9..1abe8144cc 100644
--- a/apps/web/modules/timezone-buddy/components/AvailabilityEditSheet.tsx
+++ b/apps/web/modules/timezone-buddy/components/AvailabilityEditSheet.tsx
@@ -4,7 +4,7 @@ import dayjs from "@calcom/dayjs";
import { TimezoneSelect } from "@calcom/web/modules/timezone/components/TimezoneSelect";
import DateOverrideInputDialog from "@calcom/features/schedules/components/DateOverrideInputDialog";
import DateOverrideList from "@calcom/features/schedules/components/DateOverrideList";
-import Schedule from "@calcom/features/schedules/components/Schedule";
+import Schedule from "@calcom/web/modules/schedules/components/Schedule";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { HttpError } from "@calcom/lib/http-error";
import type { RouterOutputs } from "@calcom/trpc/react";
diff --git a/packages/features/calendars/__tests__/DatePicker.test.tsx b/packages/features/calendars/__tests__/DatePicker.test.tsx
index 0f2f938fa0..aab9d0315b 100644
--- a/packages/features/calendars/__tests__/DatePicker.test.tsx
+++ b/packages/features/calendars/__tests__/DatePicker.test.tsx
@@ -7,7 +7,7 @@ import dayjs from "@calcom/dayjs";
import { BookerStoreProvider } from "@calcom/features/bookings/Booker/BookerStoreProvider";
import { PeriodType } from "@calcom/prisma/enums";
-import { DatePicker } from "../DatePicker";
+import { DatePicker } from "../components/DatePicker";
const noop = () => {
/* noop */
diff --git a/packages/features/calendars/__tests__/NoAvailabilityDialog.test.tsx b/packages/features/calendars/__tests__/NoAvailabilityDialog.test.tsx
index c1f80923f2..6f72099c23 100644
--- a/packages/features/calendars/__tests__/NoAvailabilityDialog.test.tsx
+++ b/packages/features/calendars/__tests__/NoAvailabilityDialog.test.tsx
@@ -4,7 +4,7 @@ import { vi } from "vitest";
import dayjs from "@calcom/dayjs";
import { PeriodType } from "@calcom/prisma/enums";
-import NoAvailabilityDialog from "../NoAvailabilityDialog";
+import NoAvailabilityDialog from "../components/NoAvailabilityDialog";
vi.mock("@calcom/lib/hooks/useLocale", () => ({
useLocale: () => ({
diff --git a/packages/features/calendars/DatePicker.tsx b/packages/features/calendars/components/DatePicker.tsx
similarity index 100%
rename from packages/features/calendars/DatePicker.tsx
rename to packages/features/calendars/components/DatePicker.tsx
diff --git a/packages/features/calendars/DestinationCalendarSelector.tsx b/packages/features/calendars/components/DestinationCalendarSelector.tsx
similarity index 82%
rename from packages/features/calendars/DestinationCalendarSelector.tsx
rename to packages/features/calendars/components/DestinationCalendarSelector.tsx
index c093f81669..59da48591c 100644
--- a/packages/features/calendars/DestinationCalendarSelector.tsx
+++ b/packages/features/calendars/components/DestinationCalendarSelector.tsx
@@ -1,6 +1,7 @@
import type { SelectClassNames } from "@calcom/features/eventtypes/lib/types";
import { useLocale } from "@calcom/lib/hooks/useLocale";
-import type { RouterOutputs } from "@calcom/trpc/react";
+import type { App } from "@calcom/types/App";
+import type { IntegrationCalendar } from "@calcom/types/Calendar";
import { Badge } from "@calcom/ui/components/badge";
import { Select } from "@calcom/ui/components/form";
import { Icon } from "@calcom/ui/components/icon";
@@ -9,6 +10,51 @@ import { useEffect, useState } from "react";
import type { OptionProps, SingleValueProps } from "react-select";
import { components } from "react-select";
+
+type CalendarWithPrimary = Omit & {
+ primary?: boolean | null;
+ isSelected?: boolean;
+ credentialId?: number | null;
+ delegationCredentialId?: string | null;
+};
+
+interface ConnectedCalendar {
+ credentialId: number;
+ integration: App & { title?: string; slug?: string };
+ primary?: CalendarWithPrimary | null;
+ calendars?: CalendarWithPrimary[] | null;
+ cacheUpdatedAt?: Date | string | null;
+ delegationCredentialId?: string | null;
+ error?: {
+ message: string;
+ };
+}
+
+interface DestinationCalendar {
+ integration: string;
+ externalId: string;
+ primaryEmail?: string | null;
+ name?: string | null;
+ integrationTitle?: string | null;
+ credentialId?: number | null;
+ email?: string | null;
+ readOnly?: boolean | null;
+ primary?: boolean | null;
+ id?: string | number | null;
+ userId?: number | null;
+ eventTypeId?: number | null;
+ customCalendarReminder?: number | null;
+ delegationCredentialId?: string | null;
+ domainWideDelegationCredentialId?: string | null;
+ createdAt?: Date | string | null;
+ updatedAt?: Date | string | null;
+}
+
+interface CalendarsQueryData {
+ connectedCalendars: ConnectedCalendar[];
+ destinationCalendar: DestinationCalendar | null;
+}
+
interface Props {
onChange: (value: { externalId: string; integration: string }) => void;
isPending?: boolean;
@@ -17,7 +63,7 @@ interface Props {
value: string | undefined;
maxWidth?: number;
hideAdvancedText?: boolean;
- calendarsQueryData?: RouterOutputs["viewer"]["calendars"]["connectedCalendars"];
+ calendarsQueryData?: CalendarsQueryData;
customClassNames?: SelectClassNames;
}
diff --git a/packages/features/calendars/NoAvailabilityDialog.tsx b/packages/features/calendars/components/NoAvailabilityDialog.tsx
similarity index 100%
rename from packages/features/calendars/NoAvailabilityDialog.tsx
rename to packages/features/calendars/components/NoAvailabilityDialog.tsx
diff --git a/packages/features/schedules/components/DateOverrideInputDialog.tsx b/packages/features/schedules/components/DateOverrideInputDialog.tsx
index 493a8fd0e5..3ae7fb4246 100644
--- a/packages/features/schedules/components/DateOverrideInputDialog.tsx
+++ b/packages/features/schedules/components/DateOverrideInputDialog.tsx
@@ -15,9 +15,9 @@ import { Switch } from "@calcom/ui/components/form";
import { Form } from "@calcom/ui/components/form";
import { showToast } from "@calcom/ui/components/toast";
-import DatePicker from "../../calendars/DatePicker";
-import type { TimeRange } from "./Schedule";
-import { DayRanges } from "./Schedule";
+import DatePicker from "@calcom/features/calendars/components/DatePicker";
+import type { TimeRange } from "./ScheduleComponent";
+import { DayRanges } from "./ScheduleComponent";
const DateOverrideForm = ({
value,
diff --git a/packages/features/schedules/components/DateOverrideList.tsx b/packages/features/schedules/components/DateOverrideList.tsx
index f1c8906500..a212f6157b 100644
--- a/packages/features/schedules/components/DateOverrideList.tsx
+++ b/packages/features/schedules/components/DateOverrideList.tsx
@@ -4,7 +4,6 @@ import { formatInTimeZone } from "date-fns-tz";
import { useIsPlatform } from "@calcom/atoms/hooks/useIsPlatform";
import dayjs from "@calcom/dayjs";
import { useLocale } from "@calcom/lib/hooks/useLocale";
-import type { RouterOutputs } from "@calcom/trpc/react";
import type { TimeRange, WorkingHours } from "@calcom/types/schedule";
import { Button } from "@calcom/ui/components/button";
import { DialogTrigger } from "@calcom/ui/components/dialog";
@@ -16,6 +15,13 @@ const sortByDate = (a: { ranges: TimeRange[]; id: string }, b: { ranges: TimeRan
return a.ranges[0].start > b.ranges[0].start ? 1 : -1;
};
+interface TravelSchedule {
+ id: number;
+ startDate: Date;
+ endDate: Date | null;
+ timeZone: string;
+}
+
// I would like this to be decoupled, but RHF really doesn't support this.
const DateOverrideList = ({
workingHours,
@@ -36,7 +42,7 @@ const DateOverrideList = ({
excludedDates?: string[];
userTimeFormat: number | null;
hour12: boolean;
- travelSchedules?: RouterOutputs["viewer"]["travelSchedules"]["get"];
+ travelSchedules?: TravelSchedule[];
weekStart?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
handleAvailabilityUpdate?: VoidFunction;
isDryRun?: boolean;
diff --git a/packages/features/schedules/components/Schedule.tsx b/packages/features/schedules/components/ScheduleComponent.tsx
similarity index 98%
rename from packages/features/schedules/components/Schedule.tsx
rename to packages/features/schedules/components/ScheduleComponent.tsx
index edef612862..d9e3fbf8f5 100644
--- a/packages/features/schedules/components/Schedule.tsx
+++ b/packages/features/schedules/components/ScheduleComponent.tsx
@@ -187,23 +187,6 @@ const CopyButton = ({
);
};
-const Schedule = <
- TFieldValues extends FieldValues,
- TPath extends FieldPathByValue
->(props: {
- name: TPath;
- control: Control;
- weekStart?: number;
- disabled?: boolean;
- labels?: ScheduleLabelsType;
- userTimeFormat?: number | null;
-}) => {
- const query = useMeQuery();
- const { timeFormat } = query.data || { timeFormat: null };
-
- return ;
-};
-
export const ScheduleComponent = <
TFieldValues extends FieldValues,
TPath extends FieldPathByValue
@@ -820,5 +803,3 @@ const CopyTimes = ({
);
};
-
-export default Schedule;
diff --git a/packages/features/schedules/components/ScheduleListItem.tsx b/packages/features/schedules/components/ScheduleListItem.tsx
index e194260f78..12c73f9eab 100644
--- a/packages/features/schedules/components/ScheduleListItem.tsx
+++ b/packages/features/schedules/components/ScheduleListItem.tsx
@@ -6,7 +6,6 @@ import { Fragment, useState } from "react";
import { availabilityAsString } from "@calcom/lib/availability";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { sortAvailabilityStrings } from "@calcom/lib/weekstart";
-import type { RouterOutputs } from "@calcom/trpc/react";
import { Dialog } from "@calcom/features/components/controlled-dialog";
import { Badge } from "@calcom/ui/components/badge";
import { Button } from "@calcom/ui/components/button";
@@ -21,6 +20,23 @@ import { ConfirmationDialogContent } from "@calcom/ui/components/dialog";
import { Icon } from "@calcom/ui/components/icon";
import { showToast } from "@calcom/ui/components/toast";
+interface Schedule {
+ id: number;
+ name: string;
+ isDefault: boolean;
+ timeZone?: string | null;
+ availability: {
+ id: number;
+ userId: number | null;
+ eventTypeId: number | null;
+ days: number[];
+ startTime: Date;
+ endTime: Date;
+ date: Date | null;
+ scheduleId: number | null;
+ }[];
+}
+
export function ScheduleListItem({
schedule,
deleteFunction,
@@ -30,7 +46,7 @@ export function ScheduleListItem({
duplicateFunction,
redirectUrl,
}: {
- schedule: RouterOutputs["viewer"]["availability"]["list"]["schedules"][number];
+ schedule: Schedule;
deleteFunction: ({ scheduleId }: { scheduleId: number }) => void;
displayOptions?: {
timeZone?: string;
diff --git a/packages/features/schedules/components/parse-time-string.test.ts b/packages/features/schedules/components/parse-time-string.test.ts
index 9b9c86aa4f..61bf1fe9f7 100644
--- a/packages/features/schedules/components/parse-time-string.test.ts
+++ b/packages/features/schedules/components/parse-time-string.test.ts
@@ -1,6 +1,6 @@
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
-import { parseTimeString } from "./Schedule";
+import { parseTimeString } from "./ScheduleComponent";
describe("parseTimeString", () => {
beforeEach(() => {
diff --git a/packages/platform/atoms/availability/AvailabilitySettings.tsx b/packages/platform/atoms/availability/AvailabilitySettings.tsx
index a740fa6a20..7e2ff2c9e0 100644
--- a/packages/platform/atoms/availability/AvailabilitySettings.tsx
+++ b/packages/platform/atoms/availability/AvailabilitySettings.tsx
@@ -24,9 +24,10 @@ import type {
import { BulkEditDefaultForEventsModal } from "@calcom/web/modules/event-types/components/BulkEditDefaultForEventsModal";
import DateOverrideInputDialog from "@calcom/features/schedules/components/DateOverrideInputDialog";
import DateOverrideList from "@calcom/features/schedules/components/DateOverrideList";
-import WebSchedule, {
+import {
ScheduleComponent as PlatformSchedule,
-} from "@calcom/features/schedules/components/Schedule";
+} from "@calcom/features/schedules/components/ScheduleComponent";
+import WebSchedule from "@calcom/web/modules/schedules/components/Schedule";
import { availabilityAsString } from "@calcom/lib/availability";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import { sortAvailabilityStrings } from "@calcom/lib/weekstart";
diff --git a/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx b/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx
index d25928caf5..402f6d9f20 100644
--- a/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx
+++ b/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx
@@ -1,7 +1,7 @@
import type { ReactNode } from "react";
import { forwardRef, useRef } from "react";
-import type { ScheduleLabelsType } from "@calcom/features/schedules/components/Schedule";
+import type { ScheduleLabelsType } from "@calcom/features/schedules/components/ScheduleComponent";
import type { UpdateScheduleResponse } from "@calcom/features/schedules/services/ScheduleService";
import type { ApiErrorResponse, ApiResponse, UpdateScheduleInput_2024_06_11 } from "@calcom/platform-types";
diff --git a/packages/platform/atoms/destination-calendar/DestinationCalendarSelector.tsx b/packages/platform/atoms/destination-calendar/DestinationCalendarSelector.tsx
index 9f7a17c35d..98a8c37714 100644
--- a/packages/platform/atoms/destination-calendar/DestinationCalendarSelector.tsx
+++ b/packages/platform/atoms/destination-calendar/DestinationCalendarSelector.tsx
@@ -1,15 +1,17 @@
"use client";
+import { useState, useEffect, useMemo } from "react";
+
import {
OptionComponent,
SingleValueComponent,
-} from "@calcom/features/calendars/DestinationCalendarSelector";
+} from "@calcom/features/calendars/components/DestinationCalendarSelector";
import type { ConnectedDestinationCalendars } from "@calcom/features/calendars/lib/getConnectedDestinationCalendars";
import { useLocale } from "@calcom/lib/hooks/useLocale";
import classNames from "@calcom/ui/classNames";
import { Badge } from "@calcom/ui/components/badge";
import { Select } from "@calcom/ui/components/form";
-import { useEffect, useMemo, useState } from "react";
+
import { getPlaceholderContent } from "../lib/getPlaceholderContent";
export type DestinationCalendarProps = {