From e64fad8e349173b1f395ea3463384074ca45e1a5 Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Sat, 7 Feb 2026 21:05:09 +0900 Subject: [PATCH] refactor: remove 6 @calcom/trpc imports from packages/features (#27727) * migrate booker layout selector * move schedule hooks and types * migrate feature opt in components * migrate feedback dialog * update * migrate schedule hooks * migrate useSegments * update * update import paths * fix import paths * mv useTimesForSchedule back to features * fix --- .../components/AvailableTimeSlots.tsx | 6 ++--- .../bookings/components/AvailableTimes.tsx | 2 +- .../modules/bookings/components/Booker.tsx | 2 +- .../bookings/components/DatePicker.tsx | 2 +- .../modules/bookings/views/bookings-view.tsx | 4 +-- .../modules}/data-table/hooks/useSegments.ts | 6 ++--- .../ee/organizations/features-view.tsx | 2 +- apps/web/modules/ee/organizations/privacy.tsx | 2 +- .../components/VoiceSelectionDialog.tsx | 2 +- apps/web/modules/embed/components/Embed.tsx | 6 ++--- .../components/AddMembersWithSwitch.tsx | 2 +- .../event-types/components}/Segment.test.tsx | 2 +- .../event-types/components}/Segment.tsx | 0 .../__tests__/AddMembersWithSwitch.test.tsx | 2 +- .../tabs/advanced/EventAdvancedTab.tsx | 2 +- .../components/FeatureOptInBanner.tsx | 0 .../components/FeatureOptInBannerWrapper.tsx | 2 +- .../components/FeatureOptInConfirmDialog.tsx | 0 .../components/FeatureOptInSuccessDialog.tsx | 0 .../components/FeaturesSettings.tsx | 4 +-- .../components/FeedbackDialog.tsx | 2 +- .../views/insights-call-history-view.tsx | 2 +- .../insights/views/insights-routing-view.tsx | 2 +- .../modules/insights/views/insights-view.tsx | 2 +- .../hooks}/useApiV2AvailableSlots.ts | 0 .../hooks}/useNonEmptyScheduleDays.ts | 4 +-- .../modules/schedules/hooks}/useSchedule.ts | 2 +- .../schedules/hooks}/useSlotsForDate.ts | 2 +- .../web/modules/schedules/lib}/types.ts | 0 .../billing/components/InvoicesTable.tsx | 2 +- .../components}/BookerLayoutSelector.tsx | 2 +- .../settings/my-account/appearance-view.tsx | 2 +- .../settings/my-account/features-view.tsx | 2 +- .../outOfOffice/OutOfOfficeEntriesList.tsx | 2 +- .../settings/teams/[id]/features-view.tsx | 2 +- .../components/LargeCalendar.tsx | 2 +- .../UserTable/PlatformManagedUsersTable.tsx | 2 +- .../components/UserTable/UserListTable.tsx | 2 +- .../features/bookings/Booker/utils/event.ts | 2 +- .../useTimesForSchedule.timezone.test.ts | 0 .../useTimesForSchedule.ts | 25 ++++++++++++++++++- .../atoms/booker/BookerPlatformWrapper.tsx | 2 +- .../EventTypeCalendarViewComponent.tsx | 2 +- 43 files changed, 68 insertions(+), 45 deletions(-) rename {packages/features => apps/web/modules}/data-table/hooks/useSegments.ts (87%) rename {packages/features => apps/web/modules/event-types/components}/Segment.test.tsx (99%) rename {packages/features => apps/web/modules/event-types/components}/Segment.tsx (100%) rename {packages/features => apps/web/modules}/feature-opt-in/components/FeatureOptInBanner.tsx (100%) rename {packages/features => apps/web/modules}/feature-opt-in/components/FeatureOptInBannerWrapper.tsx (97%) rename {packages/features => apps/web/modules}/feature-opt-in/components/FeatureOptInConfirmDialog.tsx (100%) rename {packages/features => apps/web/modules}/feature-opt-in/components/FeatureOptInSuccessDialog.tsx (100%) rename {packages/features => apps/web/modules}/feature-opt-in/components/FeaturesSettings.tsx (97%) rename {packages/features/feedback => apps/web/modules/feature-opt-in}/components/FeedbackDialog.tsx (98%) rename {packages/features/schedules/lib/use-schedule => apps/web/modules/schedules/hooks}/useApiV2AvailableSlots.ts (100%) rename {packages/features/schedules/lib/use-schedule => apps/web/modules/schedules/hooks}/useNonEmptyScheduleDays.ts (81%) rename {packages/features/schedules/lib/use-schedule => apps/web/modules/schedules/hooks}/useSchedule.ts (99%) rename {packages/features/schedules/lib/use-schedule => apps/web/modules/schedules/hooks}/useSlotsForDate.ts (96%) rename {packages/features/schedules/lib/use-schedule => apps/web/modules/schedules/lib}/types.ts (100%) rename {packages/features/settings => apps/web/modules/settings/components}/BookerLayoutSelector.tsx (99%) rename packages/features/schedules/{lib/use-schedule => hooks}/useTimesForSchedule.timezone.test.ts (100%) rename packages/features/schedules/{lib/use-schedule => hooks}/useTimesForSchedule.ts (84%) diff --git a/apps/web/modules/bookings/components/AvailableTimeSlots.tsx b/apps/web/modules/bookings/components/AvailableTimeSlots.tsx index dec0b6c91d..73724d7cc9 100644 --- a/apps/web/modules/bookings/components/AvailableTimeSlots.tsx +++ b/apps/web/modules/bookings/components/AvailableTimeSlots.tsx @@ -8,9 +8,9 @@ import { import { useBookerStoreContext } from "@calcom/features/bookings/Booker/BookerStoreProvider"; import type { IUseBookingLoadingStates } from "../hooks/useBookings"; import type { BookerEvent } from "@calcom/features/bookings/types"; -import type { Slot } from "@calcom/features/schedules/lib/use-schedule/types"; -import { useNonEmptyScheduleDays } from "@calcom/features/schedules/lib/use-schedule/useNonEmptyScheduleDays"; -import { useSlotsForAvailableDates } from "@calcom/features/schedules/lib/use-schedule/useSlotsForDate"; +import type { Slot } from "~/schedules/lib/types"; +import { useNonEmptyScheduleDays } from "@calcom/web/modules/schedules/hooks/useNonEmptyScheduleDays"; +import { useSlotsForAvailableDates } from "@calcom/web/modules/schedules/hooks/useSlotsForDate"; import { PUBLIC_INVALIDATE_AVAILABLE_SLOTS_ON_BOOKING_FORM } from "@calcom/lib/constants"; import { localStorage } from "@calcom/lib/webstorage"; import { BookerLayouts } from "@calcom/prisma/zod-utils"; diff --git a/apps/web/modules/bookings/components/AvailableTimes.tsx b/apps/web/modules/bookings/components/AvailableTimes.tsx index 87f5745385..2d606daf5b 100644 --- a/apps/web/modules/bookings/components/AvailableTimes.tsx +++ b/apps/web/modules/bookings/components/AvailableTimes.tsx @@ -11,7 +11,7 @@ import { useBookerStoreContext } from "@calcom/features/bookings/Booker/BookerSt import { OutOfOfficeInSlots } from "./OutOfOfficeInSlots"; import type { IUseBookingLoadingStates } from "../hooks/useBookings"; import type { BookerEvent } from "@calcom/features/bookings/types"; -import type { Slot } from "@calcom/features/schedules/lib/use-schedule/types"; +import type { Slot } from "~/schedules/lib/types"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { localStorage } from "@calcom/lib/webstorage"; import classNames from "@calcom/ui/classNames"; diff --git a/apps/web/modules/bookings/components/Booker.tsx b/apps/web/modules/bookings/components/Booker.tsx index fa16517c32..8b001763e1 100644 --- a/apps/web/modules/bookings/components/Booker.tsx +++ b/apps/web/modules/bookings/components/Booker.tsx @@ -20,7 +20,7 @@ import { isBookingDryRun } from "@calcom/features/bookings/Booker/utils/isBookin import { isTimeSlotAvailable } from "@calcom/features/bookings/Booker/utils/isTimeslotAvailable"; import { getQueryParam } from "@calcom/features/bookings/Booker/utils/query-param"; import { Dialog } from "@calcom/features/components/controlled-dialog"; -import { useNonEmptyScheduleDays } from "@calcom/features/schedules/lib/use-schedule/useNonEmptyScheduleDays"; +import { useNonEmptyScheduleDays } from "@calcom/web/modules/schedules/hooks/useNonEmptyScheduleDays"; import { scrollIntoViewSmooth } from "@calcom/lib/browser/browser.utils"; import { CLOUDFLARE_SITE_ID, diff --git a/apps/web/modules/bookings/components/DatePicker.tsx b/apps/web/modules/bookings/components/DatePicker.tsx index 8d49835b51..928b06a473 100644 --- a/apps/web/modules/bookings/components/DatePicker.tsx +++ b/apps/web/modules/bookings/components/DatePicker.tsx @@ -5,7 +5,7 @@ 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/components/DatePicker"; -import { useNonEmptyScheduleDays } from "@calcom/features/schedules/lib/use-schedule/useNonEmptyScheduleDays"; +import { useNonEmptyScheduleDays } from "@calcom/web/modules/schedules/hooks/useNonEmptyScheduleDays"; import { weekdayToWeekIndex } from "@calcom/lib/dayjs"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { User } from "@calcom/prisma/client"; diff --git a/apps/web/modules/bookings/views/bookings-view.tsx b/apps/web/modules/bookings/views/bookings-view.tsx index 180d620259..4c7546f1f4 100644 --- a/apps/web/modules/bookings/views/bookings-view.tsx +++ b/apps/web/modules/bookings/views/bookings-view.tsx @@ -1,8 +1,8 @@ "use client"; import { ColumnFilterType, DataTableProvider, type SystemFilterSegment } from "@calcom/features/data-table"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; -import FeatureOptInBannerWrapper from "@calcom/features/feature-opt-in/components/FeatureOptInBannerWrapper"; +import { useSegments } from "~/data-table/hooks/useSegments"; +import FeatureOptInBannerWrapper from "~/feature-opt-in/components/FeatureOptInBannerWrapper"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import classNames from "@calcom/ui/classNames"; import dynamic from "next/dynamic"; diff --git a/packages/features/data-table/hooks/useSegments.ts b/apps/web/modules/data-table/hooks/useSegments.ts similarity index 87% rename from packages/features/data-table/hooks/useSegments.ts rename to apps/web/modules/data-table/hooks/useSegments.ts index ae67293f7c..be31342408 100644 --- a/packages/features/data-table/hooks/useSegments.ts +++ b/apps/web/modules/data-table/hooks/useSegments.ts @@ -2,9 +2,9 @@ import { useMemo } from "react"; import { trpc } from "@calcom/trpc/react"; -import { recalculateDateRange } from "../lib/dateRange"; -import { type UseSegments, SYSTEM_SEGMENT_PREFIX } from "../lib/types"; -import { isDateRangeFilterValue } from "../lib/utils"; +import { recalculateDateRange } from "@calcom/features/data-table/lib/dateRange"; +import { type UseSegments, SYSTEM_SEGMENT_PREFIX } from "@calcom/features/data-table/lib/types"; +import { isDateRangeFilterValue } from "@calcom/features/data-table/lib/utils"; export const useSegments: UseSegments = ({ tableIdentifier, providedSegments, systemSegments }) => { const { data: rawSegments, isSuccess } = trpc.viewer.filterSegments.list.useQuery( diff --git a/apps/web/modules/ee/organizations/features-view.tsx b/apps/web/modules/ee/organizations/features-view.tsx index aa12f18722..70dcda8dc8 100644 --- a/apps/web/modules/ee/organizations/features-view.tsx +++ b/apps/web/modules/ee/organizations/features-view.tsx @@ -1,6 +1,6 @@ "use client"; -import { FeaturesSettings } from "@calcom/features/feature-opt-in/components/FeaturesSettings"; +import { FeaturesSettings } from "~/feature-opt-in/components/FeaturesSettings"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { ReactElement } from "react"; diff --git a/apps/web/modules/ee/organizations/privacy.tsx b/apps/web/modules/ee/organizations/privacy.tsx index 4c992581ea..00700b1efd 100644 --- a/apps/web/modules/ee/organizations/privacy.tsx +++ b/apps/web/modules/ee/organizations/privacy.tsx @@ -3,7 +3,7 @@ import { usePathname } from "next/navigation"; import { DataTableProvider } from "@calcom/features/data-table"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import LicenseRequired from "~/ee/common/components/LicenseRequired"; import OrgAutoJoinSetting from "~/ee/organizations/components/OrgAutoJoinSetting"; import { useLocale } from "@calcom/lib/hooks/useLocale"; diff --git a/apps/web/modules/ee/workflows/components/VoiceSelectionDialog.tsx b/apps/web/modules/ee/workflows/components/VoiceSelectionDialog.tsx index 7a372357bc..5b80329497 100644 --- a/apps/web/modules/ee/workflows/components/VoiceSelectionDialog.tsx +++ b/apps/web/modules/ee/workflows/components/VoiceSelectionDialog.tsx @@ -4,7 +4,7 @@ import { useMemo, useState, useCallback } from "react"; import { DataTableProvider } from "@calcom/features/data-table"; import { DataTableWrapper } from "~/data-table/components"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import { useVoicePreview } from "@calcom/features/ee/workflows/hooks/useVoicePreview"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; diff --git a/apps/web/modules/embed/components/Embed.tsx b/apps/web/modules/embed/components/Embed.tsx index bd79788fd4..982d27a904 100644 --- a/apps/web/modules/embed/components/Embed.tsx +++ b/apps/web/modules/embed/components/Embed.tsx @@ -25,9 +25,9 @@ import { 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"; -import { useNonEmptyScheduleDays } from "@calcom/features/schedules/lib/use-schedule/useNonEmptyScheduleDays"; -import { useSlotsForDate } from "@calcom/features/schedules/lib/use-schedule/useSlotsForDate"; +import type { Slot } from "~/schedules/lib/types"; +import { useNonEmptyScheduleDays } from "@calcom/web/modules/schedules/hooks/useNonEmptyScheduleDays"; +import { useSlotsForDate } from "@calcom/web/modules/schedules/hooks/useSlotsForDate"; import { APP_NAME, DEFAULT_LIGHT_BRAND_COLOR, diff --git a/apps/web/modules/event-types/components/AddMembersWithSwitch.tsx b/apps/web/modules/event-types/components/AddMembersWithSwitch.tsx index 68b82fe87e..c0938e7a28 100644 --- a/apps/web/modules/event-types/components/AddMembersWithSwitch.tsx +++ b/apps/web/modules/event-types/components/AddMembersWithSwitch.tsx @@ -6,7 +6,7 @@ import type { SettingsToggleClassNames, TeamMember, } from "@calcom/features/eventtypes/lib/types"; -import { Segment } from "@calcom/features/Segment"; +import { Segment } from "./Segment"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { AttributesQueryValue } from "@calcom/lib/raqb/types"; import { Label, SettingsToggle } from "@calcom/ui/components/form"; diff --git a/packages/features/Segment.test.tsx b/apps/web/modules/event-types/components/Segment.test.tsx similarity index 99% rename from packages/features/Segment.test.tsx rename to apps/web/modules/event-types/components/Segment.test.tsx index 85fae73b6d..81e1d0df33 100644 --- a/packages/features/Segment.test.tsx +++ b/apps/web/modules/event-types/components/Segment.test.tsx @@ -3,7 +3,7 @@ import React from "react"; import { describe, expect, it, vi, beforeEach } from "vitest"; import type { Mock } from "vitest"; -import { Segment } from "@calcom/features/Segment"; +import { Segment } from "./Segment"; import type { AttributesQueryValue } from "@calcom/lib/raqb/types"; import { AttributeType } from "@calcom/prisma/enums"; import { trpc, type RouterOutputs } from "@calcom/trpc/react"; diff --git a/packages/features/Segment.tsx b/apps/web/modules/event-types/components/Segment.tsx similarity index 100% rename from packages/features/Segment.tsx rename to apps/web/modules/event-types/components/Segment.tsx diff --git a/apps/web/modules/event-types/components/__tests__/AddMembersWithSwitch.test.tsx b/apps/web/modules/event-types/components/__tests__/AddMembersWithSwitch.test.tsx index a7e7a4ba07..1e72b81705 100644 --- a/apps/web/modules/event-types/components/__tests__/AddMembersWithSwitch.test.tsx +++ b/apps/web/modules/event-types/components/__tests__/AddMembersWithSwitch.test.tsx @@ -14,7 +14,7 @@ vi.mock("@formkit/auto-animate/react", () => ({ })); // Mock Segment component -vi.mock("@calcom/features/Segment", () => ({ +vi.mock("@calcom/web/modules/event-types/components/Segment", () => ({ Segment: vi.fn().mockImplementation(({ onQueryValueChange }) => (
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 c8359e6007..bc03d6e71d 100644 --- a/apps/web/modules/event-types/components/tabs/advanced/EventAdvancedTab.tsx +++ b/apps/web/modules/event-types/components/tabs/advanced/EventAdvancedTab.tsx @@ -34,7 +34,7 @@ import type { SettingsToggleClassNames, } from "@calcom/features/eventtypes/lib/types"; import { FormBuilder } from "./FormBuilder"; -import { BookerLayoutSelector } from "@calcom/features/settings/BookerLayoutSelector"; +import { BookerLayoutSelector } from "~/settings/components/BookerLayoutSelector"; import { DEFAULT_LIGHT_BRAND_COLOR, DEFAULT_DARK_BRAND_COLOR, diff --git a/packages/features/feature-opt-in/components/FeatureOptInBanner.tsx b/apps/web/modules/feature-opt-in/components/FeatureOptInBanner.tsx similarity index 100% rename from packages/features/feature-opt-in/components/FeatureOptInBanner.tsx rename to apps/web/modules/feature-opt-in/components/FeatureOptInBanner.tsx diff --git a/packages/features/feature-opt-in/components/FeatureOptInBannerWrapper.tsx b/apps/web/modules/feature-opt-in/components/FeatureOptInBannerWrapper.tsx similarity index 97% rename from packages/features/feature-opt-in/components/FeatureOptInBannerWrapper.tsx rename to apps/web/modules/feature-opt-in/components/FeatureOptInBannerWrapper.tsx index 9dc20582cc..9f55dd3baf 100644 --- a/packages/features/feature-opt-in/components/FeatureOptInBannerWrapper.tsx +++ b/apps/web/modules/feature-opt-in/components/FeatureOptInBannerWrapper.tsx @@ -1,7 +1,7 @@ "use client"; import type { OptInFeatureConfig } from "@calcom/features/feature-opt-in/config"; -import { FeedbackDialog } from "@calcom/features/feedback/components/FeedbackDialog"; +import { FeedbackDialog } from "./FeedbackDialog"; import type { ReactElement } from "react"; import { createPortal } from "react-dom"; import { FeatureOptInBanner } from "./FeatureOptInBanner"; diff --git a/packages/features/feature-opt-in/components/FeatureOptInConfirmDialog.tsx b/apps/web/modules/feature-opt-in/components/FeatureOptInConfirmDialog.tsx similarity index 100% rename from packages/features/feature-opt-in/components/FeatureOptInConfirmDialog.tsx rename to apps/web/modules/feature-opt-in/components/FeatureOptInConfirmDialog.tsx diff --git a/packages/features/feature-opt-in/components/FeatureOptInSuccessDialog.tsx b/apps/web/modules/feature-opt-in/components/FeatureOptInSuccessDialog.tsx similarity index 100% rename from packages/features/feature-opt-in/components/FeatureOptInSuccessDialog.tsx rename to apps/web/modules/feature-opt-in/components/FeatureOptInSuccessDialog.tsx diff --git a/packages/features/feature-opt-in/components/FeaturesSettings.tsx b/apps/web/modules/feature-opt-in/components/FeaturesSettings.tsx similarity index 97% rename from packages/features/feature-opt-in/components/FeaturesSettings.tsx rename to apps/web/modules/feature-opt-in/components/FeaturesSettings.tsx index 3e5e4eb983..466e7b0d69 100644 --- a/packages/features/feature-opt-in/components/FeaturesSettings.tsx +++ b/apps/web/modules/feature-opt-in/components/FeaturesSettings.tsx @@ -11,8 +11,8 @@ import { Tooltip } from "@calcom/ui/components/tooltip"; import type { ReactElement } from "react"; import { useMemo } from "react"; -import { getOptInFeatureConfig } from "../config"; -import type { NormalizedFeature, UseFeatureOptInResult } from "../types"; +import { getOptInFeatureConfig } from "@calcom/features/feature-opt-in/config"; +import type { NormalizedFeature, UseFeatureOptInResult } from "@calcom/features/feature-opt-in/types"; interface FeaturesSettingsProps { /** The hook result - can be from useUserFeatureOptIn, useTeamFeatureOptIn, or useOrganizationFeatureOptIn */ diff --git a/packages/features/feedback/components/FeedbackDialog.tsx b/apps/web/modules/feature-opt-in/components/FeedbackDialog.tsx similarity index 98% rename from packages/features/feedback/components/FeedbackDialog.tsx rename to apps/web/modules/feature-opt-in/components/FeedbackDialog.tsx index 21b31c9d76..5e088c2694 100644 --- a/packages/features/feedback/components/FeedbackDialog.tsx +++ b/apps/web/modules/feature-opt-in/components/FeedbackDialog.tsx @@ -9,7 +9,7 @@ import { cn } from "@coss/ui/lib/utils"; import { XIcon } from "lucide-react"; import type { ReactElement } from "react"; import { useState } from "react"; -import { RATING_OPTIONS } from "../../bookings/lib/rating"; +import { RATING_OPTIONS } from "@calcom/features/bookings/lib/rating"; export interface FeedbackDialogProps { isOpen: boolean; diff --git a/apps/web/modules/insights/views/insights-call-history-view.tsx b/apps/web/modules/insights/views/insights-call-history-view.tsx index dcdb42f617..eb306d637c 100644 --- a/apps/web/modules/insights/views/insights-call-history-view.tsx +++ b/apps/web/modules/insights/views/insights-call-history-view.tsx @@ -20,7 +20,7 @@ import { DataTableToolbar, DataTableFilters, } from "~/data-table/components"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider"; import type { CallDetailsState, diff --git a/apps/web/modules/insights/views/insights-routing-view.tsx b/apps/web/modules/insights/views/insights-routing-view.tsx index d5bc54df79..ac9b1aebf2 100644 --- a/apps/web/modules/insights/views/insights-routing-view.tsx +++ b/apps/web/modules/insights/views/insights-routing-view.tsx @@ -3,7 +3,7 @@ import { usePathname } from "next/navigation"; import { DataTableProvider } from "@calcom/features/data-table/DataTableProvider"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import { RoutingFormResponsesTable, FailedBookingsByField, diff --git a/apps/web/modules/insights/views/insights-view.tsx b/apps/web/modules/insights/views/insights-view.tsx index fbc99f8338..7b01419f04 100644 --- a/apps/web/modules/insights/views/insights-view.tsx +++ b/apps/web/modules/insights/views/insights-view.tsx @@ -11,7 +11,7 @@ import { import { DataTableFilters, DateRangeFilter } from "~/data-table/components"; import type { FilterType } from "@calcom/types/data-table"; import { useDataTable } from "@calcom/features/data-table/hooks/useDataTable"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import { AverageEventDurationChart, BookingKPICards, diff --git a/packages/features/schedules/lib/use-schedule/useApiV2AvailableSlots.ts b/apps/web/modules/schedules/hooks/useApiV2AvailableSlots.ts similarity index 100% rename from packages/features/schedules/lib/use-schedule/useApiV2AvailableSlots.ts rename to apps/web/modules/schedules/hooks/useApiV2AvailableSlots.ts diff --git a/packages/features/schedules/lib/use-schedule/useNonEmptyScheduleDays.ts b/apps/web/modules/schedules/hooks/useNonEmptyScheduleDays.ts similarity index 81% rename from packages/features/schedules/lib/use-schedule/useNonEmptyScheduleDays.ts rename to apps/web/modules/schedules/hooks/useNonEmptyScheduleDays.ts index 883dab758a..7771e665bc 100644 --- a/packages/features/schedules/lib/use-schedule/useNonEmptyScheduleDays.ts +++ b/apps/web/modules/schedules/hooks/useNonEmptyScheduleDays.ts @@ -1,8 +1,8 @@ import { useMemo } from "react"; -import type { Slots } from "../use-schedule/types"; +import type { Slots } from "../lib/types"; -export const getNonEmptyScheduleDays = (slots?: Slots) => { +const getNonEmptyScheduleDays = (slots?: Slots) => { if (typeof slots === "undefined") return []; const nonEmptyDays: string[] = []; diff --git a/packages/features/schedules/lib/use-schedule/useSchedule.ts b/apps/web/modules/schedules/hooks/useSchedule.ts similarity index 99% rename from packages/features/schedules/lib/use-schedule/useSchedule.ts rename to apps/web/modules/schedules/hooks/useSchedule.ts index ef1958838d..e89a58471b 100644 --- a/packages/features/schedules/lib/use-schedule/useSchedule.ts +++ b/apps/web/modules/schedules/hooks/useSchedule.ts @@ -5,7 +5,7 @@ import { sdkActionManager } from "@calcom/embed-core/src/sdk-event"; import { useBookerStore } from "@calcom/features/bookings/Booker/store"; import { isBookingDryRun } from "@calcom/features/bookings/Booker/utils/isBookingDryRun"; import { getUsernameList } from "@calcom/features/eventtypes/lib/defaultEvents"; -import { useTimesForSchedule } from "@calcom/features/schedules/lib/use-schedule/useTimesForSchedule"; +import { useTimesForSchedule } from "@calcom/features/schedules/hooks/useTimesForSchedule"; import { getRoutedTeamMemberIdsFromSearchParams } from "@calcom/lib/bookings/getRoutedTeamMemberIdsFromSearchParams"; import { PUBLIC_QUERY_AVAILABLE_SLOTS_INTERVAL_SECONDS } from "@calcom/lib/constants"; import { trpc } from "@calcom/trpc/react"; diff --git a/packages/features/schedules/lib/use-schedule/useSlotsForDate.ts b/apps/web/modules/schedules/hooks/useSlotsForDate.ts similarity index 96% rename from packages/features/schedules/lib/use-schedule/useSlotsForDate.ts rename to apps/web/modules/schedules/hooks/useSlotsForDate.ts index ff22adb3cd..2a905b5e16 100644 --- a/packages/features/schedules/lib/use-schedule/useSlotsForDate.ts +++ b/apps/web/modules/schedules/hooks/useSlotsForDate.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from "react"; -import type { Slots, Slot } from "./types"; +import type { Slots, Slot } from "../lib/types"; /** * Gets slots for a specific date from the schedule cache. diff --git a/packages/features/schedules/lib/use-schedule/types.ts b/apps/web/modules/schedules/lib/types.ts similarity index 100% rename from packages/features/schedules/lib/use-schedule/types.ts rename to apps/web/modules/schedules/lib/types.ts diff --git a/apps/web/modules/settings/billing/components/InvoicesTable.tsx b/apps/web/modules/settings/billing/components/InvoicesTable.tsx index f6500a49d3..b061ca4438 100644 --- a/apps/web/modules/settings/billing/components/InvoicesTable.tsx +++ b/apps/web/modules/settings/billing/components/InvoicesTable.tsx @@ -13,7 +13,7 @@ import { ZDateRangeFilterValue, type FilterableColumn, } from "@calcom/features/data-table"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import type { FilterType } from "@calcom/types/data-table"; diff --git a/packages/features/settings/BookerLayoutSelector.tsx b/apps/web/modules/settings/components/BookerLayoutSelector.tsx similarity index 99% rename from packages/features/settings/BookerLayoutSelector.tsx rename to apps/web/modules/settings/components/BookerLayoutSelector.tsx index ed491a806b..b3220e7c5a 100644 --- a/packages/features/settings/BookerLayoutSelector.tsx +++ b/apps/web/modules/settings/components/BookerLayoutSelector.tsx @@ -13,7 +13,7 @@ import { Button } from "@calcom/ui/components/button"; import { Label } from "@calcom/ui/components/form"; import { CheckboxField } from "@calcom/ui/components/form"; -import SectionBottomActions from "./SectionBottomActions"; +import SectionBottomActions from "@calcom/features/settings/SectionBottomActions"; type BookerLayoutSelectorProps = { title?: string; diff --git a/apps/web/modules/settings/my-account/appearance-view.tsx b/apps/web/modules/settings/my-account/appearance-view.tsx index 2fe7831078..dcd1748bfe 100644 --- a/apps/web/modules/settings/my-account/appearance-view.tsx +++ b/apps/web/modules/settings/my-account/appearance-view.tsx @@ -7,7 +7,7 @@ import { useState } from "react"; import { Controller, useForm } from "react-hook-form"; import type { z } from "zod"; -import { BookerLayoutSelector } from "@calcom/features/settings/BookerLayoutSelector"; +import { BookerLayoutSelector } from "~/settings/components/BookerLayoutSelector"; import SectionBottomActions from "@calcom/features/settings/SectionBottomActions"; import ThemeLabel from "@calcom/features/settings/ThemeLabel"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; diff --git a/apps/web/modules/settings/my-account/features-view.tsx b/apps/web/modules/settings/my-account/features-view.tsx index 117a86f32a..4ec6c92cc8 100644 --- a/apps/web/modules/settings/my-account/features-view.tsx +++ b/apps/web/modules/settings/my-account/features-view.tsx @@ -1,6 +1,6 @@ "use client"; -import { FeaturesSettings } from "@calcom/features/feature-opt-in/components/FeaturesSettings"; +import { FeaturesSettings } from "~/feature-opt-in/components/FeaturesSettings"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { ReactElement } from "react"; diff --git a/apps/web/modules/settings/outOfOffice/OutOfOfficeEntriesList.tsx b/apps/web/modules/settings/outOfOffice/OutOfOfficeEntriesList.tsx index 5a7d5af71a..c7e5f052b7 100644 --- a/apps/web/modules/settings/outOfOffice/OutOfOfficeEntriesList.tsx +++ b/apps/web/modules/settings/outOfOffice/OutOfOfficeEntriesList.tsx @@ -19,7 +19,7 @@ import { ZDateRangeFilterValue, } from "@calcom/features/data-table"; import { DataTableWrapper, DataTableToolbar, DataTableFilters, DataTableSegment } from "~/data-table/components"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import ServerTrans from "@calcom/lib/components/ServerTrans"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; diff --git a/apps/web/modules/settings/teams/[id]/features-view.tsx b/apps/web/modules/settings/teams/[id]/features-view.tsx index c8fb5df99e..4e76473203 100644 --- a/apps/web/modules/settings/teams/[id]/features-view.tsx +++ b/apps/web/modules/settings/teams/[id]/features-view.tsx @@ -1,6 +1,6 @@ "use client"; -import { FeaturesSettings } from "@calcom/features/feature-opt-in/components/FeaturesSettings"; +import { FeaturesSettings } from "~/feature-opt-in/components/FeaturesSettings"; import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { ReactElement } from "react"; diff --git a/apps/web/modules/troubleshooter/components/LargeCalendar.tsx b/apps/web/modules/troubleshooter/components/LargeCalendar.tsx index 8e2253f701..b5e96f17e4 100644 --- a/apps/web/modules/troubleshooter/components/LargeCalendar.tsx +++ b/apps/web/modules/troubleshooter/components/LargeCalendar.tsx @@ -1,7 +1,7 @@ import dayjs from "@calcom/dayjs"; import { useAvailableTimeSlots } from "@calcom/features/bookings/Booker/hooks/useAvailableTimeSlots"; import { useTimePreferences } from "@calcom/features/bookings/lib/timePreferences"; -import { useSchedule } from "@calcom/features/schedules/lib/use-schedule/useSchedule"; +import { useSchedule } from "~/schedules/hooks/useSchedule"; import { useTroubleshooterStore } from "@calcom/features/troubleshooter/store"; import { BookingStatus } from "@calcom/prisma/enums"; import { trpc } from "@calcom/trpc/react"; diff --git a/apps/web/modules/users/components/UserTable/PlatformManagedUsersTable.tsx b/apps/web/modules/users/components/UserTable/PlatformManagedUsersTable.tsx index 57bd6b1139..e99281eff3 100644 --- a/apps/web/modules/users/components/UserTable/PlatformManagedUsersTable.tsx +++ b/apps/web/modules/users/components/UserTable/PlatformManagedUsersTable.tsx @@ -10,7 +10,7 @@ import { useDataTable, } from "@calcom/features/data-table"; import { DataTableWrapper, DataTableToolbar, DataTableFilters, DataTableSegment, DataTableSelectionBar } from "~/data-table/components"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; diff --git a/apps/web/modules/users/components/UserTable/UserListTable.tsx b/apps/web/modules/users/components/UserTable/UserListTable.tsx index af7fdd0c5c..adebe5c965 100644 --- a/apps/web/modules/users/components/UserTable/UserListTable.tsx +++ b/apps/web/modules/users/components/UserTable/UserListTable.tsx @@ -9,7 +9,7 @@ import { useColumnFilters, useDataTable, } from "@calcom/features/data-table"; -import { useSegments } from "@calcom/features/data-table/hooks/useSegments"; +import { useSegments } from "~/data-table/hooks/useSegments"; import { useOrgBranding } from "@calcom/features/ee/organizations/context/provider"; import type { MemberPermissions } from "@calcom/features/pbac/lib/team-member-permissions"; import { WEBAPP_URL } from "@calcom/lib/constants"; diff --git a/packages/features/bookings/Booker/utils/event.ts b/packages/features/bookings/Booker/utils/event.ts index a9dc76c176..0b86b7d4fd 100644 --- a/packages/features/bookings/Booker/utils/event.ts +++ b/packages/features/bookings/Booker/utils/event.ts @@ -1,7 +1,7 @@ import { shallow } from "zustand/shallow"; import { useBookerStoreContext } from "@calcom/features/bookings/Booker/BookerStoreProvider"; -import { useSchedule } from "@calcom/features/schedules/lib/use-schedule/useSchedule"; +import { useSchedule } from "~/schedules/hooks/useSchedule"; import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { trpc } from "@calcom/trpc/react"; diff --git a/packages/features/schedules/lib/use-schedule/useTimesForSchedule.timezone.test.ts b/packages/features/schedules/hooks/useTimesForSchedule.timezone.test.ts similarity index 100% rename from packages/features/schedules/lib/use-schedule/useTimesForSchedule.timezone.test.ts rename to packages/features/schedules/hooks/useTimesForSchedule.timezone.test.ts diff --git a/packages/features/schedules/lib/use-schedule/useTimesForSchedule.ts b/packages/features/schedules/hooks/useTimesForSchedule.ts similarity index 84% rename from packages/features/schedules/lib/use-schedule/useTimesForSchedule.ts rename to packages/features/schedules/hooks/useTimesForSchedule.ts index 243c1e5891..6a499a622d 100644 --- a/packages/features/schedules/lib/use-schedule/useTimesForSchedule.ts +++ b/packages/features/schedules/hooks/useTimesForSchedule.ts @@ -6,7 +6,30 @@ import type { BookerState } from "@calcom/features/bookings/Booker/types"; import { getPrefetchMonthCount } from "@calcom/features/bookings/Booker/utils/getPrefetchMonthCount"; import { isPrefetchNextMonthEnabled } from "@calcom/features/bookings/Booker/utils/isPrefetchNextMonthEnabled"; -import type { UseScheduleWithCacheArgs } from "./useSchedule"; +type UseScheduleWithCacheArgs = { + username?: string | null; + eventSlug?: string | null; + eventId?: number | null; + month?: string | null; + timezone?: string | null; + selectedDate?: string | null; + duration?: number | null; + dayCount?: number | null; + rescheduleUid?: string | null; + isTeamEvent?: boolean; + orgSlug?: string; + teamMemberEmail?: string | null; + useApiV2?: boolean; + enabled?: boolean; + /*** + * Required when prefetching is needed + */ + bookerLayout?: { + layout: string; + extraDays: number; + columnViewExtraDays: { current: number }; + }; +}; type UseTimesForScheduleProps = Pick< UseScheduleWithCacheArgs, diff --git a/packages/platform/atoms/booker/BookerPlatformWrapper.tsx b/packages/platform/atoms/booker/BookerPlatformWrapper.tsx index 5cef210ebf..7fc1bf16d3 100644 --- a/packages/platform/atoms/booker/BookerPlatformWrapper.tsx +++ b/packages/platform/atoms/booker/BookerPlatformWrapper.tsx @@ -14,7 +14,7 @@ import { useInitializeBookerStore } from "@calcom/features/bookings/Booker/store import { useTimePreferences } from "@calcom/features/bookings/lib"; import type { ConnectedDestinationCalendars } from "@calcom/features/calendars/lib/getConnectedDestinationCalendars"; import { getUsernameList } from "@calcom/features/eventtypes/lib/defaultEvents"; -import { useTimesForSchedule } from "@calcom/features/schedules/lib/use-schedule/useTimesForSchedule"; +import { useTimesForSchedule } from "@calcom/features/schedules/hooks/useTimesForSchedule"; import { getRoutedTeamMemberIdsFromSearchParams } from "@calcom/lib/bookings/getRoutedTeamMemberIdsFromSearchParams"; import { localStorage } from "@calcom/lib/webstorage"; import { BookerLayouts } from "@calcom/prisma/zod-utils"; diff --git a/packages/platform/atoms/calendar-view/EventTypeCalendarViewComponent.tsx b/packages/platform/atoms/calendar-view/EventTypeCalendarViewComponent.tsx index f681ce8c34..7aac1f45ae 100644 --- a/packages/platform/atoms/calendar-view/EventTypeCalendarViewComponent.tsx +++ b/packages/platform/atoms/calendar-view/EventTypeCalendarViewComponent.tsx @@ -12,7 +12,7 @@ import { useBookerLayout } from "@calcom/features/bookings/Booker/hooks/useBooke import { useTimePreferences } from "@calcom/features/bookings/lib"; import { LargeCalendar } from "@calcom/web/modules/calendar-view/components/LargeCalendar"; import { getUsernameList } from "@calcom/features/eventtypes/lib/defaultEvents"; -import { useTimesForSchedule } from "@calcom/features/schedules/lib/use-schedule/useTimesForSchedule"; +import { useTimesForSchedule } from "@calcom/features/schedules/hooks/useTimesForSchedule"; import { formatUsername } from "../booker/BookerPlatformWrapper"; import type {