Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: swap dropdown component with plane/ui component #2480

Merged
merged 5 commits into from
Oct 19, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
chore: swap custom select component with plane/ui component
anmolsinghbhatia committed Oct 18, 2023
commit e8b57b1e7bf3e0b2d3324d041a53532e253a4c69
Original file line number Diff line number Diff line change
@@ -5,11 +5,11 @@ import { usePopper } from "react-popper";
// headless ui
import { Menu } from "@headlessui/react";
// type
import { IDropdownProps, IMenuItemProps } from "../helper";
import { ICustomMenuDropdownProps, ICustomMenuItemProps } from "./helper";
// icons
import { ChevronDown, MoreHorizontal } from "lucide-react";

const CustomMenu = (props: IDropdownProps) => {
const CustomMenu = (props: ICustomMenuDropdownProps) => {
const {
buttonClassName = "",
customButtonClassName = "",
@@ -128,7 +128,7 @@ const CustomMenu = (props: IDropdownProps) => {
);
};

const MenuItem: React.FC<IMenuItemProps> = (props) => {
const MenuItem: React.FC<ICustomMenuItemProps> = (props) => {
const { children, onClick, className = "" } = props;
return (
<Menu.Item as="div">
1 change: 0 additions & 1 deletion packages/ui/src/dropdowns/custom-menu/index.tsx

This file was deleted.

135 changes: 135 additions & 0 deletions packages/ui/src/dropdowns/custom-select.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
import React, { useState } from "react";

// react-popper
import { usePopper } from "react-popper";
// headless ui
import { Listbox } from "@headlessui/react";
// icons
import { Check, ChevronDown } from "lucide-react";
// types
import { ICustomSelectItemProps, ICustomSelectProps } from "./helper";

const CustomSelect = (props: ICustomSelectProps) => {
const {
customButtonClassName = "",
buttonClassName = "",
placement,
children,
className = "",
customButton,
disabled = false,
input = false,
label,
maxHeight = "md",
noChevron = false,
onChange,
optionsClassName = "",
value,
width = "auto",
} = props;
const [referenceElement, setReferenceElement] =
useState<HTMLButtonElement | null>(null);
const [popperElement, setPopperElement] = useState<HTMLDivElement | null>(
null
);

const { styles, attributes } = usePopper(referenceElement, popperElement, {
placement: placement ?? "bottom-start",
});

return (
<Listbox
as="div"
value={value}
onChange={onChange}
className={`relative flex-shrink-0 text-left ${className}`}
disabled={disabled}
>
<>
{customButton ? (
<Listbox.Button as={React.Fragment}>
<button
ref={setReferenceElement}
type="button"
className={`flex items-center justify-between gap-1 w-full text-xs ${
disabled
? "cursor-not-allowed text-custom-text-200"
: "cursor-pointer hover:bg-custom-background-80"
} ${customButtonClassName}`}
>
{customButton}
</button>
</Listbox.Button>
) : (
<Listbox.Button as={React.Fragment}>
<button
ref={setReferenceElement}
type="button"
className={`flex items-center justify-between gap-1 w-full rounded-md border border-custom-border-300 shadow-sm duration-300 focus:outline-none ${
input ? "px-3 py-2 text-sm" : "px-2.5 py-1 text-xs"
} ${
disabled
? "cursor-not-allowed text-custom-text-200"
: "cursor-pointer hover:bg-custom-background-80"
} ${buttonClassName}`}
>
{label}
{!noChevron && !disabled && (
<ChevronDown className="h-3 w-3" aria-hidden="true" />
)}
</button>
</Listbox.Button>
)}
</>
<Listbox.Options>
<div
className={`z-10 border border-custom-border-300 overflow-y-auto rounded-md bg-custom-background-90 text-xs shadow-custom-shadow-rg focus:outline-none my-1 ${
maxHeight === "lg"
? "max-h-60"
: maxHeight === "md"
? "max-h-48"
: maxHeight === "rg"
? "max-h-36"
: maxHeight === "sm"
? "max-h-28"
: ""
} ${
width === "auto" ? "min-w-[8rem] whitespace-nowrap" : width
} ${optionsClassName}`}
ref={setPopperElement}
style={styles.popper}
{...attributes.popper}
>
<div className="space-y-1 p-2">{children}</div>
</div>
</Listbox.Options>
</Listbox>
);
};

const Option = (props: ICustomSelectItemProps) => {
const { children, value, className } = props;
return (
<Listbox.Option
value={value}
className={({ active, selected }) =>
`cursor-pointer select-none truncate rounded px-1 py-1.5 ${
active || selected ? "bg-custom-background-80" : ""
} ${
selected ? "text-custom-text-100" : "text-custom-text-200"
} ${className}`
}
>
{({ selected }) => (
<div className="flex items-center justify-between gap-2">
<div className="flex items-center gap-2">{children}</div>
{selected && <Check className="h-4 w-4 flex-shrink-0" />}
</div>
)}
</Listbox.Option>
);
};

CustomSelect.Option = Option;

export { CustomSelect };
17 changes: 16 additions & 1 deletion packages/ui/src/dropdowns/helper.tsx
Original file line number Diff line number Diff line change
@@ -14,15 +14,30 @@ export interface IDropdownProps {
optionsClassName?: string;
width?: "auto" | string;
placement?: Placement;
}

export interface ICustomMenuDropdownProps extends IDropdownProps {
children: React.ReactNode;
ellipsis?: boolean;
noBorder?: boolean;
verticalEllipsis?: boolean;
menuButtonOnClick?: (...args: any) => void;
}

export interface IMenuItemProps {
export interface ICustomSelectProps extends IDropdownProps {
children: React.ReactNode;
value: any;
onChange: any;
}

export interface ICustomMenuItemProps {
children: React.ReactNode;
onClick?: (args?: any) => void;
className?: string;
}

export interface ICustomSelectItemProps {
children: React.ReactNode;
value: any;
className?: string;
}
1 change: 1 addition & 0 deletions packages/ui/src/dropdowns/index.tsx
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
export * from "./custom-menu";
export * from "./custom-select";
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useRouter } from "next/router";

// ui
import { CustomSelect } from "components/ui";
import { CustomSelect } from "@plane/ui";
// types
import { IAnalyticsParams, TXAxisValues } from "types";
// constants
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useRouter } from "next/router";

// ui
import { CustomSelect } from "components/ui";
import { CustomSelect } from "@plane/ui";
// types
import { TXAxisValues } from "types";
// constants
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// ui
import { CustomSelect } from "components/ui";
import { CustomSelect } from "@plane/ui";
// types
import { TYAxisValues } from "types";
// constants
3 changes: 1 addition & 2 deletions web/components/automation/auto-archive-automation.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import React, { useState } from "react";

// component
import { CustomSelect } from "components/ui";
import { ToggleSwitch } from "@plane/ui";
import { CustomSelect, ToggleSwitch } from "@plane/ui";
import { SelectMonthModal } from "components/automation";
// icon
import { ArchiveRestore } from "lucide-react";
4 changes: 2 additions & 2 deletions web/components/automation/auto-close-automation.tsx
Original file line number Diff line number Diff line change
@@ -2,9 +2,9 @@ import React, { useState } from "react";
import useSWR from "swr";
import { useRouter } from "next/router";
// component
import { CustomSearchSelect, CustomSelect } from "components/ui";
import { CustomSearchSelect } from "components/ui";
import { SelectMonthModal } from "components/automation";
import { ToggleSwitch, StateGroupIcon, DoubleCircleIcon } from "@plane/ui";
import { CustomSelect, ToggleSwitch, StateGroupIcon, DoubleCircleIcon } from "@plane/ui";
// icons
import { ArchiveX } from "lucide-react";
// services
3 changes: 1 addition & 2 deletions web/components/core/filters/date-filter-select.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import React from "react";

// ui
import { CustomSelect } from "components/ui";
import { CustomSelect, CalendarAfterIcon, CalendarBeforeIcon } from "@plane/ui";
// icons
import { CalendarAfterIcon, CalendarBeforeIcon } from "@plane/ui";
import { CalendarDays } from "lucide-react";
// fetch-keys

2 changes: 1 addition & 1 deletion web/components/core/theme/theme-switch.tsx
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@ import { FC } from "react";
// constants
import { THEME_OPTIONS, I_THEME_OPTION } from "constants/themes";
// ui
import { CustomSelect } from "components/ui";
import { CustomSelect } from "@plane/ui";

type Props = {
value: I_THEME_OPTION | null;
4 changes: 2 additions & 2 deletions web/components/integration/github/single-user-select.tsx
Original file line number Diff line number Diff line change
@@ -5,8 +5,8 @@ import useSWR from "swr";
// services
import { WorkspaceService } from "services/workspace.service";
// ui
import { Avatar, CustomSearchSelect, CustomSelect } from "components/ui";
import { Input } from "@plane/ui";
import { Avatar, CustomSearchSelect } from "components/ui";
import { CustomSelect, Input } from "@plane/ui";
// types
import { IGithubRepoCollaborator } from "types";
import { IUserDetails } from "./root";
3 changes: 1 addition & 2 deletions web/components/integration/jira/give-details.tsx
Original file line number Diff line number Diff line change
@@ -8,8 +8,7 @@ import { useMobxStore } from "lib/mobx/store-provider";
// icons
import { Plus } from "lucide-react";
// components
import { CustomSelect } from "components/ui";
import { Input } from "@plane/ui";
import { CustomSelect, Input } from "@plane/ui";
// types
import { IJiraImporterForm } from "types";

4 changes: 2 additions & 2 deletions web/components/integration/jira/import-users.tsx
Original file line number Diff line number Diff line change
@@ -7,8 +7,8 @@ import { WORKSPACE_MEMBERS_WITH_EMAIL } from "constants/fetch-keys";
// services
import { WorkspaceService } from "services/workspace.service";
// components
import { CustomSelect, CustomSearchSelect, Avatar } from "components/ui";
import { Input, ToggleSwitch } from "@plane/ui";
import { CustomSearchSelect, Avatar } from "components/ui";
import { CustomSelect, Input, ToggleSwitch } from "@plane/ui";
// types
import { IJiraImporterForm } from "types";

3 changes: 1 addition & 2 deletions web/components/issues/peek-overview/header.tsx
Original file line number Diff line number Diff line change
@@ -3,9 +3,8 @@ import Link from "next/link";
// hooks
import useToast from "hooks/use-toast";
// ui
import { CustomSelect } from "components/ui";
import { CustomSelect, FullScreenPeekIcon, ModalPeekIcon, SidePeekIcon } from "@plane/ui";
// icons
import { FullScreenPeekIcon, ModalPeekIcon, SidePeekIcon } from "@plane/ui";
import { LinkIcon, MoveRight, Trash2 } from "lucide-react";
// helpers
import { copyTextToClipboard } from "helpers/string.helper";
2 changes: 1 addition & 1 deletion web/components/issues/select/estimate.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from "react";

// ui
import { CustomSelect } from "components/ui";
import { CustomSelect } from "@plane/ui";
// icons
import { Triangle } from "lucide-react";
// fetch-keys
4 changes: 1 addition & 3 deletions web/components/issues/select/priority.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import React from "react";

// ui
import { CustomSelect } from "components/ui";
// icons
import { PriorityIcon } from "@plane/ui";
import { CustomSelect, PriorityIcon } from "@plane/ui";
// types
import { TIssuePriorities } from "types";
// constants
2 changes: 1 addition & 1 deletion web/components/issues/select/project.tsx
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ import { observer } from "mobx-react-lite";
// mobx store
import { useMobxStore } from "lib/mobx/store-provider";
// ui
import { CustomSelect } from "components/ui";
import { CustomSelect } from "@plane/ui";
// helpers
import { renderEmoji } from "helpers/emoji.helper";
// icons
3 changes: 1 addition & 2 deletions web/components/issues/sidebar-select/cycle.tsx
Original file line number Diff line number Diff line change
@@ -8,8 +8,7 @@ import useSWR, { mutate } from "swr";
import { IssueService } from "services/issue";
import { CycleService } from "services/cycle.service";
// ui
import { CustomSelect } from "components/ui";
import { Spinner, Tooltip } from "@plane/ui";
import { CustomSelect, Spinner, Tooltip } from "@plane/ui";
// helper
import { truncateText } from "helpers/string.helper";
// types
2 changes: 1 addition & 1 deletion web/components/issues/sidebar-select/estimate.tsx
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ import React from "react";
// hooks
import useEstimateOption from "hooks/use-estimate-option";
// ui
import { CustomSelect } from "components/ui";
import { CustomSelect } from "@plane/ui";
// icons
import { Triangle } from "lucide-react";

3 changes: 1 addition & 2 deletions web/components/issues/sidebar-select/module.tsx
Original file line number Diff line number Diff line change
@@ -4,8 +4,7 @@ import useSWR, { mutate } from "swr";
// services
import { ModuleService } from "services/module.service";
// ui
import { CustomSelect } from "components/ui";
import { Spinner, Tooltip } from "@plane/ui";
import { CustomSelect, Spinner, Tooltip } from "@plane/ui";
// helper
import { truncateText } from "helpers/string.helper";
// types
4 changes: 1 addition & 3 deletions web/components/issues/sidebar-select/priority.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import React from "react";

// ui
import { CustomSelect } from "components/ui";
// icons
import { PriorityIcon } from "@plane/ui";
import { CustomSelect, PriorityIcon } from "@plane/ui";
// types
import { TIssuePriorities } from "types";
// constants
3 changes: 1 addition & 2 deletions web/components/issues/sidebar-select/state.tsx
Original file line number Diff line number Diff line change
@@ -7,8 +7,7 @@ import useSWR from "swr";
// services
import { ProjectStateService } from "services/project";
// ui
import { CustomSelect } from "components/ui";
import { Spinner, StateGroupIcon } from "@plane/ui";
import { CustomSelect, Spinner, StateGroupIcon } from "@plane/ui";
// helpers
import { getStatesList } from "helpers/state.helper";
import { addSpaceIfCamelCase } from "helpers/string.helper";
3 changes: 1 addition & 2 deletions web/components/issues/view-select/estimate.tsx
Original file line number Diff line number Diff line change
@@ -2,8 +2,7 @@ import React from "react";
// hooks
import useEstimateOption from "hooks/use-estimate-option";
// ui
import { CustomSelect } from "components/ui";
import { Tooltip } from "@plane/ui";
import { CustomSelect, Tooltip } from "@plane/ui";
// icons
import { Triangle } from "lucide-react";
// types
3 changes: 1 addition & 2 deletions web/components/issues/view-select/priority.tsx
Original file line number Diff line number Diff line change
@@ -3,8 +3,7 @@ import { useRouter } from "next/router";
// services
import { TrackEventService } from "services/track_event.service";
// ui
import { CustomSelect } from "components/ui";
import { Tooltip, PriorityIcon } from "@plane/ui";
import { CustomSelect, Tooltip, PriorityIcon } from "@plane/ui";
// helpers
import { capitalizeFirstLetter } from "helpers/string.helper";
// types
4 changes: 1 addition & 3 deletions web/components/modules/select/status.tsx
Original file line number Diff line number Diff line change
@@ -3,9 +3,7 @@ import React from "react";
// react hook form
import { Controller, FieldError, Control } from "react-hook-form";
// ui
import { CustomSelect } from "components/ui";
// icons
import { DoubleCircleIcon, ModuleStatusIcon } from "@plane/ui";
import { CustomSelect, DoubleCircleIcon, ModuleStatusIcon } from "@plane/ui";
// types
import type { IModule } from "types";
// constants
3 changes: 1 addition & 2 deletions web/components/modules/sidebar-select/select-status.tsx
Original file line number Diff line number Diff line change
@@ -3,8 +3,7 @@ import React from "react";
// react-hook-form
import { Control, Controller, UseFormWatch } from "react-hook-form";
// ui
import { DoubleCircleIcon } from "@plane/ui";
import { CustomSelect } from "components/ui";
import { CustomSelect, DoubleCircleIcon } from "@plane/ui";
// types
import { IModule } from "types";
// common
3 changes: 1 addition & 2 deletions web/components/modules/sidebar.tsx
Original file line number Diff line number Diff line change
@@ -14,8 +14,7 @@ import useToast from "hooks/use-toast";
import { LinkModal, LinksList, SidebarProgressStats } from "components/core";
import { DeleteModuleModal, SidebarLeadSelect, SidebarMembersSelect } from "components/modules";
import ProgressChart from "components/core/sidebar/progress-chart";
import { CustomSelect } from "components/ui";
import { CustomMenu, Loader, ProgressBar } from "@plane/ui";
import { CustomSelect, CustomMenu, Loader, ProgressBar } from "@plane/ui";
// icon
import {
AlertCircle,
4 changes: 2 additions & 2 deletions web/components/notifications/select-snooze-till-modal.tsx
Original file line number Diff line number Diff line change
@@ -7,8 +7,8 @@ import { getAllTimeIn30MinutesInterval } from "helpers/date-time.helper";
// hooks
import useToast from "hooks/use-toast";
// components
import { Button } from "@plane/ui";
import { CustomDatePicker, CustomSelect } from "components/ui";
import { Button, CustomSelect } from "@plane/ui";
import { CustomDatePicker } from "components/ui";
import { X } from "lucide-react";
// types
import type { IUserNotification } from "types";
4 changes: 2 additions & 2 deletions web/components/onboarding/user-details.tsx
Original file line number Diff line number Diff line change
@@ -6,8 +6,8 @@ import useToast from "hooks/use-toast";
// services
import { UserService } from "services/user.service";
// ui
import { CustomSearchSelect, CustomSelect } from "components/ui";
import { Button, Input } from "@plane/ui";
import { CustomSearchSelect } from "components/ui";
import { Button, CustomSelect, Input } from "@plane/ui";
// types
import { IUser } from "types";
// fetch-keys
4 changes: 2 additions & 2 deletions web/components/project/create-project-modal.tsx
Original file line number Diff line number Diff line change
@@ -10,8 +10,8 @@ import useToast from "hooks/use-toast";
import { useWorkspaceMyMembership } from "contexts/workspace-member.context";
import useWorkspaceMembers from "hooks/use-workspace-members";
// ui
import { CustomSelect, Avatar, CustomSearchSelect } from "components/ui";
import { Button, Input, TextArea } from "@plane/ui";
import { Avatar, CustomSearchSelect } from "components/ui";
import { Button, CustomSelect, Input, TextArea } from "@plane/ui";
// components
import { ImagePickerPopover } from "components/core";
import EmojiIconPicker from "components/emoji-icon-picker";
3 changes: 1 addition & 2 deletions web/components/project/form.tsx
Original file line number Diff line number Diff line change
@@ -3,8 +3,7 @@ import { Controller, useForm } from "react-hook-form";
// components
import EmojiIconPicker from "components/emoji-icon-picker";
import { ImagePickerPopover } from "components/core";
import { CustomSelect } from "components/ui";
import { Button, Input, TextArea } from "@plane/ui";
import { Button, CustomSelect, Input, TextArea } from "@plane/ui";
// types
import { IProject, IWorkspace } from "types";
// helpers
4 changes: 2 additions & 2 deletions web/components/project/send-project-invitation-modal.tsx
Original file line number Diff line number Diff line change
@@ -8,8 +8,8 @@ import { useForm, Controller, useFieldArray } from "react-hook-form";

import { Dialog, Transition } from "@headlessui/react";
// ui
import { Button } from "@plane/ui";
import { Avatar, CustomSearchSelect, CustomSelect } from "components/ui";
import { Button, CustomSelect } from "@plane/ui";
import { Avatar, CustomSearchSelect } from "components/ui";
//icons
import { ChevronDown, Plus, X } from "lucide-react";
// services
3 changes: 1 addition & 2 deletions web/components/states/create-state-modal.tsx
Original file line number Diff line number Diff line change
@@ -9,8 +9,7 @@ import { ProjectStateService } from "services/project";
// hooks
import useToast from "hooks/use-toast";
// ui
import { CustomSelect } from "components/ui";
import { Button, Input, TextArea } from "@plane/ui";
import { Button, CustomSelect, Input, TextArea } from "@plane/ui";
// icons
import { ChevronDown } from "lucide-react";
// types
3 changes: 1 addition & 2 deletions web/components/states/create-update-state-inline.tsx
Original file line number Diff line number Diff line change
@@ -15,8 +15,7 @@ import { ProjectStateService } from "services/project";
// hooks
import useToast from "hooks/use-toast";
// ui
import { CustomSelect } from "components/ui";
import { Button, Input, Tooltip } from "@plane/ui";
import { Button, CustomSelect, Input, Tooltip } from "@plane/ui";
// types
import type { IUser, IState, IStateResponse } from "types";
// fetch-keys
3 changes: 1 addition & 2 deletions web/components/workspace/create-workspace-form.tsx
Original file line number Diff line number Diff line change
@@ -6,8 +6,7 @@ import { WorkspaceService } from "services/workspace.service";
// hooks
import useToast from "hooks/use-toast";
// ui
import { CustomSelect } from "components/ui";
import { Button, Input } from "@plane/ui";
import { Button, CustomSelect, Input } from "@plane/ui";
// types
import { IUser, IWorkspace } from "types";
// fetch-keys
3 changes: 1 addition & 2 deletions web/components/workspace/send-workspace-invitation-modal.tsx
Original file line number Diff line number Diff line change
@@ -7,8 +7,7 @@ import { WorkspaceService } from "services/workspace.service";
// hooks
import useToast from "hooks/use-toast";
// ui
import { CustomSelect } from "components/ui";
import { Button, Input } from "@plane/ui";
import { Button, CustomSelect, Input } from "@plane/ui";
// icons
import { Plus, X } from "lucide-react";
// types
4 changes: 2 additions & 2 deletions web/pages/[workspaceSlug]/me/profile/index.tsx
Original file line number Diff line number Diff line change
@@ -14,8 +14,8 @@ import { WorkspaceAuthorizationLayout } from "layouts/auth-layout-legacy";
import { ImagePickerPopover, ImageUploadModal } from "components/core";
import { SettingsSidebar } from "components/project";
// ui
import { BreadcrumbItem, Breadcrumbs, Button, Input, Spinner } from "@plane/ui";
import { CustomSearchSelect, CustomSelect } from "components/ui";
import { BreadcrumbItem, Breadcrumbs, Button, CustomSelect, Input, Spinner } from "@plane/ui";
import { CustomSearchSelect } from "components/ui";
// icons
import { User2, UserCircle2 } from "lucide-react";
// types
Original file line number Diff line number Diff line change
@@ -18,8 +18,7 @@ import ConfirmProjectMemberRemove from "components/project/confirm-project-membe
import SendProjectInvitationModal from "components/project/send-project-invitation-modal";
import { MemberSelect, SettingsSidebar } from "components/project";
// ui
import { BreadcrumbItem, Breadcrumbs, Button, CustomMenu, Loader } from "@plane/ui";
import { CustomSelect } from "components/ui";
import { BreadcrumbItem, Breadcrumbs, Button, CustomMenu, CustomSelect, Loader } from "@plane/ui";
// icons
import { ChevronDown, X } from "lucide-react";
// types
3 changes: 1 addition & 2 deletions web/pages/[workspaceSlug]/settings/index.tsx
Original file line number Diff line number Diff line change
@@ -20,8 +20,7 @@ import { DeleteWorkspaceModal } from "components/workspace";
import { SettingsSidebar } from "components/project";
// ui
import { Disclosure, Transition } from "@headlessui/react";
import { CustomSelect } from "components/ui";
import { BreadcrumbItem, Breadcrumbs, Button, Input, Spinner } from "@plane/ui";
import { BreadcrumbItem, Breadcrumbs, Button, CustomSelect, Input, Spinner } from "@plane/ui";
// icons
import { ChevronDown, ChevronUp, Pencil } from "lucide-react";
// helpers
3 changes: 1 addition & 2 deletions web/pages/[workspaceSlug]/settings/members.tsx
Original file line number Diff line number Diff line change
@@ -18,8 +18,7 @@ import ConfirmWorkspaceMemberRemove from "components/workspace/confirm-workspace
import SendWorkspaceInvitationModal from "components/workspace/send-workspace-invitation-modal";
import { SettingsSidebar } from "components/project";
// ui
import { BreadcrumbItem, Breadcrumbs, Button, CustomMenu, Loader } from "@plane/ui";
import { CustomSelect } from "components/ui";
import { BreadcrumbItem, Breadcrumbs, Button, CustomMenu, CustomSelect, Loader } from "@plane/ui";
// icons
import { ChevronDown, X } from "lucide-react";
// types