diff --git a/apps/space/core/components/issues/peek-overview/header.tsx b/apps/space/core/components/issues/peek-overview/header.tsx index eb49fbc4c1..3909692cd2 100644 --- a/apps/space/core/components/issues/peek-overview/header.tsx +++ b/apps/space/core/components/issues/peek-overview/header.tsx @@ -3,9 +3,8 @@ import React from "react"; import { observer } from "mobx-react"; import { Link2, MoveRight } from "lucide-react"; -import { Listbox, Transition } from "@headlessui/react"; // ui -import { CenterPanelIcon, FullScreenPanelIcon, setToast, SidePanelIcon, TOAST_TYPE } from "@plane/ui"; +import { CenterPanelIcon, CustomSelect, FullScreenPanelIcon, setToast, SidePanelIcon, TOAST_TYPE } from "@plane/ui"; // helpers import { copyTextToClipboard } from "@/helpers/string.helper"; // hooks @@ -66,49 +65,29 @@ export const PeekOverviewHeader: React.FC = observer((props) => { )} - setPeekMode(val)} + onChange={(val: any) => setPeekMode(val)} className="relative flex-shrink-0 text-left" + customButtonClassName={`grid place-items-center text-custom-text-300 hover:text-custom-text-200 ${peekMode === "full" ? "rotate-45" : ""}`} + customButton={} + optionsClassName="absolute left-0 z-10 mt-1 min-w-[12rem] origin-top-left overflow-y-auto whitespace-nowrap rounded-md border border-custom-border-300 bg-custom-background-90 text-xs shadow-lg focus:outline-none" > - - - - - - -
- {PEEK_MODES.map((mode) => ( - - `cursor-pointer select-none truncate rounded px-1 py-1.5 ${ - active ? "bg-custom-background-80" : "" - } ${selected ? "text-custom-text-100" : "text-custom-text-200"}` - } - > -
- - {mode.label} -
-
- ))} -
-
-
-
+
+ {PEEK_MODES.map((mode) => ( + +
+ + {mode.label} +
+
+ ))} +
+ {isClipboardWriteAllowed && (peekMode === "side" || peekMode === "modal") && (
diff --git a/apps/web/core/components/onboarding/invite-members.tsx b/apps/web/core/components/onboarding/invite-members.tsx index 239089aca6..69aebbecab 100644 --- a/apps/web/core/components/onboarding/invite-members.tsx +++ b/apps/web/core/components/onboarding/invite-members.tsx @@ -15,15 +15,14 @@ import { } from "react-hook-form"; // icons import { usePopper } from "react-popper"; -import { Check, ChevronDown, Plus, XCircle } from "lucide-react"; -import { Listbox } from "@headlessui/react"; +import { ChevronDown, Plus, XCircle } from "lucide-react"; // plane imports import { ROLE, ROLE_DETAILS, EUserPermissions, MEMBER_TRACKER_EVENTS, MEMBER_TRACKER_ELEMENTS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; // types import { IUser, IWorkspace } from "@plane/types"; // ui -import { Button, Input, Spinner, TOAST_TYPE, setToast } from "@plane/ui"; +import { Button, CustomSelect, Input, Spinner, TOAST_TYPE, setToast } from "@plane/ui"; // constants // helpers // hooks @@ -175,69 +174,49 @@ const InviteMemberInput: React.FC = observer((props) => { name={`emails.${index}.role`} rules={{ required: true }} render={({ field: { value, onChange } }) => ( - { + onChange={(val: any) => { onChange(val); setValue(`emails.${index}.role_active`, true); }} className="w-full flex-shrink-0 text-left" + optionsClassName="p-2 absolute space-y-1 z-10 mt-1 h-fit w-48 sm:w-60 rounded-md border border-custom-border-300 bg-custom-background-100 shadow-sm focus:outline-none" + customButtonClassName="flex w-full items-center justify-between gap-1 rounded-md px-2.5 py-2 text-sm border-[0.5px] border-custom-border-300" + customButton={ + <> + + {ROLE[value]} + + + + } > - - ( + - {ROLE[value]} - - - - - - -
- {Object.entries(ROLE_DETAILS).map(([key, value]) => ( - - `cursor-pointer select-none truncate rounded px-1 py-1.5 ${ - active || selected ? "bg-onboarding-background-400/40" : "" - } ${selected ? "text-custom-text-100" : "text-custom-text-200"}` - } - > - {({ selected }) => ( -
-
-
{t(value.i18n_title)}
-
{t(value.i18n_description)}
-
- {selected && } -
- )} -
- ))} -
-
-
+
+
+
{t(value.i18n_title)}
+
{t(value.i18n_description)}
+
+
+ + ))} + )} />
diff --git a/apps/web/core/components/onboarding/steps/team/root.tsx b/apps/web/core/components/onboarding/steps/team/root.tsx index f78202a6e4..82c73a729d 100644 --- a/apps/web/core/components/onboarding/steps/team/root.tsx +++ b/apps/web/core/components/onboarding/steps/team/root.tsx @@ -15,15 +15,14 @@ import { } from "react-hook-form"; // icons import { usePopper } from "react-popper"; -import { Check, ChevronDown, Plus, XCircle } from "lucide-react"; -import { Listbox } from "@headlessui/react"; +import { ChevronDown, Plus, XCircle } from "lucide-react"; // plane imports import { ROLE, ROLE_DETAILS, EUserPermissions, MEMBER_TRACKER_EVENTS, MEMBER_TRACKER_ELEMENTS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; // types import { EOnboardingSteps, IWorkspace } from "@plane/types"; // ui -import { Button, Input, Spinner, TOAST_TYPE, setToast } from "@plane/ui"; +import { Button, CustomSelect, Input, Spinner, TOAST_TYPE, setToast } from "@plane/ui"; // constants // helpers @@ -174,69 +173,50 @@ const InviteMemberInput: React.FC = observer((props) => { name={`emails.${index}.role`} rules={{ required: true }} render={({ field: { value, onChange } }) => ( - { + onChange={(val: any) => { onChange(val); setValue(`emails.${index}.role_active`, true); }} className="w-full flex-shrink-0 text-left" + customButtonClassName="flex w-full items-center justify-between gap-1 rounded-md px-2.5 py-2 text-sm border-[0.5px] border-custom-border-300" + optionsClassName="p-2 absolute space-y-1 z-10 mt-1 h-fit w-48 sm:w-60 rounded-md border border-custom-border-300 bg-custom-background-100 shadow-sm focus:outline-none" + customButton={ + <> + + {ROLE[value]} + + + + + } > - - ( + - {ROLE[value]} - - - - - - -
- {Object.entries(ROLE_DETAILS).map(([key, value]) => ( - - `cursor-pointer select-none truncate rounded px-1 py-1.5 ${ - active || selected ? "bg-onboarding-background-400/40" : "" - } ${selected ? "text-custom-text-100" : "text-custom-text-200"}` - } - > - {({ selected }) => ( -
-
-
{t(value.i18n_title)}
-
{t(value.i18n_description)}
-
- {selected && } -
- )} -
- ))} -
-
-
+
+
+
{t(value.i18n_title)}
+
{t(value.i18n_description)}
+
+
+ + ))} + )} /> diff --git a/apps/web/core/components/profile/preferences/language-timezone.tsx b/apps/web/core/components/profile/preferences/language-timezone.tsx index 8d171ee36c..2e75389af6 100644 --- a/apps/web/core/components/profile/preferences/language-timezone.tsx +++ b/apps/web/core/components/profile/preferences/language-timezone.tsx @@ -124,7 +124,6 @@ export const LanguageTimezone = observer(() => { value={profile?.language} label={profile?.language ? getLanguageLabel(profile?.language) : "Select a language"} onChange={handleLanguageChange} - buttonClassName={"border-none"} className="rounded-md border !border-custom-border-200" optionsClassName="w-full" input