diff --git a/.vscode/settings.json b/.vscode/settings.json index 804ec75057..919ae19b36 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,7 +7,5 @@ "typescript.preferences.importModuleSpecifier": "non-relative", "spellright.language": ["en"], "spellright.documentTypes": ["markdown", "typescript"], - "tailwindCSS.experimental.classRegex": [ - ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] - ] + "tailwindCSS.experimental.classRegex": [["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"]] } diff --git a/apps/console b/apps/console index 7d53a77c07..6aa7cb2bbd 160000 --- a/apps/console +++ b/apps/console @@ -1 +1 @@ -Subproject commit 7d53a77c07ab2b2f0fd0567b4d8ee4905d448442 +Subproject commit 6aa7cb2bbdd4586533269a1a45cae42ba4be57c1 diff --git a/apps/web/components/AddToHomescreen.tsx b/apps/web/components/AddToHomescreen.tsx index 9f71751168..fe3296c86a 100644 --- a/apps/web/components/AddToHomescreen.tsx +++ b/apps/web/components/AddToHomescreen.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; export default function AddToHomescreen() { const { t } = useLocale(); diff --git a/apps/web/components/Embed.tsx b/apps/web/components/Embed.tsx index b67edbc7c8..a35e3e0173 100644 --- a/apps/web/components/Embed.tsx +++ b/apps/web/components/Embed.tsx @@ -5,11 +5,20 @@ import { createRef, forwardRef, MutableRefObject, RefObject, useRef, useState } import { components, ControlProps } from "react-select"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components"; -import { InputLeading, Label, TextArea, TextField } from "@calcom/ui/form/fields"; -import { HorizontalTabs, showToast, Switch } from "@calcom/ui/v2"; -import { Dialog, DialogClose, DialogContent } from "@calcom/ui/v2/core/Dialog"; +import { + Button, + Dialog, + DialogClose, + DialogContent, + HorizontalTabs, + Icon, + InputLeading, + Label, + showToast, + Switch, + TextArea, + TextField, +} from "@calcom/ui"; import { EMBED_LIB_URL, WEBAPP_URL } from "@lib/config/constants"; diff --git a/apps/web/components/ImageUploader.tsx b/apps/web/components/ImageUploader.tsx index 525224de95..0a7795b5e8 100644 --- a/apps/web/components/ImageUploader.tsx +++ b/apps/web/components/ImageUploader.tsx @@ -1,8 +1,7 @@ import { FormEvent, useCallback, useEffect, useState } from "react"; import Cropper from "react-easy-crop"; -import Button from "@calcom/ui/Button"; -import { Dialog, DialogClose, DialogContent, DialogTrigger } from "@calcom/ui/Dialog"; +import { Button, Dialog, DialogClose, DialogContent, DialogTrigger } from "@calcom/ui"; import { Area, getCroppedImg } from "@lib/cropImage"; import { useFileReader } from "@lib/hooks/useFileReader"; diff --git a/apps/web/components/Loader.tsx b/apps/web/components/Loader.tsx index ae6af3d9ca..5ee2d90975 100644 --- a/apps/web/components/Loader.tsx +++ b/apps/web/components/Loader.tsx @@ -1,4 +1,4 @@ /** * @deprecated Use custom Skeletons instead **/ -export { default } from "@calcom/ui/Loader"; +export { Loader as default } from "@calcom/ui"; diff --git a/apps/web/components/SettingsShell.tsx b/apps/web/components/SettingsShell.tsx index a5cad37bf9..1599371328 100644 --- a/apps/web/components/SettingsShell.tsx +++ b/apps/web/components/SettingsShell.tsx @@ -1,8 +1,6 @@ import React, { ComponentProps } from "react"; -import ErrorBoundary from "@calcom/ui/ErrorBoundary"; -import { Icon } from "@calcom/ui/Icon"; -import Shell from "@calcom/ui/Shell"; +import { ErrorBoundary, Icon, Shell } from "@calcom/ui"; import NavTabs from "./NavTabs"; diff --git a/apps/web/components/apps/AdditionalCalendarSelector.tsx b/apps/web/components/apps/AdditionalCalendarSelector.tsx index a8073de330..6eb9f2bb98 100644 --- a/apps/web/components/apps/AdditionalCalendarSelector.tsx +++ b/apps/web/components/apps/AdditionalCalendarSelector.tsx @@ -1,13 +1,10 @@ -import React from "react"; import { OptionProps } from "react-select"; import { InstallAppButton } from "@calcom/app-store/components"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import type { App } from "@calcom/types/App"; -import { Button } from "@calcom/ui"; -import { Icon } from "@calcom/ui/Icon"; -import { Select } from "@calcom/ui/v2"; +import { Button, Icon, Select } from "@calcom/ui"; import { QueryCell } from "@lib/QueryCell"; diff --git a/apps/web/components/apps/App.tsx b/apps/web/components/apps/App.tsx index f04d2083dc..6fcfb85567 100644 --- a/apps/web/components/apps/App.tsx +++ b/apps/web/components/apps/App.tsx @@ -9,11 +9,15 @@ import classNames from "@calcom/lib/classNames"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { App as AppType } from "@calcom/types/App"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components"; -import { showToast, SkeletonText } from "@calcom/ui/v2"; -import { SkeletonButton, Shell } from "@calcom/ui/v2"; -import DisconnectIntegration from "@calcom/ui/v2/modules/integrations/DisconnectIntegration"; +import { + Button, + DisconnectIntegration, + Icon, + Shell, + showToast, + SkeletonButton, + SkeletonText, +} from "@calcom/ui"; import HeadSeo from "@components/seo/head-seo"; @@ -123,6 +127,7 @@ const Component = ({ render={({ useDefaultComponent, ...props }) => { if (useDefaultComponent) { props = { + ...props, onClick: () => { mutation.mutate({ type, variant, slug }); }, @@ -161,6 +166,7 @@ const Component = ({ render={({ useDefaultComponent, ...props }) => { if (useDefaultComponent) { props = { + ...props, onClick: () => { mutation.mutate({ type, variant, slug }); }, diff --git a/apps/web/components/apps/CalendarListContainer.tsx b/apps/web/components/apps/CalendarListContainer.tsx index dfc66cb163..35adbf3c10 100644 --- a/apps/web/components/apps/CalendarListContainer.tsx +++ b/apps/web/components/apps/CalendarListContainer.tsx @@ -6,15 +6,18 @@ import { InstallAppButton } from "@calcom/app-store/components"; import DestinationCalendarSelector from "@calcom/features/calendars/DestinationCalendarSelector"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import SkeletonLoader from "@calcom/ui/apps/SkeletonLoader"; -import { Button } from "@calcom/ui/components"; -import { Alert, EmptyScreen } from "@calcom/ui/v2"; -import { List } from "@calcom/ui/v2/core/List"; -import { ShellSubHeading } from "@calcom/ui/v2/core/Shell"; -import Switch from "@calcom/ui/v2/core/Switch"; -import showToast from "@calcom/ui/v2/core/notifications"; -import DisconnectIntegration from "@calcom/ui/v2/modules/integrations/DisconnectIntegration"; +import { + Alert, + Button, + DisconnectIntegration, + EmptyScreen, + Icon, + List, + ShellSubHeading, + showToast, + SkeletonLoader, + Switch, +} from "@calcom/ui"; import { QueryCell } from "@lib/QueryCell"; diff --git a/apps/web/components/apps/IntegrationListItem.tsx b/apps/web/components/apps/IntegrationListItem.tsx index a27d424371..fff73dd343 100644 --- a/apps/web/components/apps/IntegrationListItem.tsx +++ b/apps/web/components/apps/IntegrationListItem.tsx @@ -3,9 +3,7 @@ import { useRouter } from "next/router"; import { ReactNode, useEffect, useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui"; -import { showToast } from "@calcom/ui/v2"; -import { ListItem, ListItemText, ListItemTitle } from "@calcom/ui/v2/core/List"; +import { Icon, ListItem, ListItemText, ListItemTitle, showToast } from "@calcom/ui"; import classNames from "@lib/classNames"; diff --git a/apps/web/components/apps/OmniInstallAppButton.tsx b/apps/web/components/apps/OmniInstallAppButton.tsx index 0883016823..7f887b5550 100644 --- a/apps/web/components/apps/OmniInstallAppButton.tsx +++ b/apps/web/components/apps/OmniInstallAppButton.tsx @@ -4,9 +4,7 @@ import { classNames } from "@calcom/lib"; import useApp from "@calcom/lib/hooks/useApp"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; -import { showToast } from "@calcom/ui/v2"; +import { Button, Icon, showToast } from "@calcom/ui"; /** * Use this component to allow installing an app from anywhere on the app. @@ -42,6 +40,7 @@ export default function OmniInstallAppButton({ appId, className }: { appId: stri render={({ useDefaultComponent, ...props }) => { if (useDefaultComponent) { props = { + ...props, onClick: () => { mutation.mutate({ type: app.type, variant: app.variant, slug: app.slug, isOmniInstall: true }); }, diff --git a/apps/web/components/auth/TwoFactor.tsx b/apps/web/components/auth/TwoFactor.tsx index 6e06e23b6b..3fb4986626 100644 --- a/apps/web/components/auth/TwoFactor.tsx +++ b/apps/web/components/auth/TwoFactor.tsx @@ -3,7 +3,7 @@ import useDigitInput from "react-digit-input"; import { useFormContext } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Label, Input } from "@calcom/ui/form/fields"; +import { Label, Input } from "@calcom/ui"; export default function TwoFactor({ center = true }) { const [value, onChange] = useState(""); diff --git a/apps/web/components/availability/SkeletonLoader.tsx b/apps/web/components/availability/SkeletonLoader.tsx index d5c75a6b41..fb9258d599 100644 --- a/apps/web/components/availability/SkeletonLoader.tsx +++ b/apps/web/components/availability/SkeletonLoader.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { SkeletonText } from "@calcom/ui/v2"; +import { SkeletonText } from "@calcom/ui"; import classNames from "@lib/classNames"; diff --git a/apps/web/components/booking/AvailableEventLocations.tsx b/apps/web/components/booking/AvailableEventLocations.tsx index 082ef1f441..940b94c575 100644 --- a/apps/web/components/booking/AvailableEventLocations.tsx +++ b/apps/web/components/booking/AvailableEventLocations.tsx @@ -1,7 +1,6 @@ import { getEventLocationType, locationKeyToString } from "@calcom/app-store/locations"; import { classNames } from "@calcom/lib"; -import { Icon } from "@calcom/ui"; -import Tooltip from "@calcom/ui/v2/core/Tooltip"; +import { Icon, Tooltip } from "@calcom/ui"; import { Props } from "./pages/AvailabilityPage"; diff --git a/apps/web/components/booking/AvailableTimes.tsx b/apps/web/components/booking/AvailableTimes.tsx index bdc8cdeef4..16f531f459 100644 --- a/apps/web/components/booking/AvailableTimes.tsx +++ b/apps/web/components/booking/AvailableTimes.tsx @@ -7,8 +7,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { TimeFormat } from "@calcom/lib/timeFormat"; import { nameOfDay } from "@calcom/lib/weekday"; import type { Slot } from "@calcom/trpc/server/routers/viewer/slots"; -import { SkeletonContainer, SkeletonText } from "@calcom/ui/v2"; -import { ToggleGroup } from "@calcom/ui/v2/core/form/ToggleGroup"; +import { SkeletonContainer, SkeletonText, ToggleGroup } from "@calcom/ui"; import classNames from "@lib/classNames"; import { timeZone } from "@lib/clock"; diff --git a/apps/web/components/booking/BookingDescription.tsx b/apps/web/components/booking/BookingDescription.tsx index 1552965e9a..cacdb59359 100644 --- a/apps/web/components/booking/BookingDescription.tsx +++ b/apps/web/components/booking/BookingDescription.tsx @@ -3,7 +3,7 @@ import { FC, ReactNode } from "react"; import { classNames } from "@calcom/lib"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; import { UserAvatars } from "@components/booking/UserAvatars"; import EventTypeDescriptionSafeHTML from "@components/eventtype/EventTypeDescriptionSafeHTML"; diff --git a/apps/web/components/booking/BookingListItem.tsx b/apps/web/components/booking/BookingListItem.tsx index 2023df30bf..201f0a2879 100644 --- a/apps/web/components/booking/BookingListItem.tsx +++ b/apps/web/components/booking/BookingListItem.tsx @@ -1,6 +1,6 @@ import { BookingStatus } from "@prisma/client"; import { useRouter } from "next/router"; -import { useState, useMemo } from "react"; +import { useState } from "react"; import { EventLocationType, getEventLocationType } from "@calcom/app-store/locations"; import dayjs from "@calcom/dayjs"; @@ -9,14 +9,20 @@ import { formatTime } from "@calcom/lib/date-fns"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { getEveryFreqFor } from "@calcom/lib/recurringStrings"; import { RouterInputs, RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader } from "@calcom/ui/Dialog"; -import { Icon } from "@calcom/ui/Icon"; -import { Badge } from "@calcom/ui/components/badge"; -import { Button } from "@calcom/ui/components/button"; -import { TextArea } from "@calcom/ui/form/fields"; -import MeetingTimeInTimezones from "@calcom/ui/v2/core/MeetingTimeInTimezones"; -import Tooltip from "@calcom/ui/v2/core/Tooltip"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { + Badge, + Button, + Dialog, + DialogClose, + DialogContent, + DialogFooter, + DialogHeader, + Icon, + MeetingTimeInTimezones, + showToast, + TextArea, + Tooltip, +} from "@calcom/ui"; import useMeQuery from "@lib/hooks/useMeQuery"; diff --git a/apps/web/components/booking/CancelBooking.tsx b/apps/web/components/booking/CancelBooking.tsx index e6da1c4e6a..951953e169 100644 --- a/apps/web/components/booking/CancelBooking.tsx +++ b/apps/web/components/booking/CancelBooking.tsx @@ -5,8 +5,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import useTheme from "@calcom/lib/hooks/useTheme"; import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry"; import type { RecurringEvent } from "@calcom/types/Calendar"; -import { Icon } from "@calcom/ui/Icon"; -import { Button, TextArea } from "@calcom/ui/components"; +import { Button, Icon, TextArea } from "@calcom/ui"; type Props = { booking: { diff --git a/apps/web/components/booking/SkeletonLoader.tsx b/apps/web/components/booking/SkeletonLoader.tsx index e9cb916267..8bcbe26b85 100644 --- a/apps/web/components/booking/SkeletonLoader.tsx +++ b/apps/web/components/booking/SkeletonLoader.tsx @@ -1,6 +1,6 @@ import React from "react"; -import { SkeletonText } from "@calcom/ui/v2"; +import { SkeletonText } from "@calcom/ui"; function SkeletonLoader() { return ( diff --git a/apps/web/components/booking/TimeOptions.tsx b/apps/web/components/booking/TimeOptions.tsx index d62b3ff2c0..293276cf2b 100644 --- a/apps/web/components/booking/TimeOptions.tsx +++ b/apps/web/components/booking/TimeOptions.tsx @@ -1,7 +1,7 @@ import { FC, useEffect, useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import TimezoneSelect, { ITimezoneOption } from "@calcom/ui/v2/core/TimezoneSelect"; +import { ITimezoneOption, TimezoneSelect } from "@calcom/ui"; import { timeZone } from "../../lib/clock"; diff --git a/apps/web/components/booking/pages/AvailabilityPage.tsx b/apps/web/components/booking/pages/AvailabilityPage.tsx index ac7022c448..d0d6f348e7 100644 --- a/apps/web/components/booking/pages/AvailabilityPage.tsx +++ b/apps/web/components/booking/pages/AvailabilityPage.tsx @@ -28,8 +28,7 @@ import { getRecurringFreq } from "@calcom/lib/recurringStrings"; import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry"; import { detectBrowserTimeFormat, setIs24hClockInLocalStorage, TimeFormat } from "@calcom/lib/timeFormat"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import DatePicker from "@calcom/ui/v2/modules/booker/DatePicker"; +import { Icon, DatePicker } from "@calcom/ui"; import { timeZone as localStorageTimeZone } from "@lib/clock"; // import { timeZone } from "@lib/clock"; diff --git a/apps/web/components/booking/pages/BookingPage.tsx b/apps/web/components/booking/pages/BookingPage.tsx index 9520b50c0c..472ddb2420 100644 --- a/apps/web/components/booking/pages/BookingPage.tsx +++ b/apps/web/components/booking/pages/BookingPage.tsx @@ -5,7 +5,7 @@ import { isValidPhoneNumber } from "libphonenumber-js"; import { useSession } from "next-auth/react"; import Head from "next/head"; import { useRouter } from "next/router"; -import { useEffect, useMemo, useState, useReducer } from "react"; +import { useEffect, useMemo, useReducer, useState } from "react"; import { Controller, useForm, useWatch } from "react-hook-form"; import { FormattedNumber, IntlProvider } from "react-intl"; import { ReactMultiEmail } from "react-multi-email"; @@ -14,11 +14,11 @@ import { z } from "zod"; import BookingPageTagManager from "@calcom/app-store/BookingPageTagManager"; import { - locationKeyToString, - getEventLocationValue, - getEventLocationType, EventLocationType, + getEventLocationType, + getEventLocationValue, getHumanReadableLocationValue, + locationKeyToString, } from "@calcom/app-store/locations"; import { createPaymentLink } from "@calcom/app-store/stripepayment/lib/client"; import { getEventTypeAppData } from "@calcom/app-store/utils"; @@ -37,12 +37,7 @@ import useTheme from "@calcom/lib/hooks/useTheme"; import { HttpError } from "@calcom/lib/http-error"; import { getEveryFreqFor } from "@calcom/lib/recurringStrings"; import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry"; -import { Icon } from "@calcom/ui/Icon"; -import { Tooltip } from "@calcom/ui/Tooltip"; -import { Button } from "@calcom/ui/components"; -import AddressInput from "@calcom/ui/form/AddressInputLazy"; -import PhoneInput from "@calcom/ui/form/PhoneInputLazy"; -import { EmailInput, Form } from "@calcom/ui/form/fields"; +import { AddressInput, Button, EmailInput, Form, Icon, PhoneInput, Tooltip } from "@calcom/ui"; import { asStringOrNull } from "@lib/asStringOrNull"; import { timeZone } from "@lib/clock"; diff --git a/apps/web/components/dialog/DeleteStripeDialogContent.tsx b/apps/web/components/dialog/DeleteStripeDialogContent.tsx deleted file mode 100644 index a069550514..0000000000 --- a/apps/web/components/dialog/DeleteStripeDialogContent.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import * as DialogPrimitive from "@radix-ui/react-dialog"; -import React, { PropsWithChildren } from "react"; - -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button } from "@calcom/ui/Button"; -import { DialogClose, DialogContent } from "@calcom/ui/Dialog"; -import { Icon } from "@calcom/ui/Icon"; - -export type DeleteStripeDialogContentProps = { - cancelAllBookingsBtnText?: string; - removeBtnText?: string; - cancelBtnText?: string; - onConfirm?: (event: React.MouseEvent) => void; - onRemove?: (event: React.MouseEvent) => void; - title: string; - variety?: "danger" | "warning" | "success"; -}; - -export default function DeleteStripeDialogContent(props: PropsWithChildren) { - const { t } = useLocale(); - const { - title, - variety, - cancelAllBookingsBtnText, - removeBtnText, - cancelBtnText = t("cancel"), - onConfirm, - onRemove, - children, - } = props; - - return ( - -
- {variety && ( -
- {variety === "danger" && ( -
- -
- )} - {variety === "warning" && ( -
- -
- )} - {variety === "success" && ( -
- -
- )} -
- )} -
- {title} - - {children} - -
-
-
- - - - - - - - - -
-
- ); -} diff --git a/apps/web/components/dialog/EditLocationDialog.tsx b/apps/web/components/dialog/EditLocationDialog.tsx index eba094c04a..6e90496796 100644 --- a/apps/web/components/dialog/EditLocationDialog.tsx +++ b/apps/web/components/dialog/EditLocationDialog.tsx @@ -6,20 +6,16 @@ import { Controller, useForm, useWatch } from "react-hook-form"; import { z } from "zod"; import { - LocationType, - getEventLocationType, EventLocationType, + getEventLocationType, + getHumanReadableLocationValue, + getMessageForOrganizer, LocationObject, + LocationType, } from "@calcom/app-store/locations"; -import { getMessageForOrganizer } from "@calcom/app-store/locations"; -import { getHumanReadableLocationValue } from "@calcom/app-store/locations"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui"; -import { Dialog, DialogContent } from "@calcom/ui/Dialog"; -import { Icon } from "@calcom/ui/Icon"; -import PhoneInput from "@calcom/ui/form/PhoneInputLazy"; -import { Form } from "@calcom/ui/form/fields"; +import { Button, Dialog, DialogContent, Form, Icon, PhoneInput } from "@calcom/ui"; import { QueryCell } from "@lib/QueryCell"; diff --git a/apps/web/components/dialog/RescheduleDialog.tsx b/apps/web/components/dialog/RescheduleDialog.tsx index 1e5e70614a..694e453784 100644 --- a/apps/web/components/dialog/RescheduleDialog.tsx +++ b/apps/web/components/dialog/RescheduleDialog.tsx @@ -1,12 +1,18 @@ -import React, { useState, Dispatch, SetStateAction } from "react"; +import { Dispatch, SetStateAction, useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader } from "@calcom/ui/Dialog"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; -import { TextArea } from "@calcom/ui/form/fields"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { + Button, + Dialog, + DialogClose, + DialogContent, + DialogFooter, + DialogHeader, + Icon, + showToast, + TextArea, +} from "@calcom/ui"; interface IRescheduleDialog { isOpenDialog: boolean; diff --git a/apps/web/components/eventtype/AvailabilityTab.tsx b/apps/web/components/eventtype/AvailabilityTab.tsx index 58ad79a169..5f15cfb022 100644 --- a/apps/web/components/eventtype/AvailabilityTab.tsx +++ b/apps/web/components/eventtype/AvailabilityTab.tsx @@ -1,6 +1,6 @@ import { FormValues } from "pages/event-types/[type]"; import { Controller, useFormContext } from "react-hook-form"; -import { SingleValueProps, OptionProps, components } from "react-select"; +import { components, OptionProps, SingleValueProps } from "react-select"; import dayjs from "@calcom/dayjs"; import classNames from "@calcom/lib/classNames"; @@ -8,12 +8,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { weekdayNames } from "@calcom/lib/weekday"; import { trpc } from "@calcom/trpc/react"; import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery"; -import { Icon } from "@calcom/ui"; -import { Badge } from "@calcom/ui/components/badge"; -import { Button } from "@calcom/ui/components/button"; -import { SettingsToggle } from "@calcom/ui/v2"; -import Select from "@calcom/ui/v2/core/form/select"; -import { SkeletonText } from "@calcom/ui/v2/core/skeleton"; +import { Badge, Button, Icon, Select, SettingsToggle, SkeletonText } from "@calcom/ui"; import { SelectSkeletonLoader } from "@components/availability/SkeletonLoader"; diff --git a/apps/web/components/eventtype/CreateEventType.tsx b/apps/web/components/eventtype/CreateEventType.tsx index 2c7cb8454b..f7cff9aa49 100644 --- a/apps/web/components/eventtype/CreateEventType.tsx +++ b/apps/web/components/eventtype/CreateEventType.tsx @@ -11,19 +11,25 @@ import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { createEventTypeInput } from "@calcom/prisma/zod/custom/eventtype"; import { trpc } from "@calcom/trpc/react"; -import { Alert } from "@calcom/ui/Alert"; -import { Button } from "@calcom/ui/Button"; -import { Dialog, DialogClose, DialogContent } from "@calcom/ui/Dialog"; -import Dropdown, { +import { + Alert, + Button, + Dialog, + DialogClose, + DialogContent, + Dropdown, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@calcom/ui/Dropdown"; -import { Icon } from "@calcom/ui/Icon"; -import { Form, InputLeading, TextAreaField, TextField } from "@calcom/ui/form/fields"; -import showToast from "@calcom/ui/v2/core/notifications"; + Form, + Icon, + InputLeading, + showToast, + TextAreaField, + TextField, +} from "@calcom/ui"; import { HttpError } from "@lib/core/http/error"; import { slugify } from "@lib/slugify"; diff --git a/apps/web/components/eventtype/CustomInputTypeForm.tsx b/apps/web/components/eventtype/CustomInputTypeForm.tsx index 5eeed7467f..08a2b3fd5d 100644 --- a/apps/web/components/eventtype/CustomInputTypeForm.tsx +++ b/apps/web/components/eventtype/CustomInputTypeForm.tsx @@ -1,10 +1,8 @@ import { EventTypeCustomInput, EventTypeCustomInputType } from "@prisma/client"; -import React, { FC } from "react"; +import { FC } from "react"; import { Controller, SubmitHandler, useForm, useWatch } from "react-hook-form"; -import { Button } from "@calcom/ui/components"; -import { TextField } from "@calcom/ui/components/form"; -import { Select } from "@calcom/ui/v2"; +import { Button, Select, TextField } from "@calcom/ui"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/components/eventtype/EditLocationDialog.tsx b/apps/web/components/eventtype/EditLocationDialog.tsx index 83b7bc1903..26c53c0e7d 100644 --- a/apps/web/components/eventtype/EditLocationDialog.tsx +++ b/apps/web/components/eventtype/EditLocationDialog.tsx @@ -7,21 +7,16 @@ import { Controller, useForm, useWatch } from "react-hook-form"; import { z } from "zod"; import { - LocationType, - getEventLocationType, EventLocationType, + getEventLocationType, getHumanReadableLocationValue, getMessageForOrganizer, LocationObject, + LocationType, } from "@calcom/app-store/locations"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components"; -import { Label, Form } from "@calcom/ui/components/form"; -import PhoneInput from "@calcom/ui/form/PhoneInputLazy"; -import { Dialog, DialogContent } from "@calcom/ui/v2"; -import { Select } from "@calcom/ui/v2/"; +import { Button, Dialog, DialogContent, Form, Icon, Label, PhoneInput, Select } from "@calcom/ui"; import { QueryCell } from "@lib/QueryCell"; diff --git a/apps/web/components/eventtype/EventAdvancedTab.tsx b/apps/web/components/eventtype/EventAdvancedTab.tsx index 473e04e42c..0730bc93a3 100644 --- a/apps/web/components/eventtype/EventAdvancedTab.tsx +++ b/apps/web/components/eventtype/EventAdvancedTab.tsx @@ -10,9 +10,19 @@ import DestinationCalendarSelector from "@calcom/features/calendars/DestinationC import { CAL_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Checkbox, Button, TextField, Label } from "@calcom/ui/components"; -import { CustomInputItem, Dialog, DialogContent, SettingsToggle, showToast, Tooltip } from "@calcom/ui/v2"; +import { + Button, + Checkbox, + CustomInputItem, + Dialog, + DialogContent, + Icon, + Label, + SettingsToggle, + showToast, + TextField, + Tooltip, +} from "@calcom/ui"; import CustomInputTypeForm from "@components/eventtype/CustomInputTypeForm"; diff --git a/apps/web/components/eventtype/EventAppsTab.tsx b/apps/web/components/eventtype/EventAppsTab.tsx index 4b2864cf17..19fead5016 100644 --- a/apps/web/components/eventtype/EventAppsTab.tsx +++ b/apps/web/components/eventtype/EventAppsTab.tsx @@ -1,5 +1,4 @@ import { EventTypeSetupInfered, FormValues } from "pages/event-types/[type]"; -import React from "react"; import { useFormContext } from "react-hook-form"; import EventTypeAppContext, { GetAppData, SetAppData } from "@calcom/app-store/EventTypeAppContext"; @@ -8,10 +7,7 @@ import { EventTypeAppCardComponentProps } from "@calcom/app-store/types"; import { EventTypeAppsList } from "@calcom/app-store/utils"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import ErrorBoundary from "@calcom/ui/ErrorBoundary"; -import { Button } from "@calcom/ui/components"; -import { EmptyScreen } from "@calcom/ui/v2"; +import { Button, EmptyScreen, ErrorBoundary, Icon } from "@calcom/ui"; type EventType = Pick["eventType"] & EventTypeAppCardComponentProps["eventType"]; diff --git a/apps/web/components/eventtype/EventLimitsTab.tsx b/apps/web/components/eventtype/EventLimitsTab.tsx index 41c457fbf2..21f5d273ce 100644 --- a/apps/web/components/eventtype/EventLimitsTab.tsx +++ b/apps/web/components/eventtype/EventLimitsTab.tsx @@ -10,11 +10,7 @@ import findDurationType from "@calcom/lib/findDurationType"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { PeriodType } from "@calcom/prisma/client"; import type { BookingLimit } from "@calcom/types/Calendar"; -import { Icon } from "@calcom/ui"; -import { Button } from "@calcom/ui/components"; -import { Input, InputField, Label } from "@calcom/ui/components/form"; -import { Select, SettingsToggle } from "@calcom/ui/v2"; -import DateRangePicker from "@calcom/ui/v2/core/form/date-range-picker/DateRangePicker"; +import { Button, DateRangePicker, Icon, Input, InputField, Label, Select, SettingsToggle } from "@calcom/ui"; export const EventLimitsTab = ({ eventType }: Pick) => { const { t } = useLocale(); diff --git a/apps/web/components/eventtype/EventSetupTab.tsx b/apps/web/components/eventtype/EventSetupTab.tsx index 12e229fd5f..1d08e60bdd 100644 --- a/apps/web/components/eventtype/EventSetupTab.tsx +++ b/apps/web/components/eventtype/EventSetupTab.tsx @@ -6,13 +6,10 @@ import { useState } from "react"; import { Controller, useForm, useFormContext } from "react-hook-form"; import { z } from "zod"; -import { getEventLocationType, EventLocationType } from "@calcom/app-store/locations"; +import { EventLocationType, getEventLocationType } from "@calcom/app-store/locations"; import { CAL_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components"; -import { Label, TextField } from "@calcom/ui/components/form"; -import { Select, Skeleton } from "@calcom/ui/v2"; +import { Button, Icon, Label, Select, Skeleton, TextField } from "@calcom/ui"; import { slugify } from "@lib/slugify"; diff --git a/apps/web/components/eventtype/EventTeamTab.tsx b/apps/web/components/eventtype/EventTeamTab.tsx index 8117a5fcac..177163bdbb 100644 --- a/apps/web/components/eventtype/EventTeamTab.tsx +++ b/apps/web/components/eventtype/EventTeamTab.tsx @@ -5,10 +5,7 @@ import { Controller, useFormContext } from "react-hook-form"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui"; -import { Button, Avatar } from "@calcom/ui/components"; -import { Label } from "@calcom/ui/components/form"; -import { Select, CheckedTeamSelect } from "@calcom/ui/v2"; +import { Avatar, Button, CheckedTeamSelect, Icon, Label, Select } from "@calcom/ui"; interface IMemberToValue { id: number | null; diff --git a/apps/web/components/eventtype/EventTypeSingleLayout.tsx b/apps/web/components/eventtype/EventTypeSingleLayout.tsx index 321df9a22c..65d6de93d2 100644 --- a/apps/web/components/eventtype/EventTypeSingleLayout.tsx +++ b/apps/web/components/eventtype/EventTypeSingleLayout.tsx @@ -10,20 +10,27 @@ import { CAL_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { HttpError } from "@calcom/lib/http-error"; import { trpc, TRPCClientError } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Button, ButtonGroup, Label } from "@calcom/ui/components"; -import { HorizontalTabs, showToast, Switch, Tooltip, VerticalTabs } from "@calcom/ui/v2"; -import ConfirmationDialogContent from "@calcom/ui/v2/core/ConfirmationDialogContent"; -import { Dialog } from "@calcom/ui/v2/core/Dialog"; -import Divider from "@calcom/ui/v2/core/Divider"; -import Dropdown, { +import { + Button, + ButtonGroup, + ConfirmationDialogContent, + Dialog, + Divider, + Dropdown, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, -} from "@calcom/ui/v2/core/Dropdown"; -import Shell from "@calcom/ui/v2/core/Shell"; -import VerticalDivider from "@calcom/ui/v2/core/VerticalDivider"; -import { Skeleton } from "@calcom/ui/v2/core/skeleton"; + HorizontalTabs, + Icon, + Label, + Shell, + showToast, + Skeleton, + Switch, + Tooltip, + VerticalDivider, + VerticalTabs, +} from "@calcom/ui"; import { ClientSuspense } from "@components/ClientSuspense"; import { EmbedButton, EmbedDialog } from "@components/Embed"; diff --git a/apps/web/components/eventtype/EventWorkfowsTab.tsx b/apps/web/components/eventtype/EventWorkfowsTab.tsx index 1b5eaff2b9..6baf823a78 100644 --- a/apps/web/components/eventtype/EventWorkfowsTab.tsx +++ b/apps/web/components/eventtype/EventWorkfowsTab.tsx @@ -1 +1 @@ -export { default } from "@calcom/features/ee/workflows/components/v2/EventWorkflowsTab"; +export { default } from "@calcom/features/ee/workflows/components/EventWorkflowsTab"; diff --git a/apps/web/components/eventtype/RecurringEventController.tsx b/apps/web/components/eventtype/RecurringEventController.tsx index f7f4c57c65..a95961829b 100644 --- a/apps/web/components/eventtype/RecurringEventController.tsx +++ b/apps/web/components/eventtype/RecurringEventController.tsx @@ -5,8 +5,7 @@ import { useFormContext } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { Frequency } from "@calcom/prisma/zod-utils"; import type { RecurringEvent } from "@calcom/types/Calendar"; -import { Alert } from "@calcom/ui/Alert"; -import { Select, SettingsToggle } from "@calcom/ui/v2"; +import { Alert, Select, SettingsToggle } from "@calcom/ui"; type RecurringEventControllerProps = { recurringEvent: RecurringEvent | null; diff --git a/apps/web/components/eventtype/SkeletonLoader.tsx b/apps/web/components/eventtype/SkeletonLoader.tsx index 7ddaf6bc85..8bebbd5405 100644 --- a/apps/web/components/eventtype/SkeletonLoader.tsx +++ b/apps/web/components/eventtype/SkeletonLoader.tsx @@ -1,5 +1,4 @@ -import { Icon } from "@calcom/ui/Icon"; -import { SkeletonAvatar, SkeletonContainer, SkeletonText } from "@calcom/ui/v2"; +import { Icon, SkeletonAvatar, SkeletonContainer, SkeletonText } from "@calcom/ui"; function SkeletonLoader() { return ( diff --git a/apps/web/components/getting-started/components/CalendarItem.tsx b/apps/web/components/getting-started/components/CalendarItem.tsx index 12effe2442..67f2f76994 100644 --- a/apps/web/components/getting-started/components/CalendarItem.tsx +++ b/apps/web/components/getting-started/components/CalendarItem.tsx @@ -1,7 +1,7 @@ import { InstallAppButtonWithoutPlanCheck } from "@calcom/app-store/components"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { App } from "@calcom/types/App"; -import { Button } from "@calcom/ui/components/button"; +import { Button } from "@calcom/ui"; interface ICalendarItem { title: string; diff --git a/apps/web/components/getting-started/components/CalendarSwitch.tsx b/apps/web/components/getting-started/components/CalendarSwitch.tsx index 2fe0c20ef7..e067c5f44d 100644 --- a/apps/web/components/getting-started/components/CalendarSwitch.tsx +++ b/apps/web/components/getting-started/components/CalendarSwitch.tsx @@ -1,8 +1,7 @@ import { useMutation } from "@tanstack/react-query"; import { trpc } from "@calcom/trpc/react"; -import { Switch } from "@calcom/ui/v2"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { showToast, Switch } from "@calcom/ui"; import classNames from "@lib/classNames"; diff --git a/apps/web/components/getting-started/steps-views/ConnectCalendars.tsx b/apps/web/components/getting-started/steps-views/ConnectCalendars.tsx index 7b25b76bdd..41158b521c 100644 --- a/apps/web/components/getting-started/steps-views/ConnectCalendars.tsx +++ b/apps/web/components/getting-started/steps-views/ConnectCalendars.tsx @@ -3,8 +3,7 @@ import { ArrowRightIcon } from "@heroicons/react/solid"; import classNames from "@calcom/lib/classNames"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { List } from "@calcom/ui/List"; -import { SkeletonAvatar, SkeletonText, SkeletonButton } from "@calcom/ui/v2"; +import { SkeletonAvatar, SkeletonText, SkeletonButton, List } from "@calcom/ui"; import { CalendarItem } from "../components/CalendarItem"; import { ConnectedCalendarItem } from "../components/ConnectedCalendarItem"; diff --git a/apps/web/components/getting-started/steps-views/SetupAvailability.tsx b/apps/web/components/getting-started/steps-views/SetupAvailability.tsx index 0038f6e290..25cac4fe45 100644 --- a/apps/web/components/getting-started/steps-views/SetupAvailability.tsx +++ b/apps/web/components/getting-started/steps-views/SetupAvailability.tsx @@ -7,8 +7,7 @@ import { DEFAULT_SCHEDULE } from "@calcom/lib/availability"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc, TRPCClientErrorLike } from "@calcom/trpc/react"; import { AppRouter } from "@calcom/trpc/server/routers/_app"; -import { Button } from "@calcom/ui/components/button"; -import { Form } from "@calcom/ui/form/fields"; +import { Button, Form } from "@calcom/ui"; interface ISetupAvailabilityProps { nextStep: () => void; diff --git a/apps/web/components/getting-started/steps-views/UserProfile.tsx b/apps/web/components/getting-started/steps-views/UserProfile.tsx index 8454474591..e90e5f7e8b 100644 --- a/apps/web/components/getting-started/steps-views/UserProfile.tsx +++ b/apps/web/components/getting-started/steps-views/UserProfile.tsx @@ -6,10 +6,7 @@ import { useForm } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { User } from "@calcom/prisma/client"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui/components"; -import { TextArea } from "@calcom/ui/components/form"; -import { showToast } from "@calcom/ui/v2"; -import ImageUploader from "@calcom/ui/v2/core/ImageUploader"; +import { Button, ImageUploader, showToast, TextArea } from "@calcom/ui"; import { AvatarSSR } from "@components/ui/AvatarSSR"; diff --git a/apps/web/components/getting-started/steps-views/UserSettings.tsx b/apps/web/components/getting-started/steps-views/UserSettings.tsx index e6ea505dfe..ce524fd796 100644 --- a/apps/web/components/getting-started/steps-views/UserSettings.tsx +++ b/apps/web/components/getting-started/steps-views/UserSettings.tsx @@ -1,13 +1,12 @@ import { ArrowRightIcon } from "@heroicons/react/outline"; -import { useRef, useState } from "react"; +import { useState } from "react"; import { Controller, useForm } from "react-hook-form"; import dayjs from "@calcom/dayjs"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { User } from "@calcom/prisma/client"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui/components/button"; -import TimezoneSelect from "@calcom/ui/form/TimezoneSelect"; +import { Button, TimezoneSelect } from "@calcom/ui"; import { UsernameAvailability } from "@components/ui/UsernameAvailability"; diff --git a/apps/web/components/integrations/CalendarListContainer.tsx b/apps/web/components/integrations/CalendarListContainer.tsx deleted file mode 100644 index 60c3d4c55b..0000000000 --- a/apps/web/components/integrations/CalendarListContainer.tsx +++ /dev/null @@ -1,293 +0,0 @@ -import { useMutation } from "@tanstack/react-query"; -import { Fragment } from "react"; - -import { InstallAppButton } from "@calcom/app-store/components"; -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Alert } from "@calcom/ui/Alert"; -import { List } from "@calcom/ui/List"; -import { ShellSubHeading } from "@calcom/ui/Shell"; -import Switch from "@calcom/ui/Switch"; -import SkeletonLoader from "@calcom/ui/apps/SkeletonLoader"; -import { Button } from "@calcom/ui/components/button"; -import showToast from "@calcom/ui/v2/core/notifications"; - -import { QueryCell } from "@lib/QueryCell"; - -import AdditionalCalendarSelector from "@components/AdditionalCalendarSelector"; -import DestinationCalendarSelector from "@components/DestinationCalendarSelector"; - -import DisconnectIntegration from "./DisconnectIntegration"; -import IntegrationListItem from "./IntegrationListItem"; -import SubHeadingTitleWithConnections from "./SubHeadingTitleWithConnections"; - -type Props = { - onChanged: () => unknown | Promise; - fromOnboarding?: boolean; -}; - -function CalendarSwitch(props: { - type: string; - externalId: string; - title: string; - defaultSelected: boolean; -}) { - const utils = trpc.useContext(); - - const mutation = useMutation< - unknown, - unknown, - { - isOn: boolean; - } - >( - async ({ isOn }) => { - const body = { - integration: props.type, - externalId: props.externalId, - }; - if (isOn) { - const res = await fetch("/api/availability/calendar", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(body), - }); - if (!res.ok) { - throw new Error("Something went wrong"); - } - } else { - const res = await fetch("/api/availability/calendar", { - method: "DELETE", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(body), - }); - - if (!res.ok) { - throw new Error("Something went wrong"); - } - } - }, - { - async onSettled() { - await utils.viewer.integrations.invalidate(); - }, - onError() { - showToast(`Something went wrong when toggling "${props.title}""`, "error"); - }, - } - ); - return ( -
- { - mutation.mutate({ isOn }); - }} - /> -
- ); -} - -function CalendarList(props: Props) { - const { t } = useLocale(); - const query = trpc.viewer.integrations.useQuery({ variant: "calendar", onlyInstalled: false }); - - return ( - ( - - {data.items.map((item) => ( - ( - - )} - onChanged={() => props.onChanged()} - /> - } - /> - ))} - - )} - /> - ); -} - -function ConnectedCalendarsList(props: Props) { - const { t } = useLocale(); - const query = trpc.viewer.connectedCalendars.useQuery(undefined, { - suspense: true, - trpc: {}, - }); - const { fromOnboarding } = props; - return ( - null} - success={({ data }) => { - if (!data.connectedCalendars.length) { - return null; - } - return ( - - {data.connectedCalendars.map((item) => ( - - {item.calendars ? ( - ( - - )} - onOpenChange={props.onChanged} - /> - }> - {!fromOnboarding && ( - <> -

{t("toggle_calendars_conflict")}

-
    - {item.calendars.map((cal) => ( - - ))} -
- - )} -
- ) : ( - ( - - )} - onOpenChange={() => props.onChanged()} - /> - } - /> - )} -
- ))} -
- ); - }} - /> - ); -} - -export function CalendarListContainer(props: { - heading?: boolean; - items?: RouterOutputs["viewer"]["integrations"]["items"]; - fromOnboarding?: boolean; -}) { - const { t } = useLocale(); - const { heading = true, fromOnboarding } = props; - const utils = trpc.useContext(); - const onChanged = () => - Promise.allSettled([ - utils.viewer.integrations.invalidate( - { variant: "calendar", onlyInstalled: true }, - { - exact: true, - } - ), - utils.viewer.connectedCalendars.invalidate(), - ]); - const query = trpc.viewer.connectedCalendars.useQuery(); - const installedCalendars = trpc.viewer.integrations.useQuery({ variant: "calendar", onlyInstalled: true }); - const mutation = trpc.viewer.setDestinationCalendar.useMutation(); - return ( - } - success={({ data }) => { - return ( - <> - {(!!data.connectedCalendars.length || !!installedCalendars.data?.items.length) && ( - <> - {heading && ( - - } - subtitle={t("configure_how_your_event_types_interact")} - actions={ -
-
- -
- - {!!data.connectedCalendars.length && ( -
- -
- )} -
- } - /> - )} - - - )} - {fromOnboarding && ( - <> - {!!query.data?.connectedCalendars.length && ( - } - /> - )} - - - )} - - ); - }} - /> - ); -} diff --git a/apps/web/components/integrations/DisconnectIntegration.tsx b/apps/web/components/integrations/DisconnectIntegration.tsx deleted file mode 100644 index bffa40e32c..0000000000 --- a/apps/web/components/integrations/DisconnectIntegration.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { useState } from "react"; - -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { trpc } from "@calcom/trpc/react"; -import ConfirmationDialogContent from "@calcom/ui/ConfirmationDialogContent"; -import { Dialog } from "@calcom/ui/Dialog"; -import { ButtonProps } from "@calcom/ui/components/button"; -import showToast from "@calcom/ui/v2/core/notifications"; - -export default function DisconnectIntegration(props: { - /** Integration credential id */ - id: number; - externalId?: string; - render: (renderProps: ButtonProps) => JSX.Element; - onOpenChange: (isOpen: boolean) => unknown | Promise; -}) { - const { id, externalId = "" } = props; - const { t } = useLocale(); - const [modalOpen, setModalOpen] = useState(false); - - const mutation = trpc.viewer.deleteCredential.useMutation({ - onSettled: async () => { - await props.onOpenChange(modalOpen); - }, - onSuccess: () => { - showToast("Integration deleted successfully", "success"); - setModalOpen(false); - }, - onError: () => { - throw new Error("Something went wrong"); - }, - }); - - return ( - <> - - { - mutation.mutate({ id, externalId }); - }}> - {t("are_you_sure_you_want_to_remove_this_app")} - - - {props.render({ - onClick() { - setModalOpen(true); - }, - disabled: modalOpen, - loading: mutation.isLoading, - })} - - ); -} diff --git a/apps/web/components/integrations/IntegrationListItem.tsx b/apps/web/components/integrations/IntegrationListItem.tsx deleted file mode 100644 index 2b29c6c32f..0000000000 --- a/apps/web/components/integrations/IntegrationListItem.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import Link from "next/link"; -import { ReactNode } from "react"; - -import { ListItem, ListItemText, ListItemTitle } from "@calcom/ui/List"; - -import classNames from "@lib/classNames"; - -function IntegrationListItem(props: { - imageSrc?: string; - slug: string; - name?: string; - title?: string; - description: string; - actions?: ReactNode; - children?: ReactNode; - logo: string; -}): JSX.Element { - const title = props.name || props.title; - return ( - -
- { - // eslint-disable-next-line @next/next/no-img-element - props.logo && {title} - } -
- - {props.name || title} - - {props.description} -
-
{props.actions}
-
- {props.children &&
{props.children}
} -
- ); -} - -export default IntegrationListItem; diff --git a/apps/web/components/integrations/SubHeadingTitleWithConnections.tsx b/apps/web/components/integrations/SubHeadingTitleWithConnections.tsx index 8effb21250..44178c6aa5 100644 --- a/apps/web/components/integrations/SubHeadingTitleWithConnections.tsx +++ b/apps/web/components/integrations/SubHeadingTitleWithConnections.tsx @@ -1,6 +1,6 @@ import { ReactNode } from "react"; -import { Badge } from "@calcom/ui/components/badge"; +import { Badge } from "@calcom/ui"; function pluralize(opts: { num: number; plural: string; singular: string }) { if (opts.num === 0) { diff --git a/apps/web/components/pages/eventtypes/CustomInputTypeForm.tsx b/apps/web/components/pages/eventtypes/CustomInputTypeForm.tsx index 063f84b613..b342c279d7 100644 --- a/apps/web/components/pages/eventtypes/CustomInputTypeForm.tsx +++ b/apps/web/components/pages/eventtypes/CustomInputTypeForm.tsx @@ -2,7 +2,7 @@ import { EventTypeCustomInput, EventTypeCustomInputType } from "@prisma/client"; import React, { FC } from "react"; import { Controller, SubmitHandler, useForm, useWatch } from "react-hook-form"; -import Button from "@calcom/ui/Button"; +import { Button } from "@calcom/ui"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/components/security/ChangePasswordSection.tsx b/apps/web/components/security/ChangePasswordSection.tsx index 1e01411cea..93cfce7e2e 100644 --- a/apps/web/components/security/ChangePasswordSection.tsx +++ b/apps/web/components/security/ChangePasswordSection.tsx @@ -1,9 +1,8 @@ -import React, { SyntheticEvent, useState } from "react"; +import { SyntheticEvent, useState } from "react"; import { ErrorCode } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Button, showToast } from "@calcom/ui"; const ChangePasswordSection = () => { const [oldPassword, setOldPassword] = useState(""); diff --git a/apps/web/components/security/DisableTwoFactorModal.tsx b/apps/web/components/security/DisableTwoFactorModal.tsx index d4923fdd37..0a43f027a2 100644 --- a/apps/web/components/security/DisableTwoFactorModal.tsx +++ b/apps/web/components/security/DisableTwoFactorModal.tsx @@ -3,10 +3,7 @@ import { useForm } from "react-hook-form"; import { ErrorCode } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; -import { Dialog, DialogContent } from "@calcom/ui/Dialog"; -import { PasswordField } from "@calcom/ui/components/form"; -import { Form, Label } from "@calcom/ui/form/fields"; +import { Button, Dialog, DialogContent, Form, Label, PasswordField } from "@calcom/ui"; import TwoFactor from "@components/auth/TwoFactor"; diff --git a/apps/web/components/security/DisableUserImpersonation.tsx b/apps/web/components/security/DisableUserImpersonation.tsx index 2c0cf604d2..fcb540e8d2 100644 --- a/apps/web/components/security/DisableUserImpersonation.tsx +++ b/apps/web/components/security/DisableUserImpersonation.tsx @@ -1,8 +1,6 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import Button from "@calcom/ui/Button"; -import { Badge } from "@calcom/ui/components/badge"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Badge, Button, showToast } from "@calcom/ui"; const DisableUserImpersonation = ({ disableImpersonation }: { disableImpersonation: boolean }) => { const utils = trpc.useContext(); diff --git a/apps/web/components/security/EnableTwoFactorModal.tsx b/apps/web/components/security/EnableTwoFactorModal.tsx index 653f575b46..9514da1535 100644 --- a/apps/web/components/security/EnableTwoFactorModal.tsx +++ b/apps/web/components/security/EnableTwoFactorModal.tsx @@ -3,9 +3,7 @@ import { useForm } from "react-hook-form"; import { ErrorCode } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; -import { Dialog, DialogContent } from "@calcom/ui/Dialog"; -import { Form } from "@calcom/ui/components/form"; +import { Button, Dialog, DialogContent, Form } from "@calcom/ui"; import TwoFactor from "@components/auth/TwoFactor"; diff --git a/apps/web/components/security/TwoFactorAuthSection.tsx b/apps/web/components/security/TwoFactorAuthSection.tsx index a48550fae9..c53feff3bf 100644 --- a/apps/web/components/security/TwoFactorAuthSection.tsx +++ b/apps/web/components/security/TwoFactorAuthSection.tsx @@ -1,7 +1,6 @@ import { useState } from "react"; -import Button from "@calcom/ui/Button"; -import { Badge } from "@calcom/ui/components/badge"; +import { Badge, Button } from "@calcom/ui"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/components/security/TwoFactorModalHeader.tsx b/apps/web/components/security/TwoFactorModalHeader.tsx index 1df439cc74..44c251b7a3 100644 --- a/apps/web/components/security/TwoFactorModalHeader.tsx +++ b/apps/web/components/security/TwoFactorModalHeader.tsx @@ -1,6 +1,4 @@ -import React from "react"; - -import { ShieldCheckIcon } from "@calcom/ui/Icon"; +import { ShieldCheckIcon } from "@calcom/ui"; const TwoFactorModalHeader = ({ title, description }: { title: string; description: string }) => { return ( diff --git a/apps/web/components/settings/CalendarSwitch.tsx b/apps/web/components/settings/CalendarSwitch.tsx index 9110f98922..70b90d6d02 100644 --- a/apps/web/components/settings/CalendarSwitch.tsx +++ b/apps/web/components/settings/CalendarSwitch.tsx @@ -2,10 +2,7 @@ import { useMutation } from "@tanstack/react-query"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Badge } from "@calcom/ui/components/badge"; -import Switch from "@calcom/ui/v2/core/Switch"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Badge, Icon, showToast, Switch } from "@calcom/ui"; export function CalendarSwitch(props: { type: string; diff --git a/apps/web/components/settings/DisableTwoFactorModal.tsx b/apps/web/components/settings/DisableTwoFactorModal.tsx index 1a1a68d352..809059ac97 100644 --- a/apps/web/components/settings/DisableTwoFactorModal.tsx +++ b/apps/web/components/settings/DisableTwoFactorModal.tsx @@ -3,10 +3,7 @@ import { useForm } from "react-hook-form"; import { ErrorCode } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button } from "@calcom/ui/components/button"; -import { Form, Label } from "@calcom/ui/components/form"; -import { PasswordField } from "@calcom/ui/components/form"; -import { Dialog, DialogContent } from "@calcom/ui/v2/core/Dialog"; +import { Button, Dialog, DialogContent, Form, Label, PasswordField } from "@calcom/ui"; import TwoFactor from "@components/auth/TwoFactor"; diff --git a/apps/web/components/settings/EnableTwoFactorModal.tsx b/apps/web/components/settings/EnableTwoFactorModal.tsx index d094720fc2..7f3f9f1b8d 100644 --- a/apps/web/components/settings/EnableTwoFactorModal.tsx +++ b/apps/web/components/settings/EnableTwoFactorModal.tsx @@ -3,9 +3,7 @@ import { useForm } from "react-hook-form"; import { ErrorCode } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button } from "@calcom/ui/components/button"; -import { Form, TextField } from "@calcom/ui/components/form"; -import { Dialog, DialogContent } from "@calcom/ui/v2/core/Dialog"; +import { Button, Dialog, DialogContent, Form, TextField } from "@calcom/ui"; import TwoFactor from "@components/auth/TwoFactor"; diff --git a/apps/web/components/team/TeamSettings.tsx b/apps/web/components/team/TeamSettings.tsx index 1ecdf6709f..bebb0fbdb2 100644 --- a/apps/web/components/team/TeamSettings.tsx +++ b/apps/web/components/team/TeamSettings.tsx @@ -4,11 +4,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { objectKeys } from "@calcom/lib/objectKeys"; import { TeamWithMembers } from "@calcom/lib/server/queries/teams"; import { trpc } from "@calcom/trpc/react"; -import { Alert } from "@calcom/ui/Alert"; -import Button from "@calcom/ui/Button"; -import { Icon } from "@calcom/ui/Icon"; -import { TextField } from "@calcom/ui/form/fields"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Alert, Button, Icon, showToast, TextField } from "@calcom/ui"; import ImageUploader from "@components/ImageUploader"; import SettingInputContainer from "@components/ui/SettingInputContainer"; diff --git a/apps/web/components/team/TeamSettingsRightSidebar.tsx b/apps/web/components/team/TeamSettingsRightSidebar.tsx index 38acac4189..18742a5f95 100644 --- a/apps/web/components/team/TeamSettingsRightSidebar.tsx +++ b/apps/web/components/team/TeamSettingsRightSidebar.tsx @@ -1,14 +1,10 @@ import { MembershipRole } from "@prisma/client"; import Link from "next/link"; import { useRouter } from "next/router"; -import React from "react"; import { TeamWithMembers } from "@calcom/lib/server/queries/teams"; import { trpc } from "@calcom/trpc/react"; -import ConfirmationDialogContent from "@calcom/ui/ConfirmationDialogContent"; -import { Dialog, DialogTrigger } from "@calcom/ui/Dialog"; -import { Icon } from "@calcom/ui/Icon"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { ConfirmationDialogContent, Dialog, DialogTrigger, Icon, showToast } from "@calcom/ui"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/components/team/screens/Team.tsx b/apps/web/components/team/screens/Team.tsx index 9a32b05d57..c03d6a50aa 100644 --- a/apps/web/components/team/screens/Team.tsx +++ b/apps/web/components/team/screens/Team.tsx @@ -2,7 +2,7 @@ import Link from "next/link"; import { TeamPageProps } from "pages/team/[slug]"; import { WEBAPP_URL } from "@calcom/lib/constants"; -import { Avatar } from "@calcom/ui/components"; +import { Avatar } from "@calcom/ui"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/components/ui/EditableHeading.tsx b/apps/web/components/ui/EditableHeading.tsx index f55dd6f4e5..57b723f1c7 100644 --- a/apps/web/components/ui/EditableHeading.tsx +++ b/apps/web/components/ui/EditableHeading.tsx @@ -2,7 +2,7 @@ import classNames from "classnames"; import React, { useState } from "react"; import { ControllerRenderProps } from "react-hook-form"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; const EditableHeading = function EditableHeading({ value, diff --git a/apps/web/components/ui/InfoBadge.tsx b/apps/web/components/ui/InfoBadge.tsx index 63e3d42eb7..f5b9577350 100644 --- a/apps/web/components/ui/InfoBadge.tsx +++ b/apps/web/components/ui/InfoBadge.tsx @@ -1,5 +1,4 @@ -import { Icon } from "@calcom/ui/Icon"; -import { Tooltip } from "@calcom/ui/Tooltip"; +import { Icon, Tooltip } from "@calcom/ui"; export default function InfoBadge({ content }: { content: string }) { return ( diff --git a/apps/web/components/ui/ModalContainer.tsx b/apps/web/components/ui/ModalContainer.tsx index 4577b11656..03d061fc11 100644 --- a/apps/web/components/ui/ModalContainer.tsx +++ b/apps/web/components/ui/ModalContainer.tsx @@ -1,7 +1,7 @@ import classNames from "classnames"; import React, { PropsWithChildren } from "react"; -import { Dialog, DialogContent } from "@calcom/ui/Dialog"; +import { Dialog, DialogContent } from "@calcom/ui"; export default function ModalContainer( props: PropsWithChildren<{ diff --git a/apps/web/components/ui/NoCalendarConnectedAlert/__tests__/NoCalendarConnectedAlert.test.tsx b/apps/web/components/ui/NoCalendarConnectedAlert/__tests__/NoCalendarConnectedAlert.test.tsx deleted file mode 100644 index 60390a4253..0000000000 --- a/apps/web/components/ui/NoCalendarConnectedAlert/__tests__/NoCalendarConnectedAlert.test.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { cleanup, screen, render } from "@testing-library/react"; - -import { trpc } from "@calcom/trpc/react"; - -import NoCalendarConnectedAlert from ".."; - -// TODO: useQuery mock is not working -describe.skip("Testing NoCalendarConnectedAlert", () => { - describe("Render test", () => { - it("should render without crashing", () => { - // Disabled as its asking for full trpc useQuery response - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - jest.spyOn(trpc, "useQuery").mockReturnValue({ - isSuccess: true, - isFetched: true, - data: { connectedCalendars: [], destinationCalendar: undefined }, - }); - render(); - - const testProp = screen.getByText("missing_connected_calendar"); - expect(testProp).toBeTruthy(); - }); - - it("should not render", () => { - // Disabled as its asking for full trpc useQuery response - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - jest.spyOn(trpc, "useQuery").mockReturnValue({ - isSuccess: true, - isFetched: true, - data: { connectedCalendars: [1, 2], destinationCalendar: { a: "test" } }, - }); - render(); - - expect(screen.queryByText("missing_connected_calendar")).toBeNull(); - }); - - afterEach(cleanup); - }); -}); diff --git a/apps/web/components/ui/NoCalendarConnectedAlert/index.tsx b/apps/web/components/ui/NoCalendarConnectedAlert/index.tsx deleted file mode 100644 index 3da363b859..0000000000 --- a/apps/web/components/ui/NoCalendarConnectedAlert/index.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { useTranslation } from "next-i18next"; -import { Trans } from "next-i18next"; - -import { trpc } from "@calcom/trpc/react"; -// @TODO: alert v2 -import { Alert } from "@calcom/ui/Alert"; - -import { LinkText } from "../LinkText"; - -const NoCalendarConnectedAlert = () => { - const { t } = useTranslation(); - - const query = trpc.viewer.connectedCalendars.useQuery(); - // We are not gonna show this alert till we fetch data from DB - let defaultCalendarConnected = true; - if (query.isSuccess && query.isFetched && query.data) { - defaultCalendarConnected = - query.data.connectedCalendars.length > 0 && query.data.destinationCalendar !== undefined; - } - return ( - <> - {!defaultCalendarConnected && ( - {t("missing_connected_calendar") as string}} - message={ - - You can connect your calendar from - - here - - . - - } - /> - )} - - ); -}; -export default NoCalendarConnectedAlert; diff --git a/apps/web/components/ui/TableActions.tsx b/apps/web/components/ui/TableActions.tsx index e29a9d6447..08352a8254 100644 --- a/apps/web/components/ui/TableActions.tsx +++ b/apps/web/components/ui/TableActions.tsx @@ -1,13 +1,14 @@ import React, { FC } from "react"; -import Dropdown, { +import { + Button, + Dropdown, DropdownMenuContent, DropdownMenuItem, - DropdownMenuTrigger, DropdownMenuPortal, -} from "@calcom/ui/Dropdown"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; + DropdownMenuTrigger, + Icon, +} from "@calcom/ui"; import { SVGComponent } from "@lib/types/SVGComponent"; diff --git a/apps/web/components/ui/UsernameAvailability/PremiumTextfield.tsx b/apps/web/components/ui/UsernameAvailability/PremiumTextfield.tsx index 40277e66ba..08030ad41c 100644 --- a/apps/web/components/ui/UsernameAvailability/PremiumTextfield.tsx +++ b/apps/web/components/ui/UsernameAvailability/PremiumTextfield.tsx @@ -1,7 +1,7 @@ import classNames from "classnames"; import { debounce, noop } from "lodash"; import { useRouter } from "next/router"; -import { RefCallback, useMemo, useEffect, useState } from "react"; +import { RefCallback, useEffect, useMemo, useState } from "react"; import { getPremiumPlanMode, getPremiumPlanPriceValue } from "@calcom/app-store/stripepayment/lib/utils"; import { fetchUsername } from "@calcom/lib/fetchUsername"; @@ -11,10 +11,17 @@ import { User } from "@calcom/prisma/client"; import { TRPCClientErrorLike } from "@calcom/trpc/client"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; import type { AppRouter } from "@calcom/trpc/server/routers/_app"; -import { Dialog, DialogClose, DialogContent, DialogHeader } from "@calcom/ui/Dialog"; -import { Icon, StarIconSolid } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; -import { Input, Label } from "@calcom/ui/components/form"; +import { + Button, + Dialog, + DialogClose, + DialogContent, + DialogHeader, + Icon, + Input, + Label, + StarIconSolid, +} from "@calcom/ui"; export enum UsernameChangeStatusEnum { NORMAL = "NORMAL", diff --git a/apps/web/components/ui/UsernameAvailability/UsernameTextfield.tsx b/apps/web/components/ui/UsernameAvailability/UsernameTextfield.tsx index 1e1502612b..4007eba87f 100644 --- a/apps/web/components/ui/UsernameAvailability/UsernameTextfield.tsx +++ b/apps/web/components/ui/UsernameAvailability/UsernameTextfield.tsx @@ -7,9 +7,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { TRPCClientErrorLike } from "@calcom/trpc/client"; import { trpc } from "@calcom/trpc/react"; import { AppRouter } from "@calcom/trpc/server/routers/_app"; -import { Dialog, DialogClose, DialogContent, DialogHeader } from "@calcom/ui/Dialog"; -import { Icon } from "@calcom/ui/Icon"; -import { Button, Input, Label } from "@calcom/ui/components"; +import { Button, Dialog, DialogClose, DialogContent, DialogHeader, Icon, Input, Label } from "@calcom/ui"; interface ICustomUsernameProps { currentUsername: string | undefined; diff --git a/apps/web/components/ui/colorpicker.tsx b/apps/web/components/ui/colorpicker.tsx index 32f28e2793..214ed6a6f8 100644 --- a/apps/web/components/ui/colorpicker.tsx +++ b/apps/web/components/ui/colorpicker.tsx @@ -3,7 +3,7 @@ import { useEffect } from "react"; import { HexColorInput, HexColorPicker } from "react-colorful"; import { isValidHexCode, fallBackHex } from "@calcom/lib/CustomBranding"; -import { Swatch } from "@calcom/ui/v2"; +import { Swatch } from "@calcom/ui"; type Handler = (event: MouseEvent | Event) => void; function useEventListener< diff --git a/apps/web/components/ui/form/CheckedSelect.tsx b/apps/web/components/ui/form/CheckedSelect.tsx index 95fe2232d0..793dac55a8 100644 --- a/apps/web/components/ui/form/CheckedSelect.tsx +++ b/apps/web/components/ui/form/CheckedSelect.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Props } from "react-select"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; import Avatar from "@components/ui/Avatar"; import Select from "@components/ui/form/Select"; diff --git a/apps/web/components/ui/form/DatePicker.tsx b/apps/web/components/ui/form/DatePicker.tsx index d4a2dbccd7..3992ff8e9e 100644 --- a/apps/web/components/ui/form/DatePicker.tsx +++ b/apps/web/components/ui/form/DatePicker.tsx @@ -3,7 +3,7 @@ import "react-calendar/dist/Calendar.css"; import "react-date-picker/dist/DatePicker.css"; import PrimitiveDatePicker from "react-date-picker/dist/entry.nostyle"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; import classNames from "@lib/classNames"; diff --git a/apps/web/components/ui/form/DateRangePicker.tsx b/apps/web/components/ui/form/DateRangePicker.tsx index b99633898e..fa36cba002 100644 --- a/apps/web/components/ui/form/DateRangePicker.tsx +++ b/apps/web/components/ui/form/DateRangePicker.tsx @@ -4,7 +4,7 @@ import PrimitiveDateRangePicker from "@wojtekmaj/react-daterange-picker/dist/ent import React from "react"; import "react-calendar/dist/Calendar.css"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; type Props = { startDate: Date; diff --git a/apps/web/components/ui/form/radio-area/Select.tsx b/apps/web/components/ui/form/radio-area/Select.tsx index 7e67477cde..c205ddad05 100644 --- a/apps/web/components/ui/form/radio-area/Select.tsx +++ b/apps/web/components/ui/form/radio-area/Select.tsx @@ -1,7 +1,7 @@ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@radix-ui/react-collapsible"; import React from "react"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; import classNames from "@lib/classNames"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/lib/QueryCell.tsx b/apps/web/lib/QueryCell.tsx index 0b91c81cd2..fc4ea0e46c 100644 --- a/apps/web/lib/QueryCell.tsx +++ b/apps/web/lib/QueryCell.tsx @@ -12,8 +12,7 @@ import type { TRPCClientErrorLike } from "@calcom/trpc/client"; import type { DecorateProcedure } from "@calcom/trpc/react/shared"; import type { AnyQueryProcedure, inferProcedureInput, inferProcedureOutput } from "@calcom/trpc/server"; import type { AppRouter } from "@calcom/trpc/server/routers/_app"; -import { Alert } from "@calcom/ui/Alert"; -import Loader from "@calcom/ui/Loader"; +import { Alert, Loader } from "@calcom/ui"; import type { UseTRPCQueryOptions } from "@trpc/react-query/shared"; diff --git a/apps/web/lib/app-providers.tsx b/apps/web/lib/app-providers.tsx index e404b94315..276a2721de 100644 --- a/apps/web/lib/app-providers.tsx +++ b/apps/web/lib/app-providers.tsx @@ -10,7 +10,7 @@ import { ComponentProps, ReactNode } from "react"; import DynamicHelpscoutProvider from "@calcom/features/ee/support/lib/helpscout/providerDynamic"; import DynamicIntercomProvider from "@calcom/features/ee/support/lib/intercom/providerDynamic"; import { trpc } from "@calcom/trpc/react"; -import { MetaProvider } from "@calcom/ui/v2/core/Meta"; +import { MetaProvider } from "@calcom/ui"; import usePublicPage from "@lib/hooks/usePublicPage"; diff --git a/apps/web/pages/404.tsx b/apps/web/pages/404.tsx index 6b9edd33eb..3dd1d8428f 100644 --- a/apps/web/pages/404.tsx +++ b/apps/web/pages/404.tsx @@ -4,7 +4,7 @@ import { useRouter } from "next/router"; import React, { useEffect, useState } from "react"; import { DEVELOPER_DOCS, DOCS_URL, JOIN_SLACK, WEBSITE_URL } from "@calcom/lib/constants"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/pages/500.tsx b/apps/web/pages/500.tsx index f92f45acae..13abf107b9 100644 --- a/apps/web/pages/500.tsx +++ b/apps/web/pages/500.tsx @@ -1,7 +1,7 @@ import Head from "next/head"; import { WEBSITE_URL } from "@calcom/lib/constants"; -import Button from "@calcom/ui/Button"; +import { Button } from "@calcom/ui"; export default function Error500() { return ( diff --git a/apps/web/pages/[user].tsx b/apps/web/pages/[user].tsx index d88e9d7a87..fda47613c9 100644 --- a/apps/web/pages/[user].tsx +++ b/apps/web/pages/[user].tsx @@ -1,4 +1,3 @@ -import { UserPlan } from "@prisma/client"; import classNames from "classnames"; import { GetServerSidePropsContext } from "next"; import dynamic from "next/dynamic"; @@ -27,7 +26,7 @@ import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calco import prisma from "@calcom/prisma"; import { baseEventTypeSelect } from "@calcom/prisma/selects"; import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; -import { BadgeCheckIcon, Icon } from "@calcom/ui/Icon"; +import { BadgeCheckIcon, EventTypeDescriptionLazy as EventTypeDescription, Icon } from "@calcom/ui"; import { useExposePlanGlobally } from "@lib/hooks/useExposePlanGlobally"; import { inferSSRProps } from "@lib/types/inferSSRProps"; @@ -38,7 +37,6 @@ import { AvatarSSR } from "@components/ui/AvatarSSR"; import { ssrInit } from "@server/lib/ssr"; -const EventTypeDescription = dynamic(() => import("@calcom/ui/v2/modules/event-types/EventTypeDescription")); const HeadSeo = dynamic(() => import("@components/seo/head-seo")); export default function User(props: inferSSRProps & EmbedProps) { const { users, profile, eventTypes, isDynamicGroup, dynamicNames, dynamicUsernames, isSingleUser } = props; diff --git a/apps/web/pages/apps/categories/[category].tsx b/apps/web/pages/apps/categories/[category].tsx index 966ee1d35d..a8a8dc5c46 100644 --- a/apps/web/pages/apps/categories/[category].tsx +++ b/apps/web/pages/apps/categories/[category].tsx @@ -6,9 +6,7 @@ import { useRouter } from "next/router"; import { getAppRegistry } from "@calcom/app-store/_appRegistry"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import prisma from "@calcom/prisma"; -import { SkeletonText } from "@calcom/ui/v2"; -import Shell from "@calcom/ui/v2/core/Shell"; -import AppCard from "@calcom/ui/v2/core/apps/AppCard"; +import { AppCard, Shell, SkeletonText } from "@calcom/ui"; export default function Apps({ apps }: InferGetStaticPropsType) { const { t, isLocaleReady } = useLocale(); diff --git a/apps/web/pages/apps/categories/index.tsx b/apps/web/pages/apps/categories/index.tsx index b9a5bb9726..98fe43ade3 100644 --- a/apps/web/pages/apps/categories/index.tsx +++ b/apps/web/pages/apps/categories/index.tsx @@ -3,9 +3,7 @@ import Link from "next/link"; import { getAppRegistry } from "@calcom/app-store/_appRegistry"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; -import Shell from "@calcom/ui/Shell"; -import { SkeletonText } from "@calcom/ui/v2"; +import { Icon, Shell, SkeletonText } from "@calcom/ui"; export default function Apps({ categories }: InferGetStaticPropsType) { const { t, isLocaleReady } = useLocale(); diff --git a/apps/web/pages/apps/index.tsx b/apps/web/pages/apps/index.tsx index 886fd25b28..51382a5b1a 100644 --- a/apps/web/pages/apps/index.tsx +++ b/apps/web/pages/apps/index.tsx @@ -4,10 +4,7 @@ import { getAppRegistry, getAppRegistryWithCredentials } from "@calcom/app-store import { getSession } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { AppCategories } from "@calcom/prisma/client"; -import AllApps from "@calcom/ui/v2/core/apps/AllApps"; -import AppStoreCategories from "@calcom/ui/v2/core/apps/Categories"; -import TrendingAppsSlider from "@calcom/ui/v2/core/apps/TrendingAppsSlider"; -import AppsLayout from "@calcom/ui/v2/core/layouts/AppsLayout"; +import { AllApps, AppsLayout, AppStoreCategories, TrendingAppsSlider } from "@calcom/ui"; import { ssgInit } from "@server/lib/ssg"; diff --git a/apps/web/pages/apps/installed/[category].tsx b/apps/web/pages/apps/installed/[category].tsx index da92ec8117..59f868d3b1 100644 --- a/apps/web/pages/apps/installed/[category].tsx +++ b/apps/web/pages/apps/installed/[category].tsx @@ -8,20 +8,22 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; import { App } from "@calcom/types/App"; import { AppGetServerSidePropsContext } from "@calcom/types/AppGetServerSideProps"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; -import { Alert } from "@calcom/ui/v2/core/Alert"; -import EmptyScreen from "@calcom/ui/v2/core/EmptyScreen"; -import { List } from "@calcom/ui/v2/core/List"; -import { ShellSubHeading } from "@calcom/ui/v2/core/Shell"; -import InstalledAppsLayout from "@calcom/ui/v2/core/layouts/InstalledAppsLayout"; -import DisconnectIntegration from "@calcom/ui/v2/modules/integrations/DisconnectIntegration"; +import { + Alert, + Button, + DisconnectIntegration, + EmptyScreen, + Icon, + InstalledAppsLayout, + List, + ShellSubHeading, + SkeletonLoader, +} from "@calcom/ui"; import { QueryCell } from "@lib/QueryCell"; import { CalendarListContainer } from "@components/apps/CalendarListContainer"; import IntegrationListItem from "@components/apps/IntegrationListItem"; -import SkeletonLoader from "@components/availability/SkeletonLoader"; function ConnectOrDisconnectIntegrationButton(props: { credentialIds: number[]; diff --git a/apps/web/pages/auth/error.tsx b/apps/web/pages/auth/error.tsx index ab4782c86f..2ebb336dc6 100644 --- a/apps/web/pages/auth/error.tsx +++ b/apps/web/pages/auth/error.tsx @@ -4,9 +4,7 @@ import { useRouter } from "next/router"; import z from "zod"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; -import { Icon } from "@calcom/ui/Icon"; -import { SkeletonText } from "@calcom/ui/v2"; +import { Button, Icon, SkeletonText } from "@calcom/ui"; import AuthContainer from "@components/ui/AuthContainer"; diff --git a/apps/web/pages/auth/forgot-password/[id].tsx b/apps/web/pages/auth/forgot-password/[id].tsx index a48d286cfd..5b42351893 100644 --- a/apps/web/pages/auth/forgot-password/[id].tsx +++ b/apps/web/pages/auth/forgot-password/[id].tsx @@ -7,7 +7,7 @@ import React, { useMemo } from "react"; import dayjs from "@calcom/dayjs"; import prisma from "@calcom/prisma"; -import { Button, TextField } from "@calcom/ui/components"; +import { Button, TextField } from "@calcom/ui"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/pages/auth/forgot-password/index.tsx b/apps/web/pages/auth/forgot-password/index.tsx index 7a93cfcf1c..f5f33b18e5 100644 --- a/apps/web/pages/auth/forgot-password/index.tsx +++ b/apps/web/pages/auth/forgot-password/index.tsx @@ -5,7 +5,7 @@ import Link from "next/link"; import { useRouter } from "next/router"; import React, { SyntheticEvent } from "react"; -import { Button, EmailField } from "@calcom/ui/components"; +import { Button, EmailField } from "@calcom/ui"; import { getSession } from "@lib/auth"; import { useLocale } from "@lib/hooks/useLocale"; diff --git a/apps/web/pages/auth/login.tsx b/apps/web/pages/auth/login.tsx index 2923122509..8a8228649c 100644 --- a/apps/web/pages/auth/login.tsx +++ b/apps/web/pages/auth/login.tsx @@ -4,7 +4,7 @@ import { getCsrfToken, signIn } from "next-auth/react"; import Link from "next/link"; import { useRouter } from "next/router"; import { useState } from "react"; -import { useForm, FormProvider } from "react-hook-form"; +import { FormProvider, useForm } from "react-hook-form"; import { FaGoogle } from "react-icons/fa"; import { isSAMLLoginEnabled, samlProductID, samlTenantID } from "@calcom/features/ee/sso/lib/saml"; @@ -12,11 +12,7 @@ import { getSafeRedirectUrl } from "@calcom/lib/getSafeRedirectUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry"; import prisma from "@calcom/prisma"; -import { Icon } from "@calcom/ui"; -import { Alert } from "@calcom/ui/Alert"; -import { Button } from "@calcom/ui/components"; -import { EmailField, PasswordField } from "@calcom/ui/components/form"; -import SAMLLogin from "@calcom/ui/v2/modules/auth/SAMLLogin"; +import { Alert, Button, EmailField, Icon, PasswordField, SAMLLogin } from "@calcom/ui"; import { ErrorCode, getSession } from "@lib/auth"; import { WEBAPP_URL, WEBSITE_URL } from "@lib/config/constants"; diff --git a/apps/web/pages/auth/logout.tsx b/apps/web/pages/auth/logout.tsx index f822092768..95038fc8f7 100644 --- a/apps/web/pages/auth/logout.tsx +++ b/apps/web/pages/auth/logout.tsx @@ -5,8 +5,7 @@ import { useEffect } from "react"; import { WEBSITE_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; +import { Button, Icon } from "@calcom/ui"; import { inferSSRProps } from "@lib/types/inferSSRProps"; diff --git a/apps/web/pages/auth/setup.tsx b/apps/web/pages/auth/setup.tsx index fbeb788d82..d01a7ef56f 100644 --- a/apps/web/pages/auth/setup.tsx +++ b/apps/web/pages/auth/setup.tsx @@ -11,8 +11,7 @@ import { isPasswordValid } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import prisma from "@calcom/prisma"; import { inferSSRProps } from "@calcom/types/inferSSRProps"; -import { TextField, EmailField, PasswordField, Label } from "@calcom/ui/components/form"; -import WizardForm from "@calcom/ui/v2/core/WizardForm"; +import { EmailField, Label, PasswordField, TextField, WizardForm } from "@calcom/ui"; import { ssrInit } from "@server/lib/ssr"; diff --git a/apps/web/pages/auth/signin.tsx b/apps/web/pages/auth/signin.tsx index 916cbcb994..0d0e78f173 100644 --- a/apps/web/pages/auth/signin.tsx +++ b/apps/web/pages/auth/signin.tsx @@ -1,7 +1,7 @@ import { GetServerSidePropsContext } from "next"; import { getProviders, signIn, getSession, getCsrfToken } from "next-auth/react"; -import { Button } from "@calcom/ui/components/button"; +import { Button } from "@calcom/ui"; type Provider = { name: string; diff --git a/apps/web/pages/auth/verify.tsx b/apps/web/pages/auth/verify.tsx index bc41de09e4..e4ee54f77e 100644 --- a/apps/web/pages/auth/verify.tsx +++ b/apps/web/pages/auth/verify.tsx @@ -8,8 +8,7 @@ import z from "zod"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui/components"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Button, showToast } from "@calcom/ui"; import Loader from "@components/Loader"; diff --git a/apps/web/pages/availability/[schedule].tsx b/apps/web/pages/availability/[schedule].tsx index 2afb9bb300..9e24feed75 100644 --- a/apps/web/pages/availability/[schedule].tsx +++ b/apps/web/pages/availability/[schedule].tsx @@ -10,15 +10,19 @@ import { stringOrNumber } from "@calcom/prisma/zod-utils"; import { trpc } from "@calcom/trpc/react"; import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery"; import type { Schedule as ScheduleType } from "@calcom/types/schedule"; -import { Icon } from "@calcom/ui"; -import { Button } from "@calcom/ui/components/button"; -import { Form, Label } from "@calcom/ui/components/form"; -import Shell from "@calcom/ui/v2/core/Shell"; -import Switch from "@calcom/ui/v2/core/Switch"; -import TimezoneSelect from "@calcom/ui/v2/core/TimezoneSelect"; -import VerticalDivider from "@calcom/ui/v2/core/VerticalDivider"; -import showToast from "@calcom/ui/v2/core/notifications"; -import { Skeleton, SkeletonText } from "@calcom/ui/v2/core/skeleton"; +import { + Button, + Form, + Icon, + Label, + Shell, + showToast, + Skeleton, + SkeletonText, + Switch, + TimezoneSelect, + VerticalDivider, +} from "@calcom/ui"; import { HttpError } from "@lib/core/http/error"; diff --git a/apps/web/pages/availability/index.tsx b/apps/web/pages/availability/index.tsx index bcf6208691..b650f55cd0 100644 --- a/apps/web/pages/availability/index.tsx +++ b/apps/web/pages/availability/index.tsx @@ -3,9 +3,7 @@ import { useAutoAnimate } from "@formkit/auto-animate/react"; import { NewScheduleButton, ScheduleListItem } from "@calcom/features/schedules"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import Shell from "@calcom/ui/Shell"; -import { EmptyScreen, showToast } from "@calcom/ui/v2"; +import { EmptyScreen, Icon, Shell, showToast } from "@calcom/ui"; import { withQuery } from "@lib/QueryCell"; import { HttpError } from "@lib/core/http/error"; diff --git a/apps/web/pages/availability/troubleshoot.tsx b/apps/web/pages/availability/troubleshoot.tsx index b63ad7d90f..bef2365538 100644 --- a/apps/web/pages/availability/troubleshoot.tsx +++ b/apps/web/pages/availability/troubleshoot.tsx @@ -3,8 +3,7 @@ import { useState } from "react"; import dayjs from "@calcom/dayjs"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import Shell from "@calcom/ui/Shell"; -import { SkeletonText } from "@calcom/ui/v2/core/skeleton"; +import { Shell, SkeletonText } from "@calcom/ui"; type User = RouterOutputs["viewer"]["me"]; diff --git a/apps/web/pages/bookings/[status].tsx b/apps/web/pages/bookings/[status].tsx index 14ddb1d1e0..7b427e3ef5 100644 --- a/apps/web/pages/bookings/[status].tsx +++ b/apps/web/pages/bookings/[status].tsx @@ -7,11 +7,7 @@ import { z } from "zod"; import { WipeMyCalActionButton } from "@calcom/app-store/wipemycalother/components"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterInputs, RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Alert } from "@calcom/ui/Alert"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components"; -import { EmptyScreen } from "@calcom/ui/v2"; -import BookingLayout from "@calcom/ui/v2/core/layouts/BookingLayout"; +import { Alert, BookingLayout, Button, EmptyScreen, Icon } from "@calcom/ui"; import { useInViewObserver } from "@lib/hooks/useInViewObserver"; diff --git a/apps/web/pages/cancel/success.tsx b/apps/web/pages/cancel/success.tsx index 1f5e674708..0342d952f1 100644 --- a/apps/web/pages/cancel/success.tsx +++ b/apps/web/pages/cancel/success.tsx @@ -3,8 +3,7 @@ import { useRouter } from "next/router"; import { z } from "zod"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; +import { Button, Icon } from "@calcom/ui"; import { HeadSeo } from "@components/seo/head-seo"; diff --git a/apps/web/pages/event-types/[type]/index.tsx b/apps/web/pages/event-types/[type]/index.tsx index 88d883405f..7a577ec2d9 100644 --- a/apps/web/pages/event-types/[type]/index.tsx +++ b/apps/web/pages/event-types/[type]/index.tsx @@ -9,8 +9,8 @@ import { z } from "zod"; import { StripeData } from "@calcom/app-store/stripepayment/lib/server"; import getApps, { getEventTypeAppData, getLocationOptions } from "@calcom/app-store/utils"; -import { LocationObject, EventLocationType } from "@calcom/core/location"; -import { parseRecurringEvent, parseBookingLimit, validateBookingLimitOrder } from "@calcom/lib"; +import { EventLocationType, LocationObject } from "@calcom/core/location"; +import { parseBookingLimit, parseRecurringEvent, validateBookingLimitOrder } from "@calcom/lib"; import { CAL_URL } from "@calcom/lib/constants"; import convertToNewDurationType from "@calcom/lib/convertToNewDurationType"; import findDurationType from "@calcom/lib/findDurationType"; @@ -20,8 +20,7 @@ import prisma from "@calcom/prisma"; import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; import { trpc } from "@calcom/trpc/react"; import type { BookingLimit, RecurringEvent } from "@calcom/types/Calendar"; -import { Form } from "@calcom/ui/form/fields"; -import { showToast } from "@calcom/ui/v2"; +import { Form, showToast } from "@calcom/ui"; import { asStringOrThrow } from "@lib/asStringOrNull"; import { getSession } from "@lib/auth"; diff --git a/apps/web/pages/event-types/index.tsx b/apps/web/pages/event-types/index.tsx index 0cbcd730f6..4c6c428106 100644 --- a/apps/web/pages/event-types/index.tsx +++ b/apps/web/pages/event-types/index.tsx @@ -6,23 +6,29 @@ import React, { Fragment, useEffect, useState } from "react"; import { CAL_URL, WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { TRPCClientError } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Button, ButtonGroup, Badge } from "@calcom/ui/components"; -import { Dialog, EmptyScreen, showToast, Switch, Tooltip } from "@calcom/ui/v2"; -import ConfirmationDialogContent from "@calcom/ui/v2/core/ConfirmationDialogContent"; -import Dropdown, { +import { RouterOutputs, trpc, TRPCClientError } from "@calcom/trpc/react"; +import { + Badge, + Button, + ButtonGroup, + ConfirmationDialogContent, + CreateEventTypeButton, + Dialog, + Dropdown, DropdownItem, DropdownMenuContent, DropdownMenuItem, + DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuTrigger, - DropdownMenuPortal, -} from "@calcom/ui/v2/core/Dropdown"; -import Shell from "@calcom/ui/v2/core/Shell"; -import CreateEventTypeButton from "@calcom/ui/v2/modules/event-types/CreateEventType"; -import EventTypeDescription from "@calcom/ui/v2/modules/event-types/EventTypeDescription"; + EmptyScreen, + EventTypeDescription, + Icon, + Shell, + showToast, + Switch, + Tooltip, +} from "@calcom/ui"; import { withQuery } from "@lib/QueryCell"; import { HttpError } from "@lib/core/http/error"; diff --git a/apps/web/pages/getting-started/[[...step]].tsx b/apps/web/pages/getting-started/[[...step]].tsx index 624a50917e..9603e6b85b 100644 --- a/apps/web/pages/getting-started/[[...step]].tsx +++ b/apps/web/pages/getting-started/[[...step]].tsx @@ -7,9 +7,7 @@ import { z } from "zod"; import { getSession } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { User } from "@calcom/prisma/client"; -import { Button } from "@calcom/ui/components/button"; -import { StepCard } from "@calcom/ui/v2/core/StepCard"; -import { Steps } from "@calcom/ui/v2/core/Steps"; +import { Button, StepCard, Steps } from "@calcom/ui"; import prisma from "@lib/prisma"; diff --git a/apps/web/pages/more.tsx b/apps/web/pages/more.tsx index 9c495c84c6..a34dbc754b 100644 --- a/apps/web/pages/more.tsx +++ b/apps/web/pages/more.tsx @@ -1,6 +1,5 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { MobileNavigationMoreItems } from "@calcom/ui/Shell"; -import { Shell } from "@calcom/ui/v2"; +import { MobileNavigationMoreItems, Shell } from "@calcom/ui"; export default function MorePage() { const { t } = useLocale(); diff --git a/apps/web/pages/sandbox/Alert.tsx b/apps/web/pages/sandbox/Alert.tsx deleted file mode 100644 index a056435148..0000000000 --- a/apps/web/pages/sandbox/Alert.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from "react"; - -import { Alert, AlertProps } from "@calcom/ui/Alert"; - -import { sandboxPage } from "."; - -const page = sandboxPage(function AlertPage() { - const list: AlertProps[] = [ - { title: "Something went wrong", severity: "error" }, - { title: "Something went kinda wrong", severity: "warning" }, - { title: "Something went great", severity: "success" }, - { title: "Something went wrong", severity: "error", message: "Some extra context" }, - { - title: "Something went wrong", - severity: "error", - message: ( -

- Some extra context -
- hey -

- ), - }, - ]; - return ( - <> -
-

Alert component

-
- {list.map((props, index) => ( -
-

- - {JSON.stringify( - props, - (key, value) => { - if (key.includes("message")) { - return ".."; - } - return value; - }, - 2 - )} - -

- Alert text -
- ))} -
-
- - ); -}); - -export default page.default; -export const getStaticProps = page.getStaticProps; diff --git a/apps/web/pages/sandbox/Badge.tsx b/apps/web/pages/sandbox/Badge.tsx deleted file mode 100644 index 87961f176c..0000000000 --- a/apps/web/pages/sandbox/Badge.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { Badge, BadgeProps } from "@calcom/ui/components/badge"; - -import { sandboxPage } from "."; - -const page = sandboxPage(function BadgePage() { - const list: BadgeProps[] = [ - // - { variant: "success" }, - { variant: "gray" }, - { variant: "success" }, - ]; - return ( - <> -
-

Badge component

-
- {list.map((props, index) => ( -
-

- - {JSON.stringify( - props, - (key, value) => { - if (key.includes("Icon")) { - return ".."; - } - return value; - }, - 2 - )} - -

- Badge text -
- ))} -
-
- - ); -}); - -export default page.default; -export const getStaticProps = page.getStaticProps; diff --git a/apps/web/pages/sandbox/Button.tsx b/apps/web/pages/sandbox/Button.tsx deleted file mode 100644 index 24127b86fb..0000000000 --- a/apps/web/pages/sandbox/Button.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React from "react"; - -import { Button, ButtonBaseProps } from "@calcom/ui/Button"; -import { Icon } from "@calcom/ui/Icon"; - -import { sandboxPage } from "."; - -const page = sandboxPage(function ButtonPage() { - const list: ButtonBaseProps[] = [ - // primary - { color: "primary" }, - { color: "primary", disabled: true }, - { color: "primary", disabled: true, loading: true }, - - // secondary - { color: "secondary" }, - { color: "secondary", disabled: true }, - { color: "secondary", disabled: true, loading: true }, - - // minimal - { color: "minimal" }, - { color: "minimal", disabled: true }, - { color: "minimal", disabled: true, loading: true }, - - // sizes - { color: "primary", size: "sm" }, - { color: "primary", size: "base" }, - { color: "primary", size: "lg" }, - - // // href - // { href: "/staging" }, - // { href: "/staging", disabled: true }, - - { StartIcon: Icon.FiPlus }, - { EndIcon: Icon.FiPlus }, - ]; - return ( - <> -
-

Button component

-
- {list.map((props, index) => ( -
-

- - {JSON.stringify( - props, - (key, value) => { - if (key.includes("Icon")) { - return ".."; - } - return value; - }, - 2 - )} - -

- -
- ))} -
-
- - ); -}); - -export default page.default; -export const getStaticProps = page.getStaticProps; diff --git a/apps/web/pages/sandbox/List.tsx b/apps/web/pages/sandbox/List.tsx deleted file mode 100644 index c6782b3f4e..0000000000 --- a/apps/web/pages/sandbox/List.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React, { useState } from "react"; - -import Button from "@calcom/ui/Button"; -import { List, ListItem } from "@calcom/ui/List"; - -import { sandboxPage } from "."; - -const page = sandboxPage(() => { - const [expanded, setExpanded] = useState(false); - return ( -
- Unstyled -{" "} - - - - An item - - - An item - - - An item - - - An item - - - One expanded - - An item - Spaced - An item - An item - -
- ); -}); - -export default page.default; -export const getStaticProps = page.getStaticProps; diff --git a/apps/web/pages/sandbox/RadioArea.tsx b/apps/web/pages/sandbox/RadioArea.tsx deleted file mode 100644 index ab702e9a66..0000000000 --- a/apps/web/pages/sandbox/RadioArea.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import Head from "next/head"; -import React, { useState } from "react"; - -import * as RadioArea from "@components/ui/form/radio-area"; - -const selectOptions = [ - { - value: "rabbit", - label: "Rabbit", - description: "Fast and hard.", - }, - { - value: "turtle", - label: "Turtle", - description: "Slow and steady.", - }, -]; - -export default function RadioAreaPage() { - const [formData, setFormData] = useState({}); - - return ( - <> - - - -
-

RadioArea component

-
{ - e.preventDefault(); - }} - className="mb-2 space-y-4"> - setFormData({ ...formData, radioGroup_1 })} - className="flex max-w-screen-md space-x-4 rtl:space-x-reverse" - name="radioGroup_1"> - - radioGroup_1_radio_1 -

Description #1

-
- - radioGroup_1_radio_2 -

Description #2

-
- - radioGroup_1_radio_3 -

Description #3

-
-
- setFormData({ ...formData, radioGroup_2 })} - className="flex max-w-screen-md space-x-4 rtl:space-x-reverse" - name="radioGroup_2"> - - radioGroup_1_radio_1 -

Description #1

-
- - radioGroup_1_radio_2 -

Description #2

-
- - radioGroup_1_radio_3 -

Description #3

-
-
-
-

Disabled RadioAreaSelect

- -
-
-

RadioArea disabled with custom placeholder

- -
-
-

RadioArea with options

- - setFormData({ ...formData, turtleOrRabbitWinsTheRace }) - } - options={selectOptions} - placeholder="Does the rabbit or the turtle win the race?" - /> -
- -
-

RadioArea with default selected (disabled for clarity)

- -
-
-
{JSON.stringify(formData)}
-
- - ); -} diff --git a/apps/web/pages/sandbox/form.tsx b/apps/web/pages/sandbox/form.tsx deleted file mode 100644 index a6d3342aec..0000000000 --- a/apps/web/pages/sandbox/form.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from "react"; - -import { Label, Input, TextField } from "@calcom/ui/form/fields"; -import { Segment, SegmentOption } from "@calcom/ui/v2/core"; - -import { sandboxPage } from "."; - -const page = sandboxPage(() => ( -
-
- -
-
- -
-
- - {/* Adding to sandbox cause storybook doesnt like radix tailwind :S */} -
- - One - Two - Three - - Four - - -
-
-
-)); - -export default page.default; -export const getStaticProps = page.getStaticProps; diff --git a/apps/web/pages/sandbox/index.tsx b/apps/web/pages/sandbox/index.tsx deleted file mode 100644 index da49e2ee00..0000000000 --- a/apps/web/pages/sandbox/index.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import fs from "fs"; -import { NextPage } from "next"; -import Head from "next/head"; -import Link from "next/link"; -import path from "path"; - -import { inferSSRProps } from "@lib/types/inferSSRProps"; - -async function _getStaticProps() { - const dir = path.join(process.cwd(), "pages", "sandbox"); - - const pages = fs - .readdirSync(dir) - .filter((file) => !file.startsWith(".")) - .map((file) => { - const parts = file.split("."); - // remove extension - parts.pop(); - return parts.join("."); - }); - return { - props: { - pages, - }, - }; -} -type PageProps = inferSSRProps; - -const SandboxPage: NextPage = (props) => { - return ( - <> - - - - -
- {props.children} -
- - ); -}; -export function sandboxPage(Component: NextPage) { - const Wrapper: NextPage = (props) => { - return ( - <> - - - - - ); - }; - return { - default: Wrapper, - getStaticProps: _getStaticProps, - }; -} - -const page = sandboxPage(() => { - return

Click a component above

; -}); - -export default page.default; -export const getStaticProps = page.getStaticProps; diff --git a/apps/web/pages/sandbox/preview-error-page.tsx b/apps/web/pages/sandbox/preview-error-page.tsx deleted file mode 100644 index 9a2d938b15..0000000000 --- a/apps/web/pages/sandbox/preview-error-page.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { NextPage } from "next"; -import React from "react"; - -import { HttpError } from "@lib/core/http/error"; - -import { ErrorPage } from "@components/error/error-page"; - -const PreviewErrorPage: NextPage = () => { - const statusCode = 403; - const message = `this was an http error ${statusCode}`; - const previousError = new Error("A test error"); - const error = new HttpError({ - statusCode, - message, - url: "http://some.invalid.url", - cause: previousError, - }); - return ; -}; - -export default PreviewErrorPage; diff --git a/apps/web/pages/sandbox/test-async-error.tsx b/apps/web/pages/sandbox/test-async-error.tsx deleted file mode 100644 index 3b5d01a6df..0000000000 --- a/apps/web/pages/sandbox/test-async-error.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { useQuery } from "@tanstack/react-query"; -import React from "react"; - -import { HttpError } from "@lib/core/http/error"; - -const TestAsyncErrorRoute: React.FC = () => { - const { error, isLoading } = useQuery(["error-promise"], async () => { - throw new HttpError({ - statusCode: 400, - message: "A http error occurred on the client side in test-async-error.tsx.", - url: "http://awebsite.that.does.not.exist", - }); - }); - - if (isLoading) { - return <>Loading...; - } - - if (error) { - console.log("An error occurred", error); - throw error; - } - return <>If you see this message, there is really something wrong ;); -}; - -export default TestAsyncErrorRoute; diff --git a/apps/web/pages/sandbox/test-error.tsx b/apps/web/pages/sandbox/test-error.tsx deleted file mode 100644 index 76544eaa3a..0000000000 --- a/apps/web/pages/sandbox/test-error.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from "react"; - -import { HttpError } from "@lib/core/http/error"; - -type Props = { - hasRunOnServer: boolean; -}; - -const TestErrorRoute: React.FC = (props) => { - if (!props.hasRunOnServer) { - throw new HttpError({ statusCode: 400, message: "test-error.tsx" }); - } - return <>If you see this message, there is really something wrong ;); -}; - -// Having a page that always throws error is very hard with nextjs -// because it will try to pre-render the page at build-time... and -// complain: 'you need to fix this'. So here because we want to always -// throw an error for monitoring, let's force server side generation -// all the time (the page won't be pre-generated, all cool). -export async function getServerSideProps() { - return { - props: { - hasRunOnServer: false, - }, - }; -} - -export default TestErrorRoute; diff --git a/apps/web/pages/settings/admin/apps.tsx b/apps/web/pages/settings/admin/apps.tsx index c0c9422d29..8fa3de5265 100644 --- a/apps/web/pages/settings/admin/apps.tsx +++ b/apps/web/pages/settings/admin/apps.tsx @@ -1,5 +1,4 @@ -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/AdminLayout"; +import { getAdminLayout as getLayout, Meta } from "@calcom/ui"; function AdminAppsView() { return ( diff --git a/apps/web/pages/settings/admin/impersonation.tsx b/apps/web/pages/settings/admin/impersonation.tsx index 099c767f92..8ab2f39a73 100644 --- a/apps/web/pages/settings/admin/impersonation.tsx +++ b/apps/web/pages/settings/admin/impersonation.tsx @@ -2,9 +2,7 @@ import { signIn } from "next-auth/react"; import { useRef } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, TextField } from "@calcom/ui/components"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/AdminLayout"; +import { Button, getAdminLayout as getLayout, Meta, TextField } from "@calcom/ui"; function AdminView() { const { t } = useLocale(); diff --git a/apps/web/pages/settings/admin/index.tsx b/apps/web/pages/settings/admin/index.tsx index 43622a4464..52c8e55781 100644 --- a/apps/web/pages/settings/admin/index.tsx +++ b/apps/web/pages/settings/admin/index.tsx @@ -1,5 +1,4 @@ -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/AdminLayout"; +import { getAdminLayout as getLayout, Meta } from "@calcom/ui"; function AdminAppsView() { return ( diff --git a/apps/web/pages/settings/admin/users.tsx b/apps/web/pages/settings/admin/users.tsx index e47a309752..503fa8d365 100644 --- a/apps/web/pages/settings/admin/users.tsx +++ b/apps/web/pages/settings/admin/users.tsx @@ -1,5 +1,4 @@ -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/AdminLayout"; +import { getAdminLayout as getLayout, Meta } from "@calcom/ui"; function AdminUsersView() { return ( diff --git a/apps/web/pages/settings/billing/index.tsx b/apps/web/pages/settings/billing/index.tsx index b2b1d0f8ba..ba7443f620 100644 --- a/apps/web/pages/settings/billing/index.tsx +++ b/apps/web/pages/settings/billing/index.tsx @@ -6,10 +6,7 @@ import { classNames } from "@calcom/lib"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Button } from "@calcom/ui/components/button"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { Button, getSettingsLayout as getLayout, Icon, Meta } from "@calcom/ui"; interface CtaRowProps { title: string; diff --git a/apps/web/pages/settings/developer/api-keys.tsx b/apps/web/pages/settings/developer/api-keys.tsx index 54cc55935c..6a1aebdfc2 100644 --- a/apps/web/pages/settings/developer/api-keys.tsx +++ b/apps/web/pages/settings/developer/api-keys.tsx @@ -2,17 +2,20 @@ import { useState } from "react"; import { TApiKeys } from "@calcom/ee/api-keys/components/ApiKeyListItem"; import LicenseRequired from "@calcom/ee/common/components/v2/LicenseRequired"; -import ApiKeyDialogForm from "@calcom/features/ee/api-keys/components/v2/ApiKeyDialogForm"; -import ApiKeyListItem from "@calcom/features/ee/api-keys/components/v2/ApiKeyListItem"; +import ApiKeyDialogForm from "@calcom/features/ee/api-keys/components/ApiKeyDialogForm"; +import ApiKeyListItem from "@calcom/features/ee/api-keys/components/ApiKeyListItem"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Button } from "@calcom/ui/components"; -import { EmptyScreen } from "@calcom/ui/v2"; -import { Dialog, DialogContent } from "@calcom/ui/v2/core/Dialog"; -import Meta from "@calcom/ui/v2/core/Meta"; -import SkeletonLoader from "@calcom/ui/v2/core/apps/SkeletonLoader"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { + Button, + Dialog, + DialogContent, + EmptyScreen, + getSettingsLayout as getLayout, + Icon, + Meta, + SkeletonLoader, +} from "@calcom/ui"; const ApiKeysView = () => { const { t } = useLocale(); diff --git a/apps/web/pages/settings/my-account/appearance.tsx b/apps/web/pages/settings/my-account/appearance.tsx index 3d84ba881f..5642b61c00 100644 --- a/apps/web/pages/settings/my-account/appearance.tsx +++ b/apps/web/pages/settings/my-account/appearance.tsx @@ -2,15 +2,19 @@ import { Controller, useForm } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Badge } from "@calcom/ui/components/badge"; -import { Button } from "@calcom/ui/components/button"; -import { Form } from "@calcom/ui/components/form"; -import Meta from "@calcom/ui/v2/core/Meta"; -import Switch from "@calcom/ui/v2/core/Switch"; -import ColorPicker from "@calcom/ui/v2/core/colorpicker"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; -import showToast from "@calcom/ui/v2/core/notifications"; -import { SkeletonContainer, SkeletonText, SkeletonButton } from "@calcom/ui/v2/core/skeleton"; +import { + Badge, + Button, + ColorPicker, + Form, + getSettingsLayout as getLayout, + Meta, + showToast, + SkeletonButton, + SkeletonContainer, + SkeletonText, + Switch, +} from "@calcom/ui"; const SkeletonLoader = () => { return ( diff --git a/apps/web/pages/settings/my-account/calendars.tsx b/apps/web/pages/settings/my-account/calendars.tsx index 19c2c91c09..00f979d478 100644 --- a/apps/web/pages/settings/my-account/calendars.tsx +++ b/apps/web/pages/settings/my-account/calendars.tsx @@ -6,16 +6,23 @@ import { Fragment } from "react"; import DestinationCalendarSelector from "@calcom/features/calendars/DestinationCalendarSelector"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Button } from "@calcom/ui/components"; -import { Badge } from "@calcom/ui/components/badge"; -import { Alert } from "@calcom/ui/v2"; -import EmptyScreen from "@calcom/ui/v2/core/EmptyScreen"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; -import { SkeletonContainer, SkeletonText, SkeletonButton } from "@calcom/ui/v2/core/skeleton"; -import { List, ListItem, ListItemText, ListItemTitle } from "@calcom/ui/v2/modules/List"; -import DisconnectIntegration from "@calcom/ui/v2/modules/integrations/DisconnectIntegration"; +import { + Alert, + Badge, + Button, + DisconnectIntegration, + EmptyScreen, + getSettingsLayout as getLayout, + Icon, + List, + ListItem, + ListItemText, + ListItemTitle, + Meta, + SkeletonButton, + SkeletonContainer, + SkeletonText, +} from "@calcom/ui"; import { QueryCell } from "@lib/QueryCell"; diff --git a/apps/web/pages/settings/my-account/conferencing.tsx b/apps/web/pages/settings/my-account/conferencing.tsx index e75f587a0e..0d6fa2237d 100644 --- a/apps/web/pages/settings/my-account/conferencing.tsx +++ b/apps/web/pages/settings/my-account/conferencing.tsx @@ -2,15 +2,25 @@ import { useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Button } from "@calcom/ui/components"; -import { Dropdown, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@calcom/ui/v2"; -import { Dialog, DialogContent } from "@calcom/ui/v2/core/Dialog"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; -import showToast from "@calcom/ui/v2/core/notifications"; -import { SkeletonContainer, SkeletonText } from "@calcom/ui/v2/core/skeleton"; -import { List, ListItem, ListItemText, ListItemTitle } from "@calcom/ui/v2/modules/List"; +import { + Button, + Dialog, + DialogContent, + Dropdown, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + getSettingsLayout as getLayout, + Icon, + List, + ListItem, + ListItemText, + ListItemTitle, + Meta, + showToast, + SkeletonContainer, + SkeletonText, +} from "@calcom/ui"; const SkeletonLoader = () => { return ( @@ -53,12 +63,12 @@ const ConferencingLayout = () => { return (
- + {apps?.items && apps.items .map((app) => ({ ...app, title: app.title || app.name })) .map((app) => ( - +
{ // eslint-disable-next-line @next/next/no-img-element diff --git a/apps/web/pages/settings/my-account/general.tsx b/apps/web/pages/settings/my-account/general.tsx index 9f97e1b692..4d3dde0d7b 100644 --- a/apps/web/pages/settings/my-account/general.tsx +++ b/apps/web/pages/settings/my-account/general.tsx @@ -1,17 +1,22 @@ import { useRouter } from "next/router"; import { useMemo } from "react"; -import { useForm, Controller } from "react-hook-form"; +import { Controller, useForm } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui/components/button"; -import { Form, Label } from "@calcom/ui/components/form"; -import Meta from "@calcom/ui/v2/core/Meta"; -import TimezoneSelect from "@calcom/ui/v2/core/TimezoneSelect"; -import Select from "@calcom/ui/v2/core/form/select"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; -import showToast from "@calcom/ui/v2/core/notifications"; -import { SkeletonContainer, SkeletonText, SkeletonButton } from "@calcom/ui/v2/core/skeleton"; +import { + Button, + Form, + getSettingsLayout as getLayout, + Label, + Meta, + Select, + showToast, + SkeletonButton, + SkeletonContainer, + SkeletonText, + TimezoneSelect, +} from "@calcom/ui"; import { withQuery } from "@lib/QueryCell"; import { nameOfDay } from "@lib/core/i18n/weekday"; diff --git a/apps/web/pages/settings/my-account/profile.tsx b/apps/web/pages/settings/my-account/profile.tsx index 03f9d9b18a..c26538d1ac 100644 --- a/apps/web/pages/settings/my-account/profile.tsx +++ b/apps/web/pages/settings/my-account/profile.tsx @@ -1,7 +1,7 @@ import { IdentityProvider } from "@prisma/client"; import crypto from "crypto"; import { signOut } from "next-auth/react"; -import { useRef, useState, BaseSyntheticEvent, useEffect } from "react"; +import { BaseSyntheticEvent, useEffect, useRef, useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { ErrorCode } from "@calcom/lib/auth"; @@ -9,17 +9,27 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { TRPCClientErrorLike } from "@calcom/trpc/client"; import { trpc } from "@calcom/trpc/react"; import { AppRouter } from "@calcom/trpc/server/routers/_app"; -import { Icon } from "@calcom/ui"; -import { Alert } from "@calcom/ui/Alert"; -import { Avatar } from "@calcom/ui/components/avatar"; -import { Button } from "@calcom/ui/components/button"; -import { Form, Label, TextField, PasswordField } from "@calcom/ui/components/form"; -import { Dialog, DialogContent, DialogTrigger } from "@calcom/ui/v2/core/Dialog"; -import ImageUploader from "@calcom/ui/v2/core/ImageUploader"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; -import showToast from "@calcom/ui/v2/core/notifications"; -import { SkeletonContainer, SkeletonText, SkeletonButton, SkeletonAvatar } from "@calcom/ui/v2/core/skeleton"; +import { + Alert, + Avatar, + Button, + Dialog, + DialogContent, + DialogTrigger, + Form, + getSettingsLayout as getLayout, + Icon, + ImageUploader, + Label, + Meta, + PasswordField, + showToast, + SkeletonAvatar, + SkeletonButton, + SkeletonContainer, + SkeletonText, + TextField, +} from "@calcom/ui"; import TwoFactor from "@components/auth/TwoFactor"; import { UsernameAvailability } from "@components/ui/UsernameAvailability"; diff --git a/apps/web/pages/settings/security/impersonation.tsx b/apps/web/pages/settings/security/impersonation.tsx index 3f9964ad84..4ff36ea094 100644 --- a/apps/web/pages/settings/security/impersonation.tsx +++ b/apps/web/pages/settings/security/impersonation.tsx @@ -2,11 +2,16 @@ import { useForm } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui/components"; -import { Label, Form } from "@calcom/ui/components/form"; -import { Switch, Skeleton, showToast } from "@calcom/ui/v2/core"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { + Button, + Form, + getSettingsLayout as getLayout, + Label, + Meta, + showToast, + Skeleton, + Switch, +} from "@calcom/ui"; const ProfileImpersonationView = () => { const { t } = useLocale(); diff --git a/apps/web/pages/settings/security/password.tsx b/apps/web/pages/settings/security/password.tsx index e205ce5ccb..d67c873136 100644 --- a/apps/web/pages/settings/security/password.tsx +++ b/apps/web/pages/settings/security/password.tsx @@ -5,11 +5,7 @@ import { useForm } from "react-hook-form"; import { identityProviderNameMap } from "@calcom/lib/auth"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui/components/button"; -import { Form, PasswordField } from "@calcom/ui/components/form"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Button, Form, getSettingsLayout as getLayout, Meta, PasswordField, showToast } from "@calcom/ui"; type ChangePasswordFormValues = { oldPassword: string; diff --git a/apps/web/pages/settings/security/two-factor-auth.tsx b/apps/web/pages/settings/security/two-factor-auth.tsx index 14bbf356c1..eb32c6719d 100644 --- a/apps/web/pages/settings/security/two-factor-auth.tsx +++ b/apps/web/pages/settings/security/two-factor-auth.tsx @@ -2,11 +2,7 @@ import { useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Badge } from "@calcom/ui/components/badge"; -import Loader from "@calcom/ui/v2/core/Loader"; -import Meta from "@calcom/ui/v2/core/Meta"; -import Switch from "@calcom/ui/v2/core/Switch"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { Badge, getSettingsLayout as getLayout, Loader, Meta, Switch } from "@calcom/ui"; import DisableTwoFactorModal from "@components/settings/DisableTwoFactorModal"; import EnableTwoFactorModal from "@components/settings/EnableTwoFactorModal"; diff --git a/apps/web/pages/settings/teams/[id]/onboard-members.tsx b/apps/web/pages/settings/teams/[id]/onboard-members.tsx index 3d8bb6bd1e..6b7213f886 100644 --- a/apps/web/pages/settings/teams/[id]/onboard-members.tsx +++ b/apps/web/pages/settings/teams/[id]/onboard-members.tsx @@ -2,7 +2,7 @@ import Head from "next/head"; import AddNewTeamMembers from "@calcom/features/ee/teams/components/AddNewTeamMembers"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import WizardLayout from "@calcom/ui/v2/core/layouts/WizardLayout"; +import { WizardLayout } from "@calcom/ui"; const OnboardTeamMembersPage = () => { const { t } = useLocale(); diff --git a/apps/web/pages/settings/teams/new/index.tsx b/apps/web/pages/settings/teams/new/index.tsx index fd0fa1e9be..a1b2da4ba0 100644 --- a/apps/web/pages/settings/teams/new/index.tsx +++ b/apps/web/pages/settings/teams/new/index.tsx @@ -1,7 +1,7 @@ import Head from "next/head"; import { CreateANewTeamForm } from "@calcom/features/ee/teams/components"; -import { getLayout } from "@calcom/ui/v2/core/layouts/WizardLayout"; +import { getWizardLayout as getLayout } from "@calcom/ui"; const CreateNewTeamPage = () => { return ( diff --git a/apps/web/pages/signup.tsx b/apps/web/pages/signup.tsx index 7b5aa44610..183fc9414c 100644 --- a/apps/web/pages/signup.tsx +++ b/apps/web/pages/signup.tsx @@ -7,9 +7,7 @@ import LicenseRequired from "@calcom/features/ee/common/components/v2/LicenseReq import { isSAMLLoginEnabled } from "@calcom/features/ee/sso/lib/saml"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { inferSSRProps } from "@calcom/types/inferSSRProps"; -import { Alert } from "@calcom/ui/Alert"; -import { Button } from "@calcom/ui/components/button"; -import { EmailField, PasswordField, TextField } from "@calcom/ui/components/form"; +import { Alert, Button, EmailField, PasswordField, TextField } from "@calcom/ui"; import { HeadSeo } from "@calcom/web/components/seo/head-seo"; import { asStringOrNull } from "@calcom/web/lib/asStringOrNull"; import { WEBAPP_URL } from "@calcom/web/lib/config/constants"; diff --git a/apps/web/pages/success.tsx b/apps/web/pages/success.tsx index 1fe90b1aee..c97a971673 100644 --- a/apps/web/pages/success.tsx +++ b/apps/web/pages/success.tsx @@ -34,8 +34,7 @@ import { localStorage } from "@calcom/lib/webstorage"; import prisma, { baseUserSelect } from "@calcom/prisma"; import { Prisma } from "@calcom/prisma/client"; import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils"; -import { Icon } from "@calcom/ui/Icon"; -import { Button, EmailInput } from "@calcom/ui/components"; +import { Button, EmailInput, Icon } from "@calcom/ui"; import { timeZone } from "@lib/clock"; import { inferSSRProps } from "@lib/types/inferSSRProps"; diff --git a/apps/web/pages/team/[slug].tsx b/apps/web/pages/team/[slug].tsx index 27b2033ad7..33c8ca046c 100644 --- a/apps/web/pages/team/[slug].tsx +++ b/apps/web/pages/team/[slug].tsx @@ -3,7 +3,7 @@ import classNames from "classnames"; import { GetServerSidePropsContext } from "next"; import Link from "next/link"; import { useRouter } from "next/router"; -import React, { useEffect } from "react"; +import { useEffect } from "react"; import { useIsEmbed } from "@calcom/embed-core/embed-iframe"; import { CAL_URL } from "@calcom/lib/constants"; @@ -12,9 +12,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import useTheme from "@calcom/lib/hooks/useTheme"; import { getTeamWithMembers } from "@calcom/lib/server/queries/teams"; import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry"; -import { Icon } from "@calcom/ui/Icon"; -import { Button, Avatar } from "@calcom/ui/components"; -import EventTypeDescription from "@calcom/ui/v2/modules/event-types/EventTypeDescription"; +import { Avatar, Button, EventTypeDescription, Icon } from "@calcom/ui"; import { useExposePlanGlobally } from "@lib/hooks/useExposePlanGlobally"; import { useToggleQuery } from "@lib/hooks/useToggleQuery"; diff --git a/apps/web/pages/teams/index.tsx b/apps/web/pages/teams/index.tsx index 8497063478..3f2248c50c 100644 --- a/apps/web/pages/teams/index.tsx +++ b/apps/web/pages/teams/index.tsx @@ -1,9 +1,7 @@ import { TeamsListing } from "@calcom/features/ee/teams/components"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; -import { Shell } from "@calcom/ui/v2"; +import { Button, Icon, Shell } from "@calcom/ui"; function Teams() { const { t } = useLocale(); diff --git a/apps/web/pages/video/meeting-ended/[uid].tsx b/apps/web/pages/video/meeting-ended/[uid].tsx index e3c8d2d35c..8bba38db7e 100644 --- a/apps/web/pages/video/meeting-ended/[uid].tsx +++ b/apps/web/pages/video/meeting-ended/[uid].tsx @@ -4,8 +4,7 @@ import dayjs from "@calcom/dayjs"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { detectBrowserTimeFormat } from "@calcom/lib/timeFormat"; import prisma, { bookingMinimalSelect } from "@calcom/prisma"; -import Button from "@calcom/ui/Button"; -import { Icon } from "@calcom/ui/Icon"; +import { Button, Icon } from "@calcom/ui"; import { inferSSRProps } from "@lib/types/inferSSRProps"; diff --git a/apps/web/pages/video/meeting-not-started/[uid].tsx b/apps/web/pages/video/meeting-not-started/[uid].tsx index 59c088aae7..c8fbc8a7c6 100644 --- a/apps/web/pages/video/meeting-not-started/[uid].tsx +++ b/apps/web/pages/video/meeting-not-started/[uid].tsx @@ -5,8 +5,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import { detectBrowserTimeFormat } from "@calcom/lib/timeFormat"; import prisma, { bookingMinimalSelect } from "@calcom/prisma"; import type { inferSSRProps } from "@calcom/types/inferSSRProps"; -import Button from "@calcom/ui/Button"; -import { Icon } from "@calcom/ui/Icon"; +import { Button, Icon } from "@calcom/ui"; import { HeadSeo } from "@components/seo/head-seo"; diff --git a/apps/web/pages/video/no-meeting-found.tsx b/apps/web/pages/video/no-meeting-found.tsx index 068d85738e..70d41d5a52 100644 --- a/apps/web/pages/video/no-meeting-found.tsx +++ b/apps/web/pages/video/no-meeting-found.tsx @@ -1,6 +1,5 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; -import { Icon } from "@calcom/ui/Icon"; +import { Button, Icon } from "@calcom/ui"; import { HeadSeo } from "@components/seo/head-seo"; diff --git a/apps/web/pages/workflows/[workflow].tsx b/apps/web/pages/workflows/[workflow].tsx index 44d7bdeae3..02cf9fa15b 100644 --- a/apps/web/pages/workflows/[workflow].tsx +++ b/apps/web/pages/workflows/[workflow].tsx @@ -1,7 +1,7 @@ import { GetStaticPaths, GetStaticProps } from "next"; import { z } from "zod"; -export { default } from "@calcom/features/ee/workflows/pages/v2/workflow"; +export { default } from "@calcom/features/ee/workflows/pages/workflow"; const querySchema = z.object({ workflow: z.string(), diff --git a/apps/web/pages/workflows/index.tsx b/apps/web/pages/workflows/index.tsx index 740b209b29..a0ea681736 100644 --- a/apps/web/pages/workflows/index.tsx +++ b/apps/web/pages/workflows/index.tsx @@ -1 +1 @@ -export { default } from "@calcom/features/ee/workflows/pages/v2/index"; +export { default } from "@calcom/features/ee/workflows/pages/index"; diff --git a/apps/website b/apps/website index 15c60e8b1c..4aa60d8665 160000 --- a/apps/website +++ b/apps/website @@ -1 +1 @@ -Subproject commit 15c60e8b1ca2a0cf63fea7bb6402e914b6992011 +Subproject commit 4aa60d8665314e522ac371e7c0e55b48a541ab82 diff --git a/packages/app-store/_components/AppCard.tsx b/packages/app-store/_components/AppCard.tsx index 21059557f5..c935b5cc80 100644 --- a/packages/app-store/_components/AppCard.tsx +++ b/packages/app-store/_components/AppCard.tsx @@ -2,7 +2,7 @@ import { useAutoAnimate } from "@formkit/auto-animate/react"; import Link from "next/link"; import { RouterOutputs } from "@calcom/trpc/react"; -import { Switch } from "@calcom/ui/v2"; +import { Switch } from "@calcom/ui"; import OmniInstallAppButton from "@calcom/web/components/apps/OmniInstallAppButton"; import { SetAppDataGeneric } from "../EventTypeAppContext"; diff --git a/packages/app-store/applecalendar/index.ts b/packages/app-store/applecalendar/index.ts index db3c2b10b2..5373eb04ef 100644 --- a/packages/app-store/applecalendar/index.ts +++ b/packages/app-store/applecalendar/index.ts @@ -1,4 +1,3 @@ export * as api from "./api"; -export * as components from "./components"; export * as lib from "./lib"; export { metadata } from "./_metadata"; diff --git a/packages/app-store/applecalendar/pages/setup/index.tsx b/packages/app-store/applecalendar/pages/setup/index.tsx index 1cbc6ab4f8..71436c4114 100644 --- a/packages/app-store/applecalendar/pages/setup/index.tsx +++ b/packages/app-store/applecalendar/pages/setup/index.tsx @@ -4,8 +4,7 @@ import { useForm } from "react-hook-form"; import { Toaster } from "react-hot-toast"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, Form, TextField } from "@calcom/ui/components"; -import { Alert } from "@calcom/ui/v2"; +import { Alert, Button, Form, TextField } from "@calcom/ui"; export default function AppleCalendarSetup() { const { t } = useLocale(); diff --git a/packages/app-store/around/index.ts b/packages/app-store/around/index.ts index a698d1f5c5..5d372ceda3 100644 --- a/packages/app-store/around/index.ts +++ b/packages/app-store/around/index.ts @@ -1,3 +1,2 @@ export * as api from "./api"; -export * as components from "./components"; export { metadata } from "./_metadata"; diff --git a/packages/app-store/caldavcalendar/index.ts b/packages/app-store/caldavcalendar/index.ts index b046fb8884..24c468e15a 100644 --- a/packages/app-store/caldavcalendar/index.ts +++ b/packages/app-store/caldavcalendar/index.ts @@ -23,5 +23,4 @@ export const metadata = { } as App; export * as api from "./api"; -export * as components from "./components"; export * as lib from "./lib"; diff --git a/packages/app-store/caldavcalendar/pages/setup/index.tsx b/packages/app-store/caldavcalendar/pages/setup/index.tsx index 24a8562d70..bfcc1fe61d 100644 --- a/packages/app-store/caldavcalendar/pages/setup/index.tsx +++ b/packages/app-store/caldavcalendar/pages/setup/index.tsx @@ -4,8 +4,7 @@ import { useForm } from "react-hook-form"; import { Toaster } from "react-hot-toast"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, Form, TextField } from "@calcom/ui/components"; -import { Alert } from "@calcom/ui/v2"; +import { Alert, Button, Form, TextField } from "@calcom/ui"; export default function CalDavCalendarSetup() { const { t } = useLocale(); diff --git a/packages/app-store/closecom/pages/setup/index.tsx b/packages/app-store/closecom/pages/setup/index.tsx index efc5b5434e..d3c76da6f4 100644 --- a/packages/app-store/closecom/pages/setup/index.tsx +++ b/packages/app-store/closecom/pages/setup/index.tsx @@ -1,14 +1,13 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { useRouter } from "next/router"; -import { useState, useEffect } from "react"; +import { useEffect, useState } from "react"; import { Check, X } from "react-feather"; -import { useForm, Controller } from "react-hook-form"; +import { Controller, useForm } from "react-hook-form"; import { Toaster } from "react-hot-toast"; import z from "zod"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, TextField, Form } from "@calcom/ui/components"; -import { showToast } from "@calcom/ui/v2"; +import { Button, Form, showToast, TextField } from "@calcom/ui"; const formSchema = z.object({ api_key: z.string(), diff --git a/packages/app-store/components.tsx b/packages/app-store/components.tsx index 98612f88d2..932f51d343 100644 --- a/packages/app-store/components.tsx +++ b/packages/app-store/components.tsx @@ -7,7 +7,7 @@ import { trpc } from "@calcom/trpc/react"; import type { App } from "@calcom/types/App"; import { InstallAppButtonMap } from "./apps.browser.generated"; -import { InstallAppButtonProps } from "./types"; +import type { InstallAppButtonProps } from "./types"; export const InstallAppButtonWithoutPlanCheck = ( props: { diff --git a/packages/app-store/ee/routing-forms/components/FormActions.tsx b/packages/app-store/ee/routing-forms/components/FormActions.tsx index a18ab89b3d..bc2855ec4b 100644 --- a/packages/app-store/ee/routing-forms/components/FormActions.tsx +++ b/packages/app-store/ee/routing-forms/components/FormActions.tsx @@ -1,6 +1,6 @@ -import { useRouter } from "next/router"; import type { NextRouter } from "next/router"; -import { useState, createContext, useContext, forwardRef } from "react"; +import { useRouter } from "next/router"; +import { createContext, forwardRef, useContext, useState } from "react"; import { useForm } from "react-hook-form"; import { v4 as uuidv4 } from "uuid"; import { z } from "zod"; @@ -9,19 +9,24 @@ import { classNames } from "@calcom/lib"; import { CAL_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import ConfirmationDialogContent from "@calcom/ui/ConfirmationDialogContent"; -import { Dialog, DialogClose, DialogContent } from "@calcom/ui/Dialog"; -import { Button, ButtonProps } from "@calcom/ui/components/button"; -import { Form, TextField, TextAreaField } from "@calcom/ui/components/form"; import { + Button, + ButtonProps, + ConfirmationDialogContent, + Dialog, + DialogClose, + DialogContent, Dropdown, - DropdownMenuItem, DropdownMenuContent, + DropdownMenuItem, DropdownMenuTrigger, + Form, + Icon, showToast, Switch, -} from "@calcom/ui/v2"; + TextAreaField, + TextField, +} from "@calcom/ui"; import { EmbedButton, EmbedDialog } from "@components/Embed"; diff --git a/packages/app-store/ee/routing-forms/components/RoutingNavBar.tsx b/packages/app-store/ee/routing-forms/components/RoutingNavBar.tsx index b9a83dffa2..e3fe52dd9b 100644 --- a/packages/app-store/ee/routing-forms/components/RoutingNavBar.tsx +++ b/packages/app-store/ee/routing-forms/components/RoutingNavBar.tsx @@ -1,4 +1,4 @@ -import { HorizontalTabs } from "@calcom/ui/v2"; +import { HorizontalTabs } from "@calcom/ui"; import { getSerializableForm } from "../lib/getSerializableForm"; diff --git a/packages/app-store/ee/routing-forms/components/SingleForm.tsx b/packages/app-store/ee/routing-forms/components/SingleForm.tsx index c0df90ee79..b9e177aaf8 100644 --- a/packages/app-store/ee/routing-forms/components/SingleForm.tsx +++ b/packages/app-store/ee/routing-forms/components/SingleForm.tsx @@ -1,6 +1,6 @@ import { App_RoutingForms_Form } from "@prisma/client"; import { useEffect, useState } from "react"; -import { useForm, UseFormReturn, Controller } from "react-hook-form"; +import { Controller, useForm, UseFormReturn } from "react-hook-form"; import useApp from "@calcom/lib/hooks/useApp"; import { useLocale } from "@calcom/lib/hooks/useLocale"; @@ -8,24 +8,35 @@ import { trpc } from "@calcom/trpc/react"; import { AppGetServerSidePropsContext, AppPrisma, - AppUser, AppSsrInit, + AppUser, } from "@calcom/types/AppGetServerSideProps"; -import { Icon } from "@calcom/ui"; -import { Dialog, DialogContent, DialogClose, DialogFooter, DialogHeader } from "@calcom/ui/Dialog"; -import { Button, ButtonGroup } from "@calcom/ui/components"; -import { Form, TextAreaField, TextField } from "@calcom/ui/components/form"; -import { showToast, DropdownMenuSeparator, Tooltip, VerticalDivider } from "@calcom/ui/v2"; -import Meta from "@calcom/ui/v2/core/Meta"; -import SettingsToggle from "@calcom/ui/v2/core/SettingsToggle"; -import { ShellMain } from "@calcom/ui/v2/core/Shell"; -import Banner from "@calcom/ui/v2/core/banner"; +import { + Banner, + Button, + ButtonGroup, + Dialog, + DialogClose, + DialogContent, + DialogFooter, + DialogHeader, + DropdownMenuSeparator, + Form, + Icon, + Meta, + SettingsToggle, + ShellMain, + showToast, + TextAreaField, + TextField, + Tooltip, + VerticalDivider, +} from "@calcom/ui"; import { getSerializableForm } from "../lib/getSerializableForm"; import { processRoute } from "../lib/processRoute"; import { RoutingPages } from "../pages/route-builder/[...appPages]"; -import { SerializableForm } from "../types/types"; -import { Response, Route } from "../types/types"; +import { Response, Route, SerializableForm } from "../types/types"; import { FormAction, FormActionsDropdown, FormActionsProvider } from "./FormActions"; import FormInputFields from "./FormInputFields"; import RoutingNavBar from "./RoutingNavBar"; diff --git a/packages/app-store/ee/routing-forms/components/react-awesome-query-builder/widgets.tsx b/packages/app-store/ee/routing-forms/components/react-awesome-query-builder/widgets.tsx index 1812d05425..e5292f4425 100644 --- a/packages/app-store/ee/routing-forms/components/react-awesome-query-builder/widgets.tsx +++ b/packages/app-store/ee/routing-forms/components/react-awesome-query-builder/widgets.tsx @@ -1,18 +1,16 @@ import { ChangeEvent } from "react"; import { - FieldProps, - ConjsProps, - ButtonProps, ButtonGroupProps, + ButtonProps, + ConjsProps, + FieldProps, + NumberWidgetProps, ProviderProps, SelectWidgetProps, - NumberWidgetProps, TextWidgetProps, } from "react-awesome-query-builder"; -import { Icon } from "@calcom/ui/Icon"; -import { Button as CalButton, TextArea, TextField } from "@calcom/ui/components"; -import { SelectWithValidation as Select } from "@calcom/ui/v2"; +import { Button as CalButton, Icon, SelectWithValidation as Select, TextArea, TextField } from "@calcom/ui"; // import { mapListValues } from "../../../../utils/stuff"; diff --git a/packages/app-store/ee/routing-forms/index.ts b/packages/app-store/ee/routing-forms/index.ts index a698d1f5c5..5d372ceda3 100644 --- a/packages/app-store/ee/routing-forms/index.ts +++ b/packages/app-store/ee/routing-forms/index.ts @@ -1,3 +1,2 @@ export * as api from "./api"; -export * as components from "./components"; export { metadata } from "./_metadata"; diff --git a/packages/app-store/ee/routing-forms/pages/form-edit/[...appPages].tsx b/packages/app-store/ee/routing-forms/pages/form-edit/[...appPages].tsx index a541745d20..9e32e10302 100644 --- a/packages/app-store/ee/routing-forms/pages/form-edit/[...appPages].tsx +++ b/packages/app-store/ee/routing-forms/pages/form-edit/[...appPages].tsx @@ -1,21 +1,27 @@ import { useAutoAnimate } from "@formkit/auto-animate/react"; import { App_RoutingForms_Form } from "@prisma/client"; import { useEffect, useState } from "react"; -import { Controller, useFieldArray } from "react-hook-form"; -import { UseFormReturn } from "react-hook-form"; +import { Controller, useFieldArray, UseFormReturn } from "react-hook-form"; import { v4 as uuidv4 } from "uuid"; import classNames from "@calcom/lib/classNames"; -import { Icon } from "@calcom/ui"; -import { Button, TextAreaField, TextField } from "@calcom/ui/components"; -import { EmptyScreen, SelectField, Shell } from "@calcom/ui/v2"; -import { BooleanToggleGroupField } from "@calcom/ui/v2/core/form/BooleanToggleGroup"; -import FormCard from "@calcom/ui/v2/core/form/FormCard"; +import { + BooleanToggleGroupField, + Button, + EmptyScreen, + FormCard, + Icon, + SelectField, + Shell, + TextAreaField, + TextField, +} from "@calcom/ui"; import { inferSSRProps } from "@lib/types/inferSSRProps"; -import { getServerSidePropsForSingleFormView as getServerSideProps } from "../../components/SingleForm"; -import SingleForm from "../../components/SingleForm"; +import SingleForm, { + getServerSidePropsForSingleFormView as getServerSideProps, +} from "../../components/SingleForm"; import { SerializableForm } from "../../types/types"; export { getServerSideProps }; diff --git a/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx b/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx index 7418cc2578..c9528d2222 100644 --- a/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx +++ b/packages/app-store/ee/routing-forms/pages/forms/[...appPages].tsx @@ -5,12 +5,18 @@ import useApp from "@calcom/lib/hooks/useApp"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { AppGetServerSidePropsContext, AppPrisma, AppUser } from "@calcom/types/AppGetServerSideProps"; -import { Icon } from "@calcom/ui/Icon"; -import { Badge, ButtonGroup } from "@calcom/ui/components"; -import { DropdownMenuSeparator, Tooltip } from "@calcom/ui/v2"; -import { EmptyScreen } from "@calcom/ui/v2"; -import { List, ListLinkItem } from "@calcom/ui/v2/core/List"; -import Shell, { ShellMain } from "@calcom/ui/v2/core/Shell"; +import { + Badge, + ButtonGroup, + DropdownMenuSeparator, + EmptyScreen, + Icon, + List, + ListLinkItem, + Shell, + ShellMain, + Tooltip, +} from "@calcom/ui"; import { inferSSRProps } from "@lib/types/inferSSRProps"; diff --git a/packages/app-store/ee/routing-forms/pages/reporting/[...appPages].tsx b/packages/app-store/ee/routing-forms/pages/reporting/[...appPages].tsx index 41ce834403..ae16100660 100644 --- a/packages/app-store/ee/routing-forms/pages/reporting/[...appPages].tsx +++ b/packages/app-store/ee/routing-forms/pages/reporting/[...appPages].tsx @@ -1,18 +1,26 @@ -import React, { useRef, useState, useCallback } from "react"; -import { Query, Config, Builder, Utils as QbUtils, JsonLogicResult } from "react-awesome-query-builder"; -import { JsonTree, ImmutableTree, BuilderProps } from "react-awesome-query-builder"; +import React, { useCallback, useRef, useState } from "react"; +import { + Builder, + BuilderProps, + Config, + ImmutableTree, + JsonLogicResult, + JsonTree, + Query, + Utils as QbUtils, +} from "react-awesome-query-builder"; import { classNames } from "@calcom/lib"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { inferSSRProps } from "@calcom/types/inferSSRProps"; -import { Button } from "@calcom/ui"; -import { Shell } from "@calcom/ui/v2"; +import { Button, Shell } from "@calcom/ui"; import { useInViewObserver } from "@lib/hooks/useInViewObserver"; -import SingleForm from "../../components/SingleForm"; -import { getServerSidePropsForSingleFormView as getServerSideProps } from "../../components/SingleForm"; +import SingleForm, { + getServerSidePropsForSingleFormView as getServerSideProps, +} from "../../components/SingleForm"; import QueryBuilderInitialConfig from "../../components/react-awesome-query-builder/config/config"; import "../../components/react-awesome-query-builder/styles.css"; import { JsonLogicQuery } from "../../jsonLogicToPrisma"; diff --git a/packages/app-store/ee/routing-forms/pages/route-builder/[...appPages].tsx b/packages/app-store/ee/routing-forms/pages/route-builder/[...appPages].tsx index 6fab53c1aa..f646f58c4e 100644 --- a/packages/app-store/ee/routing-forms/pages/route-builder/[...appPages].tsx +++ b/packages/app-store/ee/routing-forms/pages/route-builder/[...appPages].tsx @@ -1,19 +1,25 @@ import { useAutoAnimate } from "@formkit/auto-animate/react"; import { App_RoutingForms_Form } from "@prisma/client"; -import React, { useState, useCallback } from "react"; -import { Query, Config, Builder, Utils as QbUtils } from "react-awesome-query-builder"; +import React, { useCallback, useState } from "react"; +import { Builder, Config, Query, Utils as QbUtils } from "react-awesome-query-builder"; // types -import { JsonTree, ImmutableTree, BuilderProps } from "react-awesome-query-builder"; +import { BuilderProps, ImmutableTree, JsonTree } from "react-awesome-query-builder"; import { trpc } from "@calcom/trpc/react"; import { inferSSRProps } from "@calcom/types/inferSSRProps"; -import { Icon } from "@calcom/ui"; -import { Button, TextField, TextArea } from "@calcom/ui/components"; -import { SelectWithValidation as Select, Shell } from "@calcom/ui/v2"; -import FormCard from "@calcom/ui/v2/core/form/FormCard"; +import { + Button, + FormCard, + Icon, + SelectWithValidation as Select, + Shell, + TextArea, + TextField, +} from "@calcom/ui"; -import { getServerSidePropsForSingleFormView as getServerSideProps } from "../../components/SingleForm"; -import SingleForm from "../../components/SingleForm"; +import SingleForm, { + getServerSidePropsForSingleFormView as getServerSideProps, +} from "../../components/SingleForm"; import QueryBuilderInitialConfig from "../../components/react-awesome-query-builder/config/config"; import "../../components/react-awesome-query-builder/styles.css"; import { SerializableForm } from "../../types/types"; diff --git a/packages/app-store/ee/routing-forms/pages/routing-link/[...appPages].tsx b/packages/app-store/ee/routing-forms/pages/routing-link/[...appPages].tsx index 20ef9feef0..f3910db58d 100644 --- a/packages/app-store/ee/routing-forms/pages/routing-link/[...appPages].tsx +++ b/packages/app-store/ee/routing-forms/pages/routing-link/[...appPages].tsx @@ -1,7 +1,6 @@ import Head from "next/head"; import { useRouter } from "next/router"; -import { useState, useRef, FormEvent } from "react"; -import { useEffect } from "react"; +import { FormEvent, useEffect, useRef, useState } from "react"; import { Toaster } from "react-hot-toast"; import { v4 as uuidv4 } from "uuid"; @@ -13,8 +12,7 @@ import useTheme from "@calcom/lib/hooks/useTheme"; import { trpc } from "@calcom/trpc/react"; import { AppGetServerSidePropsContext, AppPrisma } from "@calcom/types/AppGetServerSideProps"; import { inferSSRProps } from "@calcom/types/inferSSRProps"; -import { Button } from "@calcom/ui/components"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Button, showToast } from "@calcom/ui"; import { useExposePlanGlobally } from "@lib/hooks/useExposePlanGlobally"; diff --git a/packages/app-store/exchange2013calendar/pages/setup/index.tsx b/packages/app-store/exchange2013calendar/pages/setup/index.tsx index 436abd1df2..6ae478b988 100644 --- a/packages/app-store/exchange2013calendar/pages/setup/index.tsx +++ b/packages/app-store/exchange2013calendar/pages/setup/index.tsx @@ -4,8 +4,7 @@ import { useForm } from "react-hook-form"; import { Toaster } from "react-hot-toast"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, Form, TextField } from "@calcom/ui/components"; -import { Alert } from "@calcom/ui/v2"; +import { Alert, Button, Form, TextField } from "@calcom/ui"; export default function Exchange2013CalendarSetup() { const { t } = useLocale(); diff --git a/packages/app-store/exchange2016calendar/pages/setup/index.tsx b/packages/app-store/exchange2016calendar/pages/setup/index.tsx index 62a9d37544..da536f3196 100644 --- a/packages/app-store/exchange2016calendar/pages/setup/index.tsx +++ b/packages/app-store/exchange2016calendar/pages/setup/index.tsx @@ -4,8 +4,7 @@ import { useForm } from "react-hook-form"; import { Toaster } from "react-hot-toast"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, Form, TextField } from "@calcom/ui/components"; -import { Alert } from "@calcom/ui/v2"; +import { Alert, Button, Form, TextField } from "@calcom/ui"; export default function Exchange2016CalendarSetup() { const { t } = useLocale(); diff --git a/packages/app-store/exchangecalendar/pages/setup/index.tsx b/packages/app-store/exchangecalendar/pages/setup/index.tsx index a47cfb9fd2..6a683d29ec 100644 --- a/packages/app-store/exchangecalendar/pages/setup/index.tsx +++ b/packages/app-store/exchangecalendar/pages/setup/index.tsx @@ -6,8 +6,7 @@ import { Toaster } from "react-hot-toast"; import z from "zod"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, EmailField, Form, PasswordField, TextField } from "@calcom/ui/components"; -import { Alert, SelectField, Switch } from "@calcom/ui/v2"; +import { Alert, Button, EmailField, Form, PasswordField, SelectField, Switch, TextField } from "@calcom/ui"; import { ExchangeAuthentication } from "../../enums"; diff --git a/packages/app-store/fathom/extensions/EventTypeAppCard.tsx b/packages/app-store/fathom/extensions/EventTypeAppCard.tsx index dc6ee96165..77c5b45b59 100644 --- a/packages/app-store/fathom/extensions/EventTypeAppCard.tsx +++ b/packages/app-store/fathom/extensions/EventTypeAppCard.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import { useAppContextWithSchema } from "@calcom/app-store/EventTypeAppContext"; import AppCard from "@calcom/app-store/_components/AppCard"; import type { EventTypeAppCardComponent } from "@calcom/app-store/types"; -import { TextField } from "@calcom/ui/components/form"; +import { TextField } from "@calcom/ui"; import { appDataSchema } from "../zod"; diff --git a/packages/app-store/ga4/extensions/EventTypeAppCard.tsx b/packages/app-store/ga4/extensions/EventTypeAppCard.tsx index dc6ee96165..77c5b45b59 100644 --- a/packages/app-store/ga4/extensions/EventTypeAppCard.tsx +++ b/packages/app-store/ga4/extensions/EventTypeAppCard.tsx @@ -3,7 +3,7 @@ import { useState } from "react"; import { useAppContextWithSchema } from "@calcom/app-store/EventTypeAppContext"; import AppCard from "@calcom/app-store/_components/AppCard"; import type { EventTypeAppCardComponent } from "@calcom/app-store/types"; -import { TextField } from "@calcom/ui/components/form"; +import { TextField } from "@calcom/ui"; import { appDataSchema } from "../zod"; diff --git a/packages/app-store/giphy/components/SearchDialog.tsx b/packages/app-store/giphy/components/SearchDialog.tsx index a9b926c9ba..f891b0a965 100644 --- a/packages/app-store/giphy/components/SearchDialog.tsx +++ b/packages/app-store/giphy/components/SearchDialog.tsx @@ -1,12 +1,9 @@ -import { SearchIcon, LinkIcon } from "@heroicons/react/outline"; -import { useState } from "react"; -import { Dispatch, SetStateAction } from "react"; +import { LinkIcon, SearchIcon } from "@heroicons/react/outline"; +import { Dispatch, SetStateAction, useState } from "react"; import classNames from "@calcom/lib/classNames"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Alert } from "@calcom/ui/Alert"; -import Button from "@calcom/ui/Button"; -import { Dialog, DialogClose, DialogContent, DialogFooter } from "@calcom/ui/Dialog"; +import { Alert, Button, Dialog, DialogClose, DialogContent, DialogFooter } from "@calcom/ui"; interface ISearchDialog { isOpenDialog: boolean; diff --git a/packages/app-store/giphy/components/SelectGifInput.tsx b/packages/app-store/giphy/components/SelectGifInput.tsx index 199571a51c..809704ea38 100644 --- a/packages/app-store/giphy/components/SelectGifInput.tsx +++ b/packages/app-store/giphy/components/SelectGifInput.tsx @@ -1,8 +1,8 @@ -import { PlusIcon, PencilAltIcon, XIcon } from "@heroicons/react/solid"; +import { PencilAltIcon, PlusIcon, XIcon } from "@heroicons/react/solid"; import { useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; +import { Button } from "@calcom/ui"; import { SearchDialog } from "./SearchDialog"; @@ -35,7 +35,7 @@ export default function SelectGifInput(props: ISelectGifInput) { {selectedGif && ( @@ -85,58 +94,84 @@ export default function ApiKeyDialogForm(props: {
- ) : ( - & { neverExpires?: boolean }> +
{ - const apiKey = await utils.client.viewer.apiKeys.create.mutate(event); - setApiKey(apiKey); - setApiKeyDetails({ ...event, neverExpires: !!event.neverExpires }); - await utils.viewer.apiKeys.list.invalidate(); - setSuccessfulNewApiKeyModal(true); + if (defaultValues) { + console.log("Name changed"); + await updateApiKeyMutation.mutate({ id: defaultValues.id, note: event.note }); + } else { + const apiKey = await utils.client.viewer.apiKeys.create.mutate(event); + setApiKey(apiKey); + setApiKeyDetails({ ...event }); + await utils.viewer.apiKeys.list.invalidate(); + setSuccessfulNewApiKeyModal(true); + } }} className="space-y-4"> -
-

{props.title}

+
+

+ {defaultValues ? t("edit_api_key") : t("create_api_key")} +

{t("api_key_modal_subtitle")}

- -
-
-
- {t("expire_date")} - ( - - )} - /> -
( - { + form.setValue("note", e?.target.value); + }} + type="text" /> )} />
+ {!defaultValues && ( +
+
+ {t("expire_date")} + ( + + )} + /> +
+ ( + + )} + /> +
+ )} + -
- +
+ + +
+ ); -} +}; + +export default ApiKeyListItem; diff --git a/packages/features/ee/api-keys/components/v2/ApiKeyDialogForm.tsx b/packages/features/ee/api-keys/components/v2/ApiKeyDialogForm.tsx deleted file mode 100644 index 04ba245f7b..0000000000 --- a/packages/features/ee/api-keys/components/v2/ApiKeyDialogForm.tsx +++ /dev/null @@ -1,182 +0,0 @@ -import { useState } from "react"; -import { Controller, useForm } from "react-hook-form"; - -import dayjs from "@calcom/dayjs"; -import { TApiKeys } from "@calcom/ee/api-keys/components/ApiKeyListItem"; -import LicenseRequired from "@calcom/ee/common/components/v2/LicenseRequired"; -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { trpc } from "@calcom/trpc/react"; -import { DialogFooter } from "@calcom/ui/Dialog"; -import { ClipboardCopyIcon } from "@calcom/ui/Icon"; -import { Tooltip } from "@calcom/ui/Tooltip"; -import { Button } from "@calcom/ui/components/button"; -import { Form, TextField } from "@calcom/ui/components/form"; -import { DatePicker } from "@calcom/ui/v2"; -import Switch from "@calcom/ui/v2/core/Switch"; -import showToast from "@calcom/ui/v2/core/notifications"; - -export default function ApiKeyDialogForm({ - defaultValues, - handleClose, -}: { - defaultValues?: Omit & { neverExpires?: boolean }; - handleClose: () => void; -}) { - const { t } = useLocale(); - const utils = trpc.useContext(); - - const updateApiKeyMutation = trpc.viewer.apiKeys.edit.useMutation({ - onSuccess() { - utils.viewer.apiKeys.list.invalidate(); - showToast(t("api_key_updated"), "success"); - handleClose(); - }, - onError() { - showToast(t("api_key_update_failed"), "error"); - }, - }); - - const [apiKey, setApiKey] = useState(""); - const [successfulNewApiKeyModal, setSuccessfulNewApiKeyModal] = useState(false); - const [apiKeyDetails, setApiKeyDetails] = useState({ - expiresAt: null as Date | null, - note: "" as string | null, - neverExpires: false, - }); - - const form = useForm({ - defaultValues: { - note: defaultValues?.note || "", - neverExpires: defaultValues?.neverExpires || false, - expiresAt: defaultValues?.expiresAt || dayjs().add(1, "month").toDate(), - }, - }); - const watchNeverExpires = form.watch("neverExpires"); - - return ( - - {successfulNewApiKeyModal ? ( - <> -
-

- {t("success_api_key_created")} -

-
- {t("success_api_key_created_bold_tagline")}{" "} - {t("you_will_only_view_it_once")} -
-
-
-
- - {apiKey} - - - - -
- - {apiKeyDetails.neverExpires - ? t("never_expire_key") - : `${t("expires")} ${apiKeyDetails?.expiresAt?.toLocaleDateString()}`} - -
- - - - - ) : ( - { - if (defaultValues) { - console.log("Name changed"); - await updateApiKeyMutation.mutate({ id: defaultValues.id, note: event.note }); - } else { - const apiKey = await utils.client.viewer.apiKeys.create.mutate(event); - setApiKey(apiKey); - setApiKeyDetails({ ...event }); - await utils.viewer.apiKeys.list.invalidate(); - setSuccessfulNewApiKeyModal(true); - } - }} - className="space-y-4"> -
-

- {defaultValues ? t("edit_api_key") : t("create_api_key")} -

-

{t("api_key_modal_subtitle")}

-
-
- ( - { - form.setValue("note", e?.target.value); - }} - type="text" - /> - )} - /> -
- {!defaultValues && ( -
-
- {t("expire_date")} - ( - - )} - /> -
- ( - - )} - /> -
- )} - - - - - - - )} -
- ); -} diff --git a/packages/features/ee/api-keys/components/v2/ApiKeyListItem.tsx b/packages/features/ee/api-keys/components/v2/ApiKeyListItem.tsx deleted file mode 100644 index 33df1b370f..0000000000 --- a/packages/features/ee/api-keys/components/v2/ApiKeyListItem.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import dayjs from "@calcom/dayjs"; -import { TApiKeys } from "@calcom/ee/api-keys/components/ApiKeyListItem"; -import { classNames } from "@calcom/lib"; -import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Badge } from "@calcom/ui/components/badge"; -import { Button } from "@calcom/ui/components/button"; -import Dropdown, { - DropdownItem, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "@calcom/ui/v2/core/Dropdown"; - -const ApiKeyListItem = ({ - apiKey, - lastItem, - onEditClick, -}: { - apiKey: TApiKeys; - lastItem: boolean; - onEditClick: () => void; -}) => { - const { t } = useLocale(); - const utils = trpc.useContext(); - - const isExpired = apiKey?.expiresAt ? apiKey.expiresAt < new Date() : null; - const neverExpires = apiKey?.expiresAt === null; - - const deleteApiKey = trpc.viewer.apiKeys.delete.useMutation({ - async onSuccess() { - await utils.viewer.apiKeys.list.invalidate(); - }, - }); - - return ( -
-
-

{apiKey?.note ? apiKey.note : t("api_key_no_note")}

-
- {!neverExpires && isExpired && ( - - {t("expired")} - - )} - {!isExpired && ( - - {t("active")} - - )} -

- {" "} - {neverExpires ? ( -

{t("api_key_never_expires")}
- ) : ( - `${isExpired ? t("expired") : t("expires")} ${dayjs(apiKey?.expiresAt?.toString()).fromNow()}` - )} -

-
-
-
- - -
-
- ); -}; - -export default ApiKeyListItem; diff --git a/packages/features/ee/common/components/LicenseBanner.tsx b/packages/features/ee/common/components/LicenseBanner.tsx index 6766419523..0d1eae3e31 100644 --- a/packages/features/ee/common/components/LicenseBanner.tsx +++ b/packages/features/ee/common/components/LicenseBanner.tsx @@ -1,9 +1,7 @@ import { Trans } from "react-i18next"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import ConfirmationDialogContent from "@calcom/ui/ConfirmationDialogContent"; -import { Dialog, DialogTrigger } from "@calcom/ui/Dialog"; -import { Icon, BadgeCheckIcon } from "@calcom/ui/Icon"; +import { BadgeCheckIcon, ConfirmationDialogContent, Dialog, DialogTrigger, Icon } from "@calcom/ui"; export default function LicenseBanner() { const { t } = useLocale(); diff --git a/packages/features/ee/common/components/LicenseRequired.tsx b/packages/features/ee/common/components/LicenseRequired.tsx index 1ab43ce8a3..ccbf570c6e 100644 --- a/packages/features/ee/common/components/LicenseRequired.tsx +++ b/packages/features/ee/common/components/LicenseRequired.tsx @@ -7,8 +7,7 @@ import { useSession } from "next-auth/react"; import React, { AriaRole, ComponentType, Fragment } from "react"; import { CONSOLE_URL } from "@calcom/lib/constants"; -import EmptyScreen from "@calcom/ui/EmptyScreen"; -import { Icon } from "@calcom/ui/Icon"; +import { EmptyScreen, Icon } from "@calcom/ui"; type LicenseRequiredProps = { as?: keyof JSX.IntrinsicElements | ""; diff --git a/packages/features/ee/common/components/v2/LicenseRequired.tsx b/packages/features/ee/common/components/v2/LicenseRequired.tsx index 36a38373b9..c1949d2ca8 100644 --- a/packages/features/ee/common/components/v2/LicenseRequired.tsx +++ b/packages/features/ee/common/components/v2/LicenseRequired.tsx @@ -2,8 +2,7 @@ import { useSession } from "next-auth/react"; import React, { AriaRole, ComponentType, Fragment } from "react"; import { CONSOLE_URL } from "@calcom/lib/constants"; -import { Icon } from "@calcom/ui/Icon"; -import { EmptyScreen } from "@calcom/ui/v2"; +import { EmptyScreen, Icon } from "@calcom/ui"; type LicenseRequiredProps = { as?: keyof JSX.IntrinsicElements | ""; diff --git a/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx b/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx index 7240349842..ba8cc74f0f 100644 --- a/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx +++ b/packages/features/ee/impersonation/components/ImpersonatingBanner.tsx @@ -2,7 +2,7 @@ import { useSession } from "next-auth/react"; import { Trans } from "next-i18next"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Alert } from "@calcom/ui/Alert"; +import { Alert } from "@calcom/ui"; function ImpersonatingBanner() { const { t } = useLocale(); diff --git a/packages/features/ee/payments/components/Payment.tsx b/packages/features/ee/payments/components/Payment.tsx index e63663fe4a..8d15682d45 100644 --- a/packages/features/ee/payments/components/Payment.tsx +++ b/packages/features/ee/payments/components/Payment.tsx @@ -6,7 +6,7 @@ import { SyntheticEvent, useEffect, useState } from "react"; import { PaymentData } from "@calcom/app-store/stripepayment/lib/server"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; +import { Button } from "@calcom/ui"; const CARD_OPTIONS: stripejs.StripeCardElementOptions = { iconStyle: "solid" as const, diff --git a/packages/features/ee/payments/components/PaymentPage.tsx b/packages/features/ee/payments/components/PaymentPage.tsx index 119bd61890..ee63386206 100644 --- a/packages/features/ee/payments/components/PaymentPage.tsx +++ b/packages/features/ee/payments/components/PaymentPage.tsx @@ -14,7 +14,7 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; import useTheme from "@calcom/lib/hooks/useTheme"; import { getIs24hClockFromLocalStorage, isBrowserLocale24h } from "@calcom/lib/timeFormat"; import { localStorage } from "@calcom/lib/webstorage"; -import { Icon } from "@calcom/ui/Icon"; +import { Icon } from "@calcom/ui"; import type { PaymentPageProps } from "../pages/payment"; import PaymentComponent from "./Payment"; diff --git a/packages/features/ee/sso/components/ConfigDialogForm.tsx b/packages/features/ee/sso/components/ConfigDialogForm.tsx index f06ab813bd..e65414adcb 100644 --- a/packages/features/ee/sso/components/ConfigDialogForm.tsx +++ b/packages/features/ee/sso/components/ConfigDialogForm.tsx @@ -4,10 +4,7 @@ import LicenseRequired from "@calcom/ee/common/components/v2/LicenseRequired"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { collectPageParameters, telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry"; import { trpc } from "@calcom/trpc/react"; -import { DialogFooter } from "@calcom/ui/Dialog"; -import { Button } from "@calcom/ui/components/button"; -import { Form, TextArea } from "@calcom/ui/components/form"; -import { showToast } from "@calcom/ui/v2"; +import { Button, DialogFooter, Form, showToast, TextArea } from "@calcom/ui"; interface TeamSSOValues { metadata: string; diff --git a/packages/features/ee/sso/components/SAMLConfiguration.tsx b/packages/features/ee/sso/components/SAMLConfiguration.tsx index 0ca3b3e5c5..2bf4ae1441 100644 --- a/packages/features/ee/sso/components/SAMLConfiguration.tsx +++ b/packages/features/ee/sso/components/SAMLConfiguration.tsx @@ -4,15 +4,21 @@ import LicenseRequired from "@calcom/features/ee/common/components/v2/LicenseReq import ConfigDialogForm from "@calcom/features/ee/sso/components/ConfigDialogForm"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Alert } from "@calcom/ui/Alert"; -import { ClipboardCopyIcon } from "@calcom/ui/Icon"; -import { Button, Label, Badge } from "@calcom/ui/components"; -import { showToast } from "@calcom/ui/v2"; -import ConfirmationDialogContent from "@calcom/ui/v2/core/ConfirmationDialogContent"; -import { Dialog, DialogTrigger, DialogContent } from "@calcom/ui/v2/core/Dialog"; -import Meta from "@calcom/ui/v2/core/Meta"; -import SkeletonLoader from "@calcom/ui/v2/core/apps/SkeletonLoader"; +import { + Alert, + Badge, + Button, + ClipboardCopyIcon, + ConfirmationDialogContent, + Dialog, + DialogContent, + DialogTrigger, + Icon, + Label, + Meta, + showToast, + SkeletonLoader, +} from "@calcom/ui"; export default function SAMLConfiguration({ teamId }: { teamId: number | null }) { const { t } = useLocale(); diff --git a/packages/features/ee/sso/page/teams-sso-view.tsx b/packages/features/ee/sso/page/teams-sso-view.tsx index 4cf1e60884..692b1ea9ef 100644 --- a/packages/features/ee/sso/page/teams-sso-view.tsx +++ b/packages/features/ee/sso/page/teams-sso-view.tsx @@ -2,8 +2,7 @@ import { useRouter } from "next/router"; import { HOSTED_CAL_FEATURES } from "@calcom/lib/constants"; import { trpc } from "@calcom/trpc/react"; -import SkeletonLoader from "@calcom/ui/v2/core/apps/SkeletonLoader"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { getSettingsLayout as getLayout, SkeletonLoader } from "@calcom/ui"; import SAMLConfiguration from "../components/SAMLConfiguration"; diff --git a/packages/features/ee/sso/page/user-sso-view.tsx b/packages/features/ee/sso/page/user-sso-view.tsx index fdcf3d6d71..ce96edeb58 100644 --- a/packages/features/ee/sso/page/user-sso-view.tsx +++ b/packages/features/ee/sso/page/user-sso-view.tsx @@ -1,7 +1,7 @@ import { useRouter } from "next/router"; import { HOSTED_CAL_FEATURES } from "@calcom/lib/constants"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { getSettingsLayout as getLayout } from "@calcom/ui"; import SAMLConfiguration from "../components/SAMLConfiguration"; diff --git a/packages/features/ee/support/components/HelpMenuItem.tsx b/packages/features/ee/support/components/HelpMenuItem.tsx index 6b109dfd8d..3004ba59f5 100644 --- a/packages/features/ee/support/components/HelpMenuItem.tsx +++ b/packages/features/ee/support/components/HelpMenuItem.tsx @@ -4,9 +4,7 @@ import { useChat } from "react-live-chat-loader"; import classNames from "@calcom/lib/classNames"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { Button, Icon, showToast } from "@calcom/ui"; import ContactMenuItem from "./ContactMenuItem"; diff --git a/packages/features/ee/teams/components/AddNewTeamMembers.tsx b/packages/features/ee/teams/components/AddNewTeamMembers.tsx index 7b9c5d6f00..597cb7339e 100644 --- a/packages/features/ee/teams/components/AddNewTeamMembers.tsx +++ b/packages/features/ee/teams/components/AddNewTeamMembers.tsx @@ -8,10 +8,7 @@ import { classNames } from "@calcom/lib"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Avatar, Badge, Button } from "@calcom/ui/components"; -import { showToast } from "@calcom/ui/v2/core"; -import { SkeletonContainer, SkeletonText } from "@calcom/ui/v2/core/skeleton"; +import { Avatar, Badge, Button, Icon, showToast, SkeletonContainer, SkeletonText } from "@calcom/ui"; const querySchema = z.object({ id: z.string().transform((val) => parseInt(val)), diff --git a/packages/features/ee/teams/components/CreateANewTeamForm.tsx b/packages/features/ee/teams/components/CreateANewTeamForm.tsx index ba265fb950..bdacf87c50 100644 --- a/packages/features/ee/teams/components/CreateANewTeamForm.tsx +++ b/packages/features/ee/teams/components/CreateANewTeamForm.tsx @@ -5,10 +5,7 @@ import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import slugify from "@calcom/lib/slugify"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Avatar, Button } from "@calcom/ui/components"; -import { Form, TextField } from "@calcom/ui/components/form"; -import ImageUploader from "@calcom/ui/v2/core/ImageUploader"; +import { Avatar, Button, Form, Icon, ImageUploader, TextField } from "@calcom/ui"; import { NewTeamFormValues } from "../lib/types"; diff --git a/packages/features/ee/teams/components/DisableTeamImpersonation.tsx b/packages/features/ee/teams/components/DisableTeamImpersonation.tsx index 5ac9156eba..3b13b07ff9 100644 --- a/packages/features/ee/teams/components/DisableTeamImpersonation.tsx +++ b/packages/features/ee/teams/components/DisableTeamImpersonation.tsx @@ -1,7 +1,7 @@ import { classNames } from "@calcom/lib"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { showToast, Switch } from "@calcom/ui/v2/core"; +import { showToast, Switch } from "@calcom/ui"; const DisableTeamImpersonation = ({ teamId, diff --git a/packages/features/ee/teams/components/MemberChangeRoleModal.tsx b/packages/features/ee/teams/components/MemberChangeRoleModal.tsx index 4f0d2cb2db..8e3ba8ccc7 100644 --- a/packages/features/ee/teams/components/MemberChangeRoleModal.tsx +++ b/packages/features/ee/teams/components/MemberChangeRoleModal.tsx @@ -3,8 +3,7 @@ import { SyntheticEvent, useMemo, useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui/components"; -import { Dialog, DialogContent, Select } from "@calcom/ui/v2"; +import { Button, Dialog, DialogContent, Select } from "@calcom/ui"; type MembershipRoleOption = { label: string; diff --git a/packages/features/ee/teams/components/MemberInvitationModal.tsx b/packages/features/ee/teams/components/MemberInvitationModal.tsx index 76c2017009..290001d28d 100644 --- a/packages/features/ee/teams/components/MemberInvitationModal.tsx +++ b/packages/features/ee/teams/components/MemberInvitationModal.tsx @@ -5,10 +5,16 @@ import { Controller, useForm } from "react-hook-form"; import { IS_TEAM_BILLING_ENABLED } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, TextField } from "@calcom/ui/components"; -import CheckboxField from "@calcom/ui/components/form/checkbox/Checkbox"; -import { Form } from "@calcom/ui/form/fields"; -import { Dialog, DialogContent, DialogFooter, Select } from "@calcom/ui/v2"; +import { + Button, + CheckboxField, + Dialog, + DialogContent, + DialogFooter, + Form, + Select, + TextField, +} from "@calcom/ui"; import { PendingMember } from "../lib/types"; diff --git a/packages/features/ee/teams/components/MemberListItem.tsx b/packages/features/ee/teams/components/MemberListItem.tsx index a6c1d263b2..ba6b5e309f 100644 --- a/packages/features/ee/teams/components/MemberListItem.tsx +++ b/packages/features/ee/teams/components/MemberListItem.tsx @@ -6,9 +6,11 @@ import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery"; -import { Icon } from "@calcom/ui/Icon"; -import { Button, ButtonGroup, Avatar } from "@calcom/ui/components"; import { + Avatar, + Button, + ButtonGroup, + ConfirmationDialogContent, Dialog, DialogContent, DialogTrigger, @@ -18,10 +20,10 @@ import { DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, + Icon, showToast, Tooltip, -} from "@calcom/ui/v2/core"; -import ConfirmationDialogContent from "@calcom/ui/v2/core/ConfirmationDialogContent"; +} from "@calcom/ui"; import MemberChangeRoleModal from "./MemberChangeRoleModal"; import TeamPill, { TeamRole } from "./TeamPill"; diff --git a/packages/features/ee/teams/components/SkeletonloaderTeamList.tsx b/packages/features/ee/teams/components/SkeletonloaderTeamList.tsx index 84c00dcd7b..b960eefad8 100644 --- a/packages/features/ee/teams/components/SkeletonloaderTeamList.tsx +++ b/packages/features/ee/teams/components/SkeletonloaderTeamList.tsx @@ -1,4 +1,4 @@ -import { SkeletonText } from "@calcom/ui/v2"; +import { SkeletonText } from "@calcom/ui"; function SkeletonLoaderTeamList() { return ( diff --git a/packages/features/ee/teams/components/TeamAvailabilityModal.tsx b/packages/features/ee/teams/components/TeamAvailabilityModal.tsx index d4f0885eea..c8c98f304b 100644 --- a/packages/features/ee/teams/components/TeamAvailabilityModal.tsx +++ b/packages/features/ee/teams/components/TeamAvailabilityModal.tsx @@ -1,12 +1,10 @@ -import React, { useState, useEffect } from "react"; +import { useEffect, useState } from "react"; import dayjs from "@calcom/dayjs"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Avatar } from "@calcom/ui/components/avatar"; -import Select from "@calcom/ui/form/Select"; -import TimezoneSelect, { ITimezone } from "@calcom/ui/form/TimezoneSelect"; -import DatePicker from "@calcom/ui/v2/core/form/DatePicker"; +import type { ITimezone } from "@calcom/ui"; +import { Avatar, DatePickerField as DatePicker, Select, TimezoneSelect } from "@calcom/ui"; import LicenseRequired from "../../common/components/LicenseRequired"; import TeamAvailabilityTimes from "./TeamAvailabilityTimes"; diff --git a/packages/features/ee/teams/components/TeamAvailabilityScreen.tsx b/packages/features/ee/teams/components/TeamAvailabilityScreen.tsx index a39f84c33f..57b500ca06 100644 --- a/packages/features/ee/teams/components/TeamAvailabilityScreen.tsx +++ b/packages/features/ee/teams/components/TeamAvailabilityScreen.tsx @@ -1,14 +1,12 @@ -import React, { useState, useEffect, CSSProperties } from "react"; +import { CSSProperties, useEffect, useState } from "react"; import AutoSizer from "react-virtualized-auto-sizer"; import { FixedSizeList as List } from "react-window"; import dayjs from "@calcom/dayjs"; import { CAL_URL } from "@calcom/lib/constants"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Avatar } from "@calcom/ui/components/avatar"; -import Select from "@calcom/ui/form/Select"; -import TimezoneSelect, { ITimezone } from "@calcom/ui/form/TimezoneSelect"; -import DatePicker from "@calcom/ui/v2/core/form/DatePicker"; +import type { ITimezone } from "@calcom/ui"; +import { Avatar, DatePickerField as DatePicker, Select, TimezoneSelect } from "@calcom/ui"; import TeamAvailabilityTimes from "./TeamAvailabilityTimes"; diff --git a/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx b/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx index 7d7a04663f..711d369512 100644 --- a/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx +++ b/packages/features/ee/teams/components/TeamAvailabilityTimes.tsx @@ -5,7 +5,7 @@ import { ITimezone } from "react-timezone-select"; import { Dayjs } from "@calcom/dayjs"; import getSlots from "@calcom/lib/slots"; import { trpc } from "@calcom/trpc/react"; -import Loader from "@calcom/ui/Loader"; +import { Loader } from "@calcom/ui"; interface Props { teamId: number; diff --git a/packages/features/ee/teams/components/TeamInviteList.tsx b/packages/features/ee/teams/components/TeamInviteList.tsx index 40378f3922..84c74ff82f 100644 --- a/packages/features/ee/teams/components/TeamInviteList.tsx +++ b/packages/features/ee/teams/components/TeamInviteList.tsx @@ -2,7 +2,7 @@ import { useState } from "react"; import { MembershipRole } from "@calcom/prisma/client"; import { trpc } from "@calcom/trpc/react"; -import { showToast } from "@calcom/ui/v2"; +import { showToast } from "@calcom/ui"; import TeamInviteListItem from "./TeamInviteListItem"; diff --git a/packages/features/ee/teams/components/TeamInviteListItem.tsx b/packages/features/ee/teams/components/TeamInviteListItem.tsx index 66dc811452..36063f91aa 100644 --- a/packages/features/ee/teams/components/TeamInviteListItem.tsx +++ b/packages/features/ee/teams/components/TeamInviteListItem.tsx @@ -4,9 +4,15 @@ import classNames from "@calcom/lib/classNames"; import { getPlaceholderAvatar } from "@calcom/lib/getPlaceholderAvatar"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Avatar, Button } from "@calcom/ui/components"; -import { Dropdown, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@calcom/ui/v2"; +import { + Avatar, + Button, + Dropdown, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + Icon, +} from "@calcom/ui"; interface Props { team: { diff --git a/packages/features/ee/teams/components/TeamList.tsx b/packages/features/ee/teams/components/TeamList.tsx index c1005bfa48..d92f32a9fe 100644 --- a/packages/features/ee/teams/components/TeamList.tsx +++ b/packages/features/ee/teams/components/TeamList.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { showToast } from "@calcom/ui"; import TeamListItem from "./TeamListItem"; diff --git a/packages/features/ee/teams/components/TeamListItem.tsx b/packages/features/ee/teams/components/TeamListItem.tsx index 7fad5bdc33..5f331f1014 100644 --- a/packages/features/ee/teams/components/TeamListItem.tsx +++ b/packages/features/ee/teams/components/TeamListItem.tsx @@ -6,21 +6,23 @@ import classNames from "@calcom/lib/classNames"; import { getPlaceholderAvatar } from "@calcom/lib/getPlaceholderAvatar"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Avatar } from "@calcom/ui/components"; -import { Button } from "@calcom/ui/components/button"; -import { ButtonGroup } from "@calcom/ui/components/buttonGroup"; -import ConfirmationDialogContent from "@calcom/ui/v2/core/ConfirmationDialogContent"; -import { Dialog, DialogTrigger } from "@calcom/ui/v2/core/Dialog"; -import Dropdown, { +import { + Avatar, + Button, + ButtonGroup, + ConfirmationDialogContent, + Dialog, + DialogTrigger, + Dropdown, DropdownItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, -} from "@calcom/ui/v2/core/Dropdown"; -import { Tooltip } from "@calcom/ui/v2/core/Tooltip"; -import showToast from "@calcom/ui/v2/core/notifications"; + Icon, + showToast, + Tooltip, +} from "@calcom/ui"; import { TeamRole } from "./TeamPill"; diff --git a/packages/features/ee/teams/components/TeamsListing.tsx b/packages/features/ee/teams/components/TeamsListing.tsx index c4cf64a199..5e5097543f 100644 --- a/packages/features/ee/teams/components/TeamsListing.tsx +++ b/packages/features/ee/teams/components/TeamsListing.tsx @@ -3,10 +3,7 @@ import { useState } from "react"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components/button"; -import { Alert } from "@calcom/ui/v2/core/Alert"; -import EmptyScreen from "@calcom/ui/v2/core/EmptyScreen"; +import { Alert, Button, EmptyScreen, Icon } from "@calcom/ui"; import SkeletonLoaderTeamList from "./SkeletonloaderTeamList"; import TeamList from "./TeamList"; diff --git a/packages/features/ee/teams/components/TeamsUpgradeBanner.tsx b/packages/features/ee/teams/components/TeamsUpgradeBanner.tsx index 243ec72231..2142dbad04 100644 --- a/packages/features/ee/teams/components/TeamsUpgradeBanner.tsx +++ b/packages/features/ee/teams/components/TeamsUpgradeBanner.tsx @@ -2,8 +2,7 @@ import { useRouter } from "next/router"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { TopBanner } from "@calcom/ui/components"; -import { showToast } from "@calcom/ui/v2/core"; +import { showToast, TopBanner } from "@calcom/ui"; export function TeamsUpgradeBanner() { const { t } = useLocale(); diff --git a/packages/features/ee/teams/components/v2/SkeletonLoaderAvailabilityTimes.tsx b/packages/features/ee/teams/components/v2/SkeletonLoaderAvailabilityTimes.tsx index 8f1e4b71fb..745da0cf38 100644 --- a/packages/features/ee/teams/components/v2/SkeletonLoaderAvailabilityTimes.tsx +++ b/packages/features/ee/teams/components/v2/SkeletonLoaderAvailabilityTimes.tsx @@ -1,4 +1,4 @@ -import { SkeletonContainer, SkeletonText } from "@calcom/ui/v2"; +import { SkeletonContainer, SkeletonText } from "@calcom/ui"; function SkeletonLoader() { return ( diff --git a/packages/features/ee/teams/components/v2/TeamAvailabilityModal.tsx b/packages/features/ee/teams/components/v2/TeamAvailabilityModal.tsx index 7542d98246..d92451ad58 100644 --- a/packages/features/ee/teams/components/v2/TeamAvailabilityModal.tsx +++ b/packages/features/ee/teams/components/v2/TeamAvailabilityModal.tsx @@ -1,12 +1,11 @@ -import React, { useState, useEffect } from "react"; +import { useEffect, useState } from "react"; import dayjs from "@calcom/dayjs"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Avatar, Label } from "@calcom/ui/components"; -import TimezoneSelect, { ITimezone } from "@calcom/ui/form/TimezoneSelect"; -import { Select, DatePicker } from "@calcom/ui/v2"; +import type { ITimezone } from "@calcom/ui"; +import { Avatar, DatePickerField as DatePicker, Label, Select, TimezoneSelect } from "@calcom/ui"; import LicenseRequired from "../../../common/components/LicenseRequired"; import TeamAvailabilityTimes from "./TeamAvailabilityTimes"; diff --git a/packages/features/ee/teams/components/v2/TeamAvailabilityScreen.tsx b/packages/features/ee/teams/components/v2/TeamAvailabilityScreen.tsx index a39f84c33f..57b500ca06 100644 --- a/packages/features/ee/teams/components/v2/TeamAvailabilityScreen.tsx +++ b/packages/features/ee/teams/components/v2/TeamAvailabilityScreen.tsx @@ -1,14 +1,12 @@ -import React, { useState, useEffect, CSSProperties } from "react"; +import { CSSProperties, useEffect, useState } from "react"; import AutoSizer from "react-virtualized-auto-sizer"; import { FixedSizeList as List } from "react-window"; import dayjs from "@calcom/dayjs"; import { CAL_URL } from "@calcom/lib/constants"; import { RouterOutputs, trpc } from "@calcom/trpc/react"; -import { Avatar } from "@calcom/ui/components/avatar"; -import Select from "@calcom/ui/form/Select"; -import TimezoneSelect, { ITimezone } from "@calcom/ui/form/TimezoneSelect"; -import DatePicker from "@calcom/ui/v2/core/form/DatePicker"; +import type { ITimezone } from "@calcom/ui"; +import { Avatar, DatePickerField as DatePicker, Select, TimezoneSelect } from "@calcom/ui"; import TeamAvailabilityTimes from "./TeamAvailabilityTimes"; diff --git a/packages/features/ee/teams/pages/availability.tsx b/packages/features/ee/teams/pages/availability.tsx index 9ca388f859..6adefc50c7 100644 --- a/packages/features/ee/teams/pages/availability.tsx +++ b/packages/features/ee/teams/pages/availability.tsx @@ -5,10 +5,7 @@ import { getPlaceholderAvatar } from "@calcom/lib/getPlaceholderAvatar"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery"; -import { Alert } from "@calcom/ui/Alert"; -import Loader from "@calcom/ui/Loader"; -import Shell from "@calcom/ui/Shell"; -import { Avatar } from "@calcom/ui/components/avatar"; +import { Alert, Avatar, Loader, Shell } from "@calcom/ui"; import LicenseRequired from "../../common/components/LicenseRequired"; import TeamAvailabilityScreen from "../components/TeamAvailabilityScreen"; diff --git a/packages/features/ee/teams/pages/team-appearance-view.tsx b/packages/features/ee/teams/pages/team-appearance-view.tsx index 2cb1902737..b60c9e0bd4 100644 --- a/packages/features/ee/teams/pages/team-appearance-view.tsx +++ b/packages/features/ee/teams/pages/team-appearance-view.tsx @@ -4,10 +4,7 @@ import { Controller, useForm } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Button, Form } from "@calcom/ui/components"; -import { showToast, Switch } from "@calcom/ui/v2/core"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { Button, Form, getSettingsLayout as getLayout, Meta, showToast, Switch } from "@calcom/ui"; interface TeamAppearanceValues { hideBranding: boolean; diff --git a/packages/features/ee/teams/pages/team-billing-view.tsx b/packages/features/ee/teams/pages/team-billing-view.tsx index 49d0f0daf9..c4185dbdf3 100644 --- a/packages/features/ee/teams/pages/team-billing-view.tsx +++ b/packages/features/ee/teams/pages/team-billing-view.tsx @@ -2,9 +2,7 @@ import { useRouter } from "next/router"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Button, Icon } from "@calcom/ui"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { Button, getSettingsLayout as getLayout, Icon, Meta } from "@calcom/ui"; const BillingView = () => { const { t } = useLocale(); diff --git a/packages/features/ee/teams/pages/team-listing-view.tsx b/packages/features/ee/teams/pages/team-listing-view.tsx index 69ce551f96..3578ec4fc2 100644 --- a/packages/features/ee/teams/pages/team-listing-view.tsx +++ b/packages/features/ee/teams/pages/team-listing-view.tsx @@ -1,6 +1,5 @@ import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { getSettingsLayout as getLayout, Meta } from "@calcom/ui"; import { TeamsListing } from "../components"; diff --git a/packages/features/ee/teams/pages/team-members-view.tsx b/packages/features/ee/teams/pages/team-members-view.tsx index fb24440f88..f2985a67a4 100644 --- a/packages/features/ee/teams/pages/team-members-view.tsx +++ b/packages/features/ee/teams/pages/team-members-view.tsx @@ -5,11 +5,7 @@ import { useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui/Icon"; -import { Button } from "@calcom/ui/components"; -import { showToast } from "@calcom/ui/v2/core"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; +import { Button, getSettingsLayout as getLayout, Icon, Meta, showToast } from "@calcom/ui"; import DisableTeamImpersonation from "../components/DisableTeamImpersonation"; import MemberInvitationModal from "../components/MemberInvitationModal"; diff --git a/packages/features/ee/teams/pages/team-profile-view.tsx b/packages/features/ee/teams/pages/team-profile-view.tsx index 5ea31ffff6..e45f7672d5 100644 --- a/packages/features/ee/teams/pages/team-profile-view.tsx +++ b/packages/features/ee/teams/pages/team-profile-view.tsx @@ -11,15 +11,23 @@ import { getPlaceholderAvatar } from "@calcom/lib/getPlaceholderAvatar"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import objectKeys from "@calcom/lib/objectKeys"; import { trpc } from "@calcom/trpc/react"; -import { Icon } from "@calcom/ui"; -import { Avatar, Button, Form, Label, TextArea, TextField } from "@calcom/ui/components"; -import ConfirmationDialogContent from "@calcom/ui/v2/core/ConfirmationDialogContent"; -import { Dialog, DialogTrigger } from "@calcom/ui/v2/core/Dialog"; -import ImageUploader from "@calcom/ui/v2/core/ImageUploader"; -import LinkIconButton from "@calcom/ui/v2/core/LinkIconButton"; -import Meta from "@calcom/ui/v2/core/Meta"; -import { getLayout } from "@calcom/ui/v2/core/layouts/SettingsLayout"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { + Avatar, + Button, + ConfirmationDialogContent, + Dialog, + DialogTrigger, + Form, + getSettingsLayout as getLayout, + Icon, + ImageUploader, + Label, + LinkIconButton, + Meta, + showToast, + TextArea, + TextField, +} from "@calcom/ui"; const regex = new RegExp("^[a-zA-Z0-9-]*$"); diff --git a/packages/features/ee/workflows/components/AddActionDialog.tsx b/packages/features/ee/workflows/components/AddActionDialog.tsx index 6ba545eef2..8186d6b4dd 100644 --- a/packages/features/ee/workflows/components/AddActionDialog.tsx +++ b/packages/features/ee/workflows/components/AddActionDialog.tsx @@ -1,8 +1,3 @@ -/** - * @deprecated file - * All new changes should be made to the V2 file in - * `/packages/features/ee/workflows/components/v2/AddActionDialog.tsx` - */ import { zodResolver } from "@hookform/resolvers/zod"; import { WorkflowActions } from "@prisma/client"; import { isValidPhoneNumber } from "libphonenumber-js"; @@ -11,72 +6,127 @@ import { Controller, useForm } from "react-hook-form"; import { z } from "zod"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import Button from "@calcom/ui/Button"; -import { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader } from "@calcom/ui/Dialog"; -import PhoneInput from "@calcom/ui/form/PhoneInputLazy"; -import Select from "@calcom/ui/form/Select"; -import { Form } from "@calcom/ui/form/fields"; +import { + Button, + Checkbox, + Dialog, + DialogClose, + DialogContent, + DialogFooter, + EmailField, + Form, + Label, + PhoneInput, + Select, + TextField, +} from "@calcom/ui"; import { WORKFLOW_ACTIONS } from "../lib/constants"; import { getWorkflowActionOptions } from "../lib/getOptions"; +import { onlyLettersNumbersSpaces } from "../pages/workflow"; interface IAddActionDialog { isOpenDialog: boolean; setIsOpenDialog: Dispatch>; - addAction: (action: WorkflowActions, sendTo?: string) => void; + addAction: (action: WorkflowActions, sendTo?: string, numberRequired?: boolean, sender?: string) => void; + isFreeUser: boolean; +} + +interface ISelectActionOption { + label: string; + value: WorkflowActions; } type AddActionFormValues = { action: WorkflowActions; sendTo?: string; + numberRequired?: boolean; + sender?: string; +}; + +const cleanUpActionsForFreeUser = (actions: ISelectActionOption[]) => { + return actions.filter( + (item) => item.value !== WorkflowActions.SMS_ATTENDEE && item.value !== WorkflowActions.SMS_NUMBER + ); }; -/** - * @deprecated file - * All new changes should be made to the V2 file in - * `/packages/features/ee/workflows/components/v2/AddActionDialog.tsx` - */ export const AddActionDialog = (props: IAddActionDialog) => { const { t } = useLocale(); - const { isOpenDialog, setIsOpenDialog, addAction } = props; + const { isOpenDialog, setIsOpenDialog, addAction, isFreeUser } = props; const [isPhoneNumberNeeded, setIsPhoneNumberNeeded] = useState(false); - const actionOptions = getWorkflowActionOptions(t); + const [isSenderIdNeeded, setIsSenderIdNeeded] = useState(false); + const [isEmailAddressNeeded, setIsEmailAddressNeeded] = useState(false); + const workflowActions = getWorkflowActionOptions(t); + const actionOptions = isFreeUser ? cleanUpActionsForFreeUser(workflowActions) : workflowActions; const formSchema = z.object({ action: z.enum(WORKFLOW_ACTIONS), sendTo: z .string() - .refine((val) => isValidPhoneNumber(val)) + .refine((val) => isValidPhoneNumber(val) || val.includes("@")) .optional(), + numberRequired: z.boolean().optional(), + sender: z + .string() + .refine((val) => onlyLettersNumbersSpaces(val)) + .nullable(), }); const form = useForm({ mode: "onSubmit", defaultValues: { action: WorkflowActions.EMAIL_HOST, + sender: "Cal", }, resolver: zodResolver(formSchema), }); + const handleSelectAction = (newValue: ISelectActionOption | null) => { + if (newValue) { + form.setValue("action", newValue.value); + if (newValue.value === WorkflowActions.SMS_NUMBER) { + setIsPhoneNumberNeeded(true); + setIsSenderIdNeeded(true); + setIsEmailAddressNeeded(false); + } else if (newValue.value === WorkflowActions.EMAIL_ADDRESS) { + setIsEmailAddressNeeded(true); + setIsSenderIdNeeded(false); + setIsPhoneNumberNeeded(false); + } else if (newValue.value === WorkflowActions.SMS_ATTENDEE) { + setIsSenderIdNeeded(true); + setIsEmailAddressNeeded(false); + setIsPhoneNumberNeeded(false); + } else { + setIsSenderIdNeeded(false); + setIsEmailAddressNeeded(false); + setIsPhoneNumberNeeded(false); + } + form.unregister("sendTo"); + form.unregister("numberRequired"); + form.clearErrors("action"); + form.clearErrors("sendTo"); + } + }; + return ( - +
-
{ - addAction(values.action, values.sendTo); + addAction(values.action, values.sendTo, values.numberRequired, values.sender); form.unregister("sendTo"); form.unregister("action"); + form.unregister("numberRequired"); setIsOpenDialog(false); setIsPhoneNumberNeeded(false); + setIsEmailAddressNeeded(false); + setIsSenderIdNeeded(false); }}> -
- +
+ { return ( { - if (val) { - form.setValue("trigger", val.value); - form.clearErrors("trigger"); - if (val.value === WorkflowTriggerEvents.BEFORE_EVENT) { - setShowTimeSection(true); - } else { - setShowTimeSection(false); - form.unregister("time"); - form.unregister("timeUnit"); - } - } - }} - options={triggerOptions} - /> - ); - }} - /> - {form.formState.errors.trigger && ( -

{form.formState.errors.trigger.message}

- )} -
- {showTimeSection && ( -
- -
- -
- { - return ( - { - if (val) { - form.setValue("action", val.value); - form.clearErrors("action"); - if (val.value === WorkflowActions.SMS_NUMBER) { - setIsPhoneNumberNeeded(true); - } else { - setIsPhoneNumberNeeded(false); - form.unregister("sendTo"); - } - } - }} - options={actionOptions} - /> - ); - }} - /> - {form.formState.errors.action && ( -

{form.formState.errors.action.message}

- )} -
- {isPhoneNumberNeeded && ( -
- -
- - control={form.control} - name="sendTo" - placeholder={t("enter_phone_number")} - id="sendTo" - required - /> -
- {form.formState.errors.sendTo && ( -

{form.formState.errors.sendTo.message}

- )} -
- )} - -
- - - - -
- - -
- ); -} diff --git a/packages/features/ee/workflows/components/v2/SkeletonLoaderEdit.tsx b/packages/features/ee/workflows/components/SkeletonLoaderEdit.tsx similarity index 91% rename from packages/features/ee/workflows/components/v2/SkeletonLoaderEdit.tsx rename to packages/features/ee/workflows/components/SkeletonLoaderEdit.tsx index 8805020aa6..edb4308be9 100644 --- a/packages/features/ee/workflows/components/v2/SkeletonLoaderEdit.tsx +++ b/packages/features/ee/workflows/components/SkeletonLoaderEdit.tsx @@ -1,4 +1,4 @@ -import { SkeletonContainer, SkeletonText } from "@calcom/ui/v2"; +import { SkeletonContainer, SkeletonText } from "@calcom/ui"; function SkeletonLoader() { return ( diff --git a/packages/features/ee/workflows/components/v2/SkeletonLoaderEventWorkflowsTab.tsx b/packages/features/ee/workflows/components/SkeletonLoaderEventWorkflowsTab.tsx similarity index 91% rename from packages/features/ee/workflows/components/v2/SkeletonLoaderEventWorkflowsTab.tsx rename to packages/features/ee/workflows/components/SkeletonLoaderEventWorkflowsTab.tsx index 4fcb23a789..2d699cf828 100644 --- a/packages/features/ee/workflows/components/v2/SkeletonLoaderEventWorkflowsTab.tsx +++ b/packages/features/ee/workflows/components/SkeletonLoaderEventWorkflowsTab.tsx @@ -1,5 +1,4 @@ -import { Icon } from "@calcom/ui"; -import { SkeletonAvatar, SkeletonText } from "@calcom/ui/v2"; +import { SkeletonAvatar, SkeletonText } from "@calcom/ui"; function SkeletonLoader() { return ( diff --git a/packages/features/ee/workflows/components/v2/SkeletonLoaderList.tsx b/packages/features/ee/workflows/components/SkeletonLoaderList.tsx similarity index 93% rename from packages/features/ee/workflows/components/v2/SkeletonLoaderList.tsx rename to packages/features/ee/workflows/components/SkeletonLoaderList.tsx index e7e34ef5d7..0f2662e74d 100644 --- a/packages/features/ee/workflows/components/v2/SkeletonLoaderList.tsx +++ b/packages/features/ee/workflows/components/SkeletonLoaderList.tsx @@ -1,5 +1,4 @@ -import { Icon } from "@calcom/ui"; -import { SkeletonText } from "@calcom/ui/v2"; +import { Icon, SkeletonText } from "@calcom/ui"; function SkeletonLoader() { return ( diff --git a/packages/features/ee/workflows/components/v2/TimeTimeUnitInput.tsx b/packages/features/ee/workflows/components/TimeTimeUnitInput.tsx similarity index 86% rename from packages/features/ee/workflows/components/v2/TimeTimeUnitInput.tsx rename to packages/features/ee/workflows/components/TimeTimeUnitInput.tsx index 5774f7e529..411d588535 100644 --- a/packages/features/ee/workflows/components/v2/TimeTimeUnitInput.tsx +++ b/packages/features/ee/workflows/components/TimeTimeUnitInput.tsx @@ -2,12 +2,17 @@ import { useState } from "react"; import { UseFormReturn } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui/Icon"; -import { TextField } from "@calcom/ui/components/form"; -import { Dropdown, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@calcom/ui/v2"; +import { + Dropdown, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + Icon, + TextField, +} from "@calcom/ui"; -import { getWorkflowTimeUnitOptions } from "../../lib/getOptions"; -import type { FormValues } from "../../pages/v2/workflow"; +import { getWorkflowTimeUnitOptions } from "../lib/getOptions"; +import type { FormValues } from "../pages/workflow"; type Props = { form: UseFormReturn; diff --git a/packages/features/ee/workflows/components/WorkflowDetailsPage.tsx b/packages/features/ee/workflows/components/WorkflowDetailsPage.tsx index a9792a2ee2..9ee9c9d8c0 100644 --- a/packages/features/ee/workflows/components/WorkflowDetailsPage.tsx +++ b/packages/features/ee/workflows/components/WorkflowDetailsPage.tsx @@ -1,19 +1,19 @@ -import { ArrowDownIcon } from "@heroicons/react/outline"; import { WorkflowActions, WorkflowTemplates } from "@prisma/client"; import { useRouter } from "next/router"; import { Dispatch, SetStateAction, useMemo, useState } from "react"; import { Controller, UseFormReturn } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { HttpError } from "@calcom/lib/http-error"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui"; -import MultiSelectCheckboxes, { Option } from "@calcom/ui/form/MultiSelectCheckboxes"; -import { Form } from "@calcom/ui/form/fields"; -import showToast from "@calcom/ui/v2/core/notifications"; +import useMeQuery from "@calcom/trpc/react/hooks/useMeQuery"; +import { Icon } from "@calcom/ui"; +import { Button, Label, TextField } from "@calcom/ui"; +import { MultiSelectCheckboxes } from "@calcom/ui"; +import type { MultiSelectCheckboxesOptionType as Option } from "@calcom/ui"; import type { FormValues } from "../pages/workflow"; import { AddActionDialog } from "./AddActionDialog"; +import { DeleteDialog } from "./DeleteDialog"; import WorkflowStepContainer from "./WorkflowStepContainer"; interface Props { @@ -27,11 +27,13 @@ export default function WorkflowDetailsPage(props: Props) { const { form, workflowId, selectedEventTypes, setSelectedEventTypes } = props; const { t } = useLocale(); const router = useRouter(); - const utils = trpc.useContext(); + + const me = useMeQuery(); + const isFreeUser = me.data?.plan === "FREE"; const [isAddActionDialogOpen, setIsAddActionDialogOpen] = useState(false); const [reload, setReload] = useState(false); - const [editCounter, setEditCounter] = useState(0); + const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); const { data, isLoading } = trpc.viewer.eventTypes.getByViewer.useQuery(); @@ -50,29 +52,7 @@ export default function WorkflowDetailsPage(props: Props) { [data] ); - const updateMutation = trpc.viewer.workflows.update.useMutation({ - onSuccess: async ({ workflow }) => { - if (workflow) { - utils.viewer.workflows.get.setData({ id: +workflow.id }, workflow); - - showToast( - t("workflow_updated_successfully", { - workflowName: workflow.name, - }), - "success" - ); - } - await router.push("/workflows"); - }, - onError: (err) => { - if (err instanceof HttpError) { - const message = `${err.statusCode}: ${err.message}`; - showToast(message, "error"); - } - }, - }); - - const addAction = (action: WorkflowActions, sendTo?: string) => { + const addAction = (action: WorkflowActions, sendTo?: string, numberRequired?: boolean, sender?: string) => { const steps = form.getValues("steps"); const id = steps?.length > 0 @@ -94,38 +74,22 @@ export default function WorkflowDetailsPage(props: Props) { workflowId: workflowId, reminderBody: null, emailSubject: null, - template: WorkflowTemplates.REMINDER, - numberRequired: null, + template: WorkflowTemplates.CUSTOM, + numberRequired: numberRequired || false, + sender: sender || "Cal", }; steps?.push(step); form.setValue("steps", steps); }; return ( -
-
{ - let activeOnEventTypeIds: number[] = []; - if (values.activeOn) { - activeOnEventTypeIds = values.activeOn.map((option) => { - return parseInt(option.value, 10); - }); - } - updateMutation.mutate({ - id: parseInt(router.query.workflow as string, 10), - name: values.name, - activeOn: activeOnEventTypeIds, - steps: values.steps, - trigger: values.trigger, - time: values.time || null, - timeUnit: values.timeUnit || null, - }); - }}> -
- + <> +
+
+
+ +
+ { @@ -143,13 +108,23 @@ export default function WorkflowDetailsPage(props: Props) { ); }} /> +
+ +
{/* Workflow Trigger Event & Steps */} -
+
{form.getValues("trigger") && (
- +
)} {form.getValues("steps") && ( @@ -162,33 +137,34 @@ export default function WorkflowDetailsPage(props: Props) { step={step} reload={reload} setReload={setReload} - setEditCounter={setEditCounter} - editCounter={editCounter} + isFreeUser={isFreeUser} /> ); })} )} -
- +
+
-
- -
- +
-
+ await router.push("/workflows")} + /> + ); } diff --git a/packages/features/ee/workflows/components/WorkflowListPage.tsx b/packages/features/ee/workflows/components/WorkflowListPage.tsx index 374706b353..bb36ad5b21 100644 --- a/packages/features/ee/workflows/components/WorkflowListPage.tsx +++ b/packages/features/ee/workflows/components/WorkflowListPage.tsx @@ -1,31 +1,71 @@ +import { Workflow, WorkflowStep } from "@prisma/client"; import Link from "next/link"; +import { useRouter } from "next/router"; import { useState } from "react"; +import classNames from "@calcom/lib/classNames"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { HttpError } from "@calcom/lib/http-error"; import { trpc } from "@calcom/trpc/react"; -import { Button, Tooltip } from "@calcom/ui"; -import ConfirmationDialogContent from "@calcom/ui/ConfirmationDialogContent"; -import { Dialog } from "@calcom/ui/Dialog"; -import Dropdown, { DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@calcom/ui/Dropdown"; -import EmptyScreen from "@calcom/ui/EmptyScreen"; -import { Icon } from "@calcom/ui/Icon"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { + Button, + ButtonGroup, + Dropdown, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + Icon, + showToast, + Tooltip, +} from "@calcom/ui"; -import { WorkflowType } from "./v2/WorkflowListPage"; +import { getActionIcon } from "../lib/getActionIcon"; +import { DeleteDialog } from "./DeleteDialog"; +import EmptyScreen from "./EmptyScreen"; -const CreateFirstWorkflowView = () => { +const CreateEmptyWorkflowView = () => { const { t } = useLocale(); + const router = useRouter(); + + const createMutation = trpc.viewer.workflows.createV2.useMutation({ + onSuccess: async ({ workflow }) => { + await router.replace("/workflows/" + workflow.id); + }, + onError: (err) => { + if (err instanceof HttpError) { + const message = `${err.statusCode}: ${err.message}`; + showToast(message, "error"); + } + + if (err.data?.code === "UNAUTHORIZED") { + const message = `${err.data.code}: You are not able to create this workflow`; + showToast(message, "error"); + } + }, + }); return ( createMutation.mutate()} + IconHeading={Icon.FiZap} + headline={t("workflows")} + description={t("no_workflows_description")} + isLoading={createMutation.isLoading} + showExampleWorkflows={true} /> ); }; +export type WorkflowType = Workflow & { + steps: WorkflowStep[]; + activeOn: { + eventType: { + id: number; + title: string; + }; + }[]; +}; interface Props { workflows: WorkflowType[] | undefined; } @@ -33,68 +73,64 @@ export default function WorkflowListPage({ workflows }: Props) { const { t } = useLocale(); const utils = trpc.useContext(); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); - const [deleteDialogTypeId, setDeleteDialogTypeId] = useState(0); - - const query = trpc.viewer.workflows.list.useQuery(); - - const deleteMutation = trpc.viewer.workflows.delete.useMutation({ - onSuccess: async () => { - await utils.viewer.workflows.list.invalidate(); - showToast(t("workflow_deleted_successfully"), "success"); - setDeleteDialogOpen(false); - }, - onError: (err) => { - if (err instanceof HttpError) { - const message = `${err.statusCode}: ${err.message}`; - showToast(message, "error"); - setDeleteDialogOpen(false); - } - }, - }); - - async function deleteWorkflowHandler(id: number) { - const payload = { id }; - deleteMutation.mutate(payload); - } + const [workflowToDeleteId, setwWorkflowToDeleteId] = useState(0); + const router = useRouter(); return ( <> {workflows && workflows.length > 0 ? ( -
-
    +
    +
      {workflows.map((workflow) => (
    • -
      +
      -
      - {workflow.name} +
      + {workflow.name + ? workflow.name + : "Untitled (" + + `${t(`${workflow.steps[0].action.toLowerCase()}_action`)}` + .charAt(0) + .toUpperCase() + + `${t(`${workflow.steps[0].action.toLowerCase()}_action`)}`.slice(1) + + ")"}
      -
      - - - { - e.preventDefault(); - deleteWorkflowHandler(deleteDialogTypeId); - }}> - {t("delete_workflow_description")} - - + { + await utils.viewer.workflows.list.invalidate(); + }} + />
      ) : ( - + )} ); diff --git a/packages/features/ee/workflows/components/WorkflowStepContainer.tsx b/packages/features/ee/workflows/components/WorkflowStepContainer.tsx index b92a53ba53..86f0c6c7b0 100644 --- a/packages/features/ee/workflows/components/WorkflowStepContainer.tsx +++ b/packages/features/ee/workflows/components/WorkflowStepContainer.tsx @@ -1,4 +1,3 @@ -import { ArrowDownIcon } from "@heroicons/react/outline"; import { TimeUnit, WorkflowActions, @@ -6,97 +5,104 @@ import { WorkflowTemplates, WorkflowTriggerEvents, } from "@prisma/client"; -import { isValidPhoneNumber } from "libphonenumber-js"; import { Dispatch, SetStateAction, useRef, useState } from "react"; import { Controller, UseFormReturn } from "react-hook-form"; -import PhoneInput from "react-phone-number-input"; import "react-phone-number-input/style.css"; -import classNames from "@calcom/lib/classNames"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { HttpError } from "@calcom/lib/http-error"; import { trpc } from "@calcom/trpc/react"; -import { Button } from "@calcom/ui"; -import ConfirmationDialogContent from "@calcom/ui/ConfirmationDialogContent"; -import { Dialog } from "@calcom/ui/Dialog"; -import Dropdown, { DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@calcom/ui/Dropdown"; -import { Icon } from "@calcom/ui/Icon"; -import Select from "@calcom/ui/form/Select"; -import { TextArea } from "@calcom/ui/form/fields"; -import showToast from "@calcom/ui/v2/core/notifications"; +import { + Button, + Checkbox, + ConfirmationDialogContent, + Dialog, + DialogClose, + DialogContent, + Dropdown, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + EmailField, + Icon, + Label, + PhoneInput, + Select, + showToast, + TextArea, + TextField, +} from "@calcom/ui"; import { AddVariablesDropdown } from "../components/AddVariablesDropdown"; import { getWorkflowActionOptions, getWorkflowTemplateOptions, - getWorkflowTimeUnitOptions, getWorkflowTriggerOptions, } from "../lib/getOptions"; -import { getTranslatedText, translateVariablesToEnglish } from "../lib/variableTranslations"; +import { translateVariablesToEnglish } from "../lib/variableTranslations"; import type { FormValues } from "../pages/workflow"; +import { TimeTimeUnitInput } from "./TimeTimeUnitInput"; type WorkflowStepProps = { step?: WorkflowStep; form: UseFormReturn; reload?: boolean; setReload?: Dispatch>; - editCounter: number; - setEditCounter: Dispatch>; + isFreeUser: boolean; }; export default function WorkflowStepContainer(props: WorkflowStepProps) { const { t, i18n } = useLocale(); - const { step, form, reload, setReload, editCounter, setEditCounter } = props; - const [editNumberMode, setEditNumberMode] = useState( - step?.action === WorkflowActions.SMS_NUMBER && !step?.sendTo ? true : false - ); - const [editEmailBodyMode, setEditEmailBodyMode] = useState(false); - const [sendTo, setSendTo] = useState(step?.sendTo || ""); - const [errorMessageNumber, setErrorMessageNumber] = useState(""); - const [errorMessageCustomInput, setErrorMessageCustomInput] = useState(""); - const [isInfoParagraphOpen, setIsInfoParagraphOpen] = useState(false); + const { step, form, reload, setReload, isFreeUser } = props; + const [isAdditionalInputsDialogOpen, setIsAdditionalInputsDialogOpen] = useState(false); const [confirmationDialogOpen, setConfirmationDialogOpen] = useState(false); - const [isTestActionDisabled, setIsTestActionDisabled] = useState(false); - const [translatedReminderBody, setTranslatedReminderBody] = useState( - getTranslatedText((step ? form.getValues(`steps.${step.stepNumber - 1}.reminderBody`) : "") || "", { - locale: i18n.language, - t, - }) - ); - - const [translatedSubject, setTranslatedSubject] = useState( - getTranslatedText((step ? form.getValues(`steps.${step.stepNumber - 1}.emailSubject`) : "") || "", { - locale: i18n.language, - t, - }) - ); const [isPhoneNumberNeeded, setIsPhoneNumberNeeded] = useState( step?.action === WorkflowActions.SMS_NUMBER ? true : false ); + const [isSenderIdNeeded, setIsSenderIdNeeded] = useState( + step?.action === WorkflowActions.SMS_NUMBER || step?.action === WorkflowActions.SMS_ATTENDEE + ? true + : false + ); + + const [isEmailAddressNeeded, setIsEmailAddressNeeded] = useState( + step?.action === WorkflowActions.EMAIL_ADDRESS ? true : false + ); + const [isCustomReminderBodyNeeded, setIsCustomReminderBodyNeeded] = useState( step?.template === WorkflowTemplates.CUSTOM ? true : false ); const [isEmailSubjectNeeded, setIsEmailSubjectNeeded] = useState( - step?.action === WorkflowActions.EMAIL_ATTENDEE || step?.action === WorkflowActions.EMAIL_HOST + step?.action === WorkflowActions.EMAIL_ATTENDEE || + step?.action === WorkflowActions.EMAIL_HOST || + step?.action === WorkflowActions.EMAIL_ADDRESS ? true : false ); const [showTimeSection, setShowTimeSection] = useState( - form.getValues("trigger") === WorkflowTriggerEvents.BEFORE_EVENT ? true : false + form.getValues("trigger") === WorkflowTriggerEvents.BEFORE_EVENT || + form.getValues("trigger") === WorkflowTriggerEvents.AFTER_EVENT + ); + + const [showTimeSectionAfter, setShowTimeSectionAfter] = useState( + form.getValues("trigger") === WorkflowTriggerEvents.AFTER_EVENT ); const actionOptions = getWorkflowActionOptions(t); const triggerOptions = getWorkflowTriggerOptions(t); - const timeUnitOptions = getWorkflowTimeUnitOptions(t); const templateOptions = getWorkflowTemplateOptions(t); - const { ref: emailSubjectFormRef } = form.register(`steps.${step ? step.stepNumber - 1 : 0}.emailSubject`); + const { ref: emailSubjectFormRef, ...restEmailSubjectForm } = step + ? form.register(`steps.${step.stepNumber - 1}.emailSubject`) + : { ref: null, name: "" }; - const { ref: reminderBodyFormRef } = form.register(`steps.${step ? step.stepNumber - 1 : 0}.reminderBody`); + const { ref: reminderBodyFormRef, ...restReminderBodyForm } = step + ? form.register(`steps.${step.stepNumber - 1}.reminderBody`) + : { ref: null, name: "" }; const refEmailSubject = useRef(null); @@ -109,15 +115,15 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { const cursorPosition = refEmailSubject?.current?.selectionStart || currentEmailSubject.length; const subjectWithAddedVariable = `${currentEmailSubject.substring(0, cursorPosition)}{${variable .toUpperCase() - .replace(" ", "_")}}${currentEmailSubject.substring(cursorPosition)}`; - setTranslatedSubject(subjectWithAddedVariable); + .replace(/ /g, "_")}}${currentEmailSubject.substring(cursorPosition)}`; + form.setValue(`steps.${step.stepNumber - 1}.emailSubject`, subjectWithAddedVariable); } else { const currentMessageBody = refReminderBody?.current?.value || ""; const cursorPosition = refReminderBody?.current?.selectionStart || currentMessageBody.length; const messageWithAddedVariable = `${currentMessageBody.substring(0, cursorPosition)}{${variable .toUpperCase() - .replace(" ", "_")}}${currentMessageBody.substring(cursorPosition)}`; - setTranslatedReminderBody(messageWithAddedVariable); + .replace(/ /g, "_")}}${currentMessageBody.substring(cursorPosition)}`; + form.setValue(`steps.${step.stepNumber - 1}.reminderBody`, messageWithAddedVariable); } } }; @@ -137,20 +143,28 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { //trigger if (!step) { const trigger = form.getValues("trigger"); - const timeUnit = form.getValues("timeUnit"); + const triggerString = t(`${trigger.toLowerCase()}_trigger`); - const selectedTrigger = { label: t(`${trigger.toLowerCase()}_trigger`), value: trigger }; - const selectedTimeUnit = timeUnit - ? { label: t(`${timeUnit.toLowerCase()}_timeUnit`), value: timeUnit } - : undefined; + const selectedTrigger = { + label: triggerString.charAt(0).toUpperCase() + triggerString.slice(1), + value: trigger, + }; return ( <>
      -
      -
      {t("trigger")}
      -
      {t("when_something_happens")}
      +
      +
      +
      + 1 +
      +
      +
      {t("trigger")}
      +
      {t("when_something_happens")}
      +
      +
      + { if (val) { form.setValue("trigger", val.value); - if (val.value === WorkflowTriggerEvents.BEFORE_EVENT) { + if ( + val.value === WorkflowTriggerEvents.BEFORE_EVENT || + val.value === WorkflowTriggerEvents.AFTER_EVENT + ) { setShowTimeSection(true); + if (val.value === WorkflowTriggerEvents.AFTER_EVENT) { + setShowTimeSectionAfter(true); + } else { + setShowTimeSectionAfter(false); + } form.setValue("time", 24); form.setValue("timeUnit", TimeUnit.HOUR); } else { setShowTimeSection(false); + setShowTimeSectionAfter(false); form.unregister("time"); form.unregister("timeUnit"); } @@ -180,40 +203,9 @@ export default function WorkflowStepContainer(props: WorkflowStepProps) { }} /> {showTimeSection && ( -
      - -
      - -
      - { - return ( -