From 935074faffe7710ff0c2f6e03989111a7ea0f9db Mon Sep 17 00:00:00 2001 From: anmolsinghbhatia Date: Tue, 1 Sep 2026 18:42:27 +0530 Subject: [PATCH] refactor: migrate package icons to @makeplane/propel Replace confirmed icon symbols in packages/editor, packages/propel, packages/ui and packages/utils with their audited @makeplane/propel/icons targets, including the relative legacy icon imports inside packages/propel/src. Add the dependency to all four workspaces. Widen the icon component types that were pinned to LucideIcon so both Lucide and Propel icons satisfy them: the editor menu items, editor constants, custom image utils, alignment selector, the ui alert modal variants, and the link icon matchers in utils. Each only renders the icon as a component, and the matcher list still mixes both sources. Two files are deliberately left alone. The emoji-icon-picker directory is out of scope, and icons/priority-icon.tsx dispatches one shared size prop across four still-unresolved Lucide icons, so migrating only its urgent glyph would break that prop and mix fill with stroke. --- packages/editor/package.json | 1 + .../src/components/links/link-edit-view.tsx | 4 +- .../src/components/links/link-preview.tsx | 11 +- .../components/menus/block-menu-options.tsx | 4 +- .../src/components/menus/block-menu.tsx | 6 +- .../menus/bubble-menu/alignment-selector.tsx | 12 +- .../menus/bubble-menu/color-selector.tsx | 5 +- .../menus/bubble-menu/link-selector.tsx | 8 +- .../menus/bubble-menu/node-selector.tsx | 6 +- .../editor/src/components/menus/menu-items.ts | 99 +++++++++-------- packages/editor/src/constants/common.ts | 98 ++++++++--------- .../src/extensions/callout/color-selector.tsx | 4 +- .../extensions/code/code-block-node-view.tsx | 7 +- .../components/toolbar/alignment.tsx | 4 +- .../components/toolbar/download.tsx | 8 +- .../components/toolbar/full-screen/modal.tsx | 15 ++- .../components/toolbar/full-screen/root.tsx | 4 +- .../custom-image/components/uploader.tsx | 6 +- .../src/extensions/custom-image/utils.ts | 12 +- .../slash-commands/command-items-list.tsx | 79 +++++++------- .../plugins/drag-handles/color-selector.tsx | 8 +- .../drag-handles/column/drag-handle.tsx | 4 +- .../plugins/drag-handles/column/dropdown.tsx | 22 ++-- .../plugins/drag-handles/row/drag-handle.tsx | 4 +- .../plugins/drag-handles/row/dropdown.tsx | 22 ++-- packages/propel/package.json | 1 + packages/propel/src/accordion/accordion.tsx | 4 +- packages/propel/src/calendar/root.tsx | 4 +- .../src/collapsible/collapsible.stories.tsx | 16 +-- .../propel/src/combobox/combobox.stories.tsx | 35 +++--- packages/propel/src/combobox/combobox.tsx | 4 +- .../propel/src/command/command.stories.tsx | 34 +++--- packages/propel/src/command/command.tsx | 4 +- .../src/context-menu/context-menu.stories.tsx | 103 ++++++++++-------- packages/propel/src/dialog/dialog.stories.tsx | 4 +- .../emoji-reaction-picker.stories.tsx | 18 +-- .../src/emoji-reaction/emoji-reaction.tsx | 4 +- packages/propel/src/menu/menu.stories.tsx | 35 +++--- packages/propel/src/menu/menu.tsx | 9 +- .../propel/src/popover/popover.stories.tsx | 4 +- .../tab-navigation/tab-navigation.stories.tsx | 30 ++--- packages/propel/src/tabs/tabs.stories.tsx | 19 ++-- packages/propel/src/toast/toast.tsx | 15 ++- .../propel/src/toolbar/toolbar.stories.tsx | 92 ++++++++-------- .../propel/src/tooltip/tooltip.stories.tsx | 6 +- packages/ui/package.json | 1 + .../src/breadcrumbs/breadcrumbs.stories.tsx | 16 +-- packages/ui/src/breadcrumbs/breadcrumbs.tsx | 6 +- .../ui/src/collapsible/collapsible-button.tsx | 4 +- packages/ui/src/drag-handle.tsx | 6 +- .../ui/src/dropdown/common/input-search.tsx | 4 +- packages/ui/src/dropdown/common/options.tsx | 4 +- .../ui/src/dropdowns/context-menu/item.tsx | 4 +- packages/ui/src/dropdowns/custom-menu.tsx | 11 +- .../ui/src/dropdowns/custom-search-select.tsx | 11 +- packages/ui/src/dropdowns/custom-select.tsx | 6 +- packages/ui/src/favorite-star.tsx | 4 +- .../ui/src/form-fields/password/indicator.tsx | 4 +- .../form-fields/password/password-input.tsx | 6 +- packages/ui/src/modals/alert-modal.tsx | 9 +- packages/ui/src/popovers/popover.tsx | 4 +- packages/utils/package.json | 1 + packages/utils/src/get-icon-for-link.ts | 56 +++++----- pnpm-lock.yaml | 12 ++ 64 files changed, 550 insertions(+), 513 deletions(-) diff --git a/packages/editor/package.json b/packages/editor/package.json index 20e4a41be4..8f71154da7 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -37,6 +37,7 @@ "@floating-ui/react": "catalog:", "@headlessui/react": "catalog:", "@hocuspocus/provider": "catalog:", + "@makeplane/propel": "catalog:", "@plane/constants": "workspace:*", "@plane/hooks": "workspace:*", "@plane/propel": "workspace:*", diff --git a/packages/editor/src/components/links/link-edit-view.tsx b/packages/editor/src/components/links/link-edit-view.tsx index 3adbefa27c..cc4b2b990d 100644 --- a/packages/editor/src/components/links/link-edit-view.tsx +++ b/packages/editor/src/components/links/link-edit-view.tsx @@ -5,7 +5,7 @@ */ import type { Node } from "@tiptap/pm/model"; -import { Link2Off } from "lucide-react"; +import { UnlinkOutline } from "@makeplane/propel/icons"; import { useCallback, useEffect, useRef, useState } from "react"; // components import type { LinkViewProps, LinkViews } from "@/components/links"; @@ -148,7 +148,7 @@ export function LinkEditView({ viewProps }: LinkEditViewProps) {
- + diff --git a/packages/editor/src/components/links/link-preview.tsx b/packages/editor/src/components/links/link-preview.tsx index f47c97bd43..b689dcf830 100644 --- a/packages/editor/src/components/links/link-preview.tsx +++ b/packages/editor/src/components/links/link-preview.tsx @@ -4,8 +4,7 @@ * See the LICENSE file for details. */ -import { Link2Off } from "lucide-react"; -import { CopyIcon, GlobeIcon, EditIcon } from "@plane/propel/icons"; +import { CopyOutline, EditOutline, GlobeOutline, UnlinkOutline } from "@makeplane/propel/icons"; // components import type { LinkViewProps, LinkViews } from "@/components/links"; @@ -36,11 +35,11 @@ export function LinkPreview({ }} >
- +

{url?.length > 40 ? url.slice(0, 40) + "..." : url}

{editor.isEditable && ( <> @@ -48,10 +47,10 @@ export function LinkPreview({ onClick={() => switchView("LinkEditView")} className="cursor-pointer transition-colors hover:text-primary" > - + )} diff --git a/packages/editor/src/components/menus/block-menu-options.tsx b/packages/editor/src/components/menus/block-menu-options.tsx index 9a8b42c7fb..6fe33c2ed7 100644 --- a/packages/editor/src/components/menus/block-menu-options.tsx +++ b/packages/editor/src/components/menus/block-menu-options.tsx @@ -7,7 +7,7 @@ import type { Node as ProseMirrorNode } from "@tiptap/pm/model"; import { TableMap } from "@tiptap/pm/tables"; import type { Editor } from "@tiptap/react"; -import { MoveHorizontal } from "lucide-react"; +import { DragDropOutline } from "@makeplane/propel/icons"; // constants import { CORE_EXTENSIONS } from "@/constants/extension"; // types @@ -84,7 +84,7 @@ const setTableToFullWidth = (editor: Editor): void => { export const getNodeOptions = (editor: Editor): BlockMenuOption[] => [ { - icon: MoveHorizontal, + icon: DragDropOutline, key: "table-full-width", label: "Fit to width", isDisabled: !editor.isActive(CORE_EXTENSIONS.TABLE), diff --git a/packages/editor/src/components/menus/block-menu.tsx b/packages/editor/src/components/menus/block-menu.tsx index c3dff0d20e..d50feae2b2 100644 --- a/packages/editor/src/components/menus/block-menu.tsx +++ b/packages/editor/src/components/menus/block-menu.tsx @@ -17,7 +17,7 @@ import { import type { Editor } from "@tiptap/react"; import type { LucideIcon } from "lucide-react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { CopyIcon, TrashIcon } from "@plane/propel/icons"; +import { CopyOutline, DeleteOutline } from "@makeplane/propel/icons"; import type { ISvgIcons } from "@plane/propel/icons"; import { cn } from "@plane/utils"; // constants @@ -150,7 +150,7 @@ export function BlockMenu(props: Props) { const MENU_ITEMS: BlockMenuOption[] = [ { - icon: TrashIcon, + icon: DeleteOutline, key: "delete", label: "Delete", onClick: (_e) => { @@ -159,7 +159,7 @@ export function BlockMenu(props: Props) { }, }, { - icon: CopyIcon, + icon: CopyOutline, key: "duplicate", label: "Duplicate", isDisabled: diff --git a/packages/editor/src/components/menus/bubble-menu/alignment-selector.tsx b/packages/editor/src/components/menus/bubble-menu/alignment-selector.tsx index 0bfad5a671..311eaa54ec 100644 --- a/packages/editor/src/components/menus/bubble-menu/alignment-selector.tsx +++ b/packages/editor/src/components/menus/bubble-menu/alignment-selector.tsx @@ -5,8 +5,8 @@ */ import type { Editor } from "@tiptap/core"; -import type { LucideIcon } from "lucide-react"; -import { AlignCenter, AlignLeft, AlignRight } from "lucide-react"; +import type { ComponentType, SVGProps } from "react"; +import { AlignCenterOutline, AlignLeftOutline, AlignRightOutline } from "@makeplane/propel/icons"; // plane utils import { cn } from "@plane/utils"; // components @@ -27,14 +27,14 @@ export function TextAlignmentSelector(props: Props) { const textAlignmentOptions: { itemKey: TEditorCommands; renderKey: string; - icon: LucideIcon; + icon: ComponentType>; command: () => void; isActive: () => boolean; }[] = [ { itemKey: "text-align", renderKey: "text-align-left", - icon: AlignLeft, + icon: AlignLeftOutline, command: () => menuItem.command({ alignment: "left", @@ -44,7 +44,7 @@ export function TextAlignmentSelector(props: Props) { { itemKey: "text-align", renderKey: "text-align-center", - icon: AlignCenter, + icon: AlignCenterOutline, command: () => menuItem.command({ alignment: "center", @@ -54,7 +54,7 @@ export function TextAlignmentSelector(props: Props) { { itemKey: "text-align", renderKey: "text-align-right", - icon: AlignRight, + icon: AlignRightOutline, command: () => menuItem.command({ alignment: "right", diff --git a/packages/editor/src/components/menus/bubble-menu/color-selector.tsx b/packages/editor/src/components/menus/bubble-menu/color-selector.tsx index d8151b8b61..b2ad51e9ea 100644 --- a/packages/editor/src/components/menus/bubble-menu/color-selector.tsx +++ b/packages/editor/src/components/menus/bubble-menu/color-selector.tsx @@ -5,7 +5,8 @@ */ import type { Editor } from "@tiptap/react"; -import { ALargeSmall, Ban } from "lucide-react"; +import { Ban } from "lucide-react"; +import { TextOutline } from "@makeplane/propel/icons"; import { useMemo } from "react"; // plane utils import { cn } from "@plane/utils"; @@ -48,7 +49,7 @@ export function BubbleMenuColorSelector(props: Props) { backgroundColor: activeBackgroundColor ? activeBackgroundColor.backgroundColor : "transparent", }} > - Link - + } options={options} @@ -102,7 +102,7 @@ export function BubbleMenuLinkSelector(props: Props) { context.onOpenChange(false); }} > - + ) : ( )}
diff --git a/packages/editor/src/components/menus/bubble-menu/node-selector.tsx b/packages/editor/src/components/menus/bubble-menu/node-selector.tsx index e31fe56359..78663abc2c 100644 --- a/packages/editor/src/components/menus/bubble-menu/node-selector.tsx +++ b/packages/editor/src/components/menus/bubble-menu/node-selector.tsx @@ -6,7 +6,7 @@ import type { Editor } from "@tiptap/react"; -import { CheckIcon, ChevronDownIcon } from "@plane/propel/icons"; +import { ChevronDownOutline, TickOutline } from "@makeplane/propel/icons"; // plane utils import { cn } from "@plane/utils"; // components @@ -73,7 +73,7 @@ export function BubbleMenuNodeSelector(props: Props) { menuButton={ <> {activeItem?.name} - + } options={options} @@ -101,7 +101,7 @@ export function BubbleMenuNodeSelector(props: Props) { {item.name}
- {activeItem.name === item.name && } + {activeItem.name === item.name && } ))} diff --git a/packages/editor/src/components/menus/menu-items.ts b/packages/editor/src/components/menus/menu-items.ts index 74407c9a03..90f54d7807 100644 --- a/packages/editor/src/components/menus/menu-items.ts +++ b/packages/editor/src/components/menus/menu-items.ts @@ -6,30 +6,30 @@ import type { Editor } from "@tiptap/react"; import { - BoldIcon, - Heading1, - CheckSquare, - Heading2, - Heading3, - TextQuote, - ImageIcon, - TableIcon, - ListIcon, - ListOrderedIcon, - ItalicIcon, - UnderlineIcon, - StrikethroughIcon, - CodeIcon, - Heading4, - Heading5, - Heading6, - CaseSensitive, - MinusSquare, - Palette, - AlignCenter, -} from "lucide-react"; -import type { LucideIcon } from "lucide-react"; -import { LinkIcon } from "@plane/propel/icons"; + AlignCenterOutline, + BoldOutline, + CheckSquareOutline, + CodeOutline, + H1Outline, + H2Outline, + H3Outline, + H4Outline, + H5Outline, + H6Outline, + ImageOutline, + ItalicOutline, + LinkOutline, + ListOutline, + MinusSquareOutline, + NumberedListOutline, + PaletteOutline, + QuoteOutline, + StrikethroughOutline, + TableOutline, + TextOutline, + UnderlineOutline, +} from "@makeplane/propel/icons"; +import type { ComponentType, SVGProps } from "react"; // constants import { CORE_EXTENSIONS } from "@/constants/extension"; // helpers @@ -56,7 +56,6 @@ import { } from "@/helpers/editor-commands"; // types import type { TCommandWithProps, TEditorCommands } from "@/types"; -import type { ISvgIcons } from "@plane/propel/icons"; type isActiveFunction = (params?: TCommandWithProps) => boolean; type commandFunction = (params?: TCommandWithProps) => void; @@ -64,7 +63,7 @@ export type EditorMenuItem = { key: T; name: string; command: commandFunction; - icon: LucideIcon | React.FC; + icon: ComponentType>; isActive: isActiveFunction; }; @@ -73,7 +72,7 @@ export const TextItem = (editor: Editor): EditorMenuItem<"text"> => ({ name: "Text", isActive: () => editor.isActive(CORE_EXTENSIONS.PARAGRAPH), command: () => setText(editor), - icon: CaseSensitive, + icon: TextOutline, }); type SupportedHeadingLevels = Extract; @@ -83,7 +82,7 @@ const HeadingItem = ( level: 1 | 2 | 3 | 4 | 5 | 6, key: T, name: string, - icon: LucideIcon + icon: ComponentType> ): EditorMenuItem => ({ key, name, @@ -93,29 +92,29 @@ const HeadingItem = ( }); export const HeadingOneItem = (editor: Editor): EditorMenuItem<"h1"> => - HeadingItem(editor, 1, "h1", "Heading 1", Heading1); + HeadingItem(editor, 1, "h1", "Heading 1", H1Outline); export const HeadingTwoItem = (editor: Editor): EditorMenuItem<"h2"> => - HeadingItem(editor, 2, "h2", "Heading 2", Heading2); + HeadingItem(editor, 2, "h2", "Heading 2", H2Outline); export const HeadingThreeItem = (editor: Editor): EditorMenuItem<"h3"> => - HeadingItem(editor, 3, "h3", "Heading 3", Heading3); + HeadingItem(editor, 3, "h3", "Heading 3", H3Outline); export const HeadingFourItem = (editor: Editor): EditorMenuItem<"h4"> => - HeadingItem(editor, 4, "h4", "Heading 4", Heading4); + HeadingItem(editor, 4, "h4", "Heading 4", H4Outline); export const HeadingFiveItem = (editor: Editor): EditorMenuItem<"h5"> => - HeadingItem(editor, 5, "h5", "Heading 5", Heading5); + HeadingItem(editor, 5, "h5", "Heading 5", H5Outline); export const HeadingSixItem = (editor: Editor): EditorMenuItem<"h6"> => - HeadingItem(editor, 6, "h6", "Heading 6", Heading6); + HeadingItem(editor, 6, "h6", "Heading 6", H6Outline); export const BoldItem = (editor: Editor): EditorMenuItem<"bold"> => ({ key: "bold", name: "Bold", isActive: () => editor?.isActive(CORE_EXTENSIONS.BOLD), command: () => toggleBold(editor), - icon: BoldIcon, + icon: BoldOutline, }); export const ItalicItem = (editor: Editor): EditorMenuItem<"italic"> => ({ @@ -123,7 +122,7 @@ export const ItalicItem = (editor: Editor): EditorMenuItem<"italic"> => ({ name: "Italic", isActive: () => editor?.isActive(CORE_EXTENSIONS.ITALIC), command: () => toggleItalic(editor), - icon: ItalicIcon, + icon: ItalicOutline, }); export const UnderLineItem = (editor: Editor): EditorMenuItem<"underline"> => ({ @@ -131,7 +130,7 @@ export const UnderLineItem = (editor: Editor): EditorMenuItem<"underline"> => ({ name: "Underline", isActive: () => editor?.isActive(CORE_EXTENSIONS.UNDERLINE), command: () => toggleUnderline(editor), - icon: UnderlineIcon, + icon: UnderlineOutline, }); export const StrikeThroughItem = (editor: Editor): EditorMenuItem<"strikethrough"> => ({ @@ -139,7 +138,7 @@ export const StrikeThroughItem = (editor: Editor): EditorMenuItem<"strikethrough name: "Strikethrough", isActive: () => editor?.isActive(CORE_EXTENSIONS.STRIKETHROUGH), command: () => toggleStrike(editor), - icon: StrikethroughIcon, + icon: StrikethroughOutline, }); export const BulletListItem = (editor: Editor): EditorMenuItem<"bulleted-list"> => ({ @@ -147,7 +146,7 @@ export const BulletListItem = (editor: Editor): EditorMenuItem<"bulleted-list"> name: "Bulleted list", isActive: () => editor?.isActive(CORE_EXTENSIONS.BULLET_LIST), command: () => toggleBulletList(editor), - icon: ListIcon, + icon: ListOutline, }); export const NumberedListItem = (editor: Editor): EditorMenuItem<"numbered-list"> => ({ @@ -155,7 +154,7 @@ export const NumberedListItem = (editor: Editor): EditorMenuItem<"numbered-list" name: "Numbered list", isActive: () => editor?.isActive(CORE_EXTENSIONS.ORDERED_LIST), command: () => toggleOrderedList(editor), - icon: ListOrderedIcon, + icon: NumberedListOutline, }); export const TodoListItem = (editor: Editor): EditorMenuItem<"to-do-list"> => ({ @@ -163,7 +162,7 @@ export const TodoListItem = (editor: Editor): EditorMenuItem<"to-do-list"> => ({ name: "To-do list", isActive: () => editor.isActive(CORE_EXTENSIONS.TASK_ITEM), command: () => toggleTaskList(editor), - icon: CheckSquare, + icon: CheckSquareOutline, }); export const QuoteItem = (editor: Editor): EditorMenuItem<"quote"> => ({ @@ -171,7 +170,7 @@ export const QuoteItem = (editor: Editor): EditorMenuItem<"quote"> => ({ name: "Quote", isActive: () => editor?.isActive(CORE_EXTENSIONS.BLOCKQUOTE), command: () => toggleBlockquote(editor), - icon: TextQuote, + icon: QuoteOutline, }); export const CodeItem = (editor: Editor): EditorMenuItem<"code"> => ({ @@ -179,7 +178,7 @@ export const CodeItem = (editor: Editor): EditorMenuItem<"code"> => ({ name: "Code", isActive: () => editor?.isActive(CORE_EXTENSIONS.CODE_INLINE) || editor?.isActive(CORE_EXTENSIONS.CODE_BLOCK), command: () => toggleCodeBlock(editor), - icon: CodeIcon, + icon: CodeOutline, }); export const TableItem = (editor: Editor): EditorMenuItem<"table"> => ({ @@ -187,7 +186,7 @@ export const TableItem = (editor: Editor): EditorMenuItem<"table"> => ({ name: "Table", isActive: () => editor?.isActive(CORE_EXTENSIONS.TABLE), command: () => insertTableCommand(editor), - icon: TableIcon, + icon: TableOutline, }); export const ImageItem = (editor: Editor): EditorMenuItem<"image"> => ({ @@ -195,7 +194,7 @@ export const ImageItem = (editor: Editor): EditorMenuItem<"image"> => ({ name: "Image", isActive: () => editor?.isActive(CORE_EXTENSIONS.IMAGE) || editor?.isActive(CORE_EXTENSIONS.CUSTOM_IMAGE), command: () => insertImage({ editor, event: "insert", pos: editor.state.selection.from }), - icon: ImageIcon, + icon: ImageOutline, }); export const HorizontalRuleItem = (editor: Editor): EditorMenuItem<"divider"> => @@ -204,7 +203,7 @@ export const HorizontalRuleItem = (editor: Editor): EditorMenuItem<"divider"> => name: "Divider", isActive: () => editor?.isActive(CORE_EXTENSIONS.HORIZONTAL_RULE), command: () => insertHorizontalRule(editor), - icon: MinusSquare, + icon: MinusSquareOutline, }) as const; export const LinkItem = (editor: Editor): EditorMenuItem<"link"> => @@ -219,7 +218,7 @@ export const LinkItem = (editor: Editor): EditorMenuItem<"link"> => else unsetLinkEditor(editor); }, - icon: LinkIcon, + icon: LinkOutline, }) as const; export const TextColorItem = (editor: Editor): EditorMenuItem<"text-color"> => ({ @@ -230,7 +229,7 @@ export const TextColorItem = (editor: Editor): EditorMenuItem<"text-color"> => ( if (!props) return; toggleTextColor(props.color, editor); }, - icon: Palette, + icon: PaletteOutline, }); export const BackgroundColorItem = (editor: Editor): EditorMenuItem<"background-color"> => ({ @@ -241,7 +240,7 @@ export const BackgroundColorItem = (editor: Editor): EditorMenuItem<"background- if (!props) return; toggleBackgroundColor(props.color, editor); }, - icon: Palette, + icon: PaletteOutline, }); export const TextAlignItem = (editor: Editor): EditorMenuItem<"text-align"> => ({ @@ -252,7 +251,7 @@ export const TextAlignItem = (editor: Editor): EditorMenuItem<"text-align"> => ( if (!props) return; setTextAlign(props.alignment, editor); }, - icon: AlignCenter, + icon: AlignCenterOutline, }); export const getEditorMenuItems = (editor: Editor | null): EditorMenuItem[] => { diff --git a/packages/editor/src/constants/common.ts b/packages/editor/src/constants/common.ts index b90069944c..0610b02534 100644 --- a/packages/editor/src/constants/common.ts +++ b/packages/editor/src/constants/common.ts @@ -4,30 +4,30 @@ * See the LICENSE file for details. */ -import type { LucideIcon } from "lucide-react"; +import type { ComponentType, SVGProps } from "react"; import { - AlignCenter, - AlignLeft, - AlignRight, - Bold, - CaseSensitive, - Code2, - Heading1, - Heading2, - Heading3, - Heading4, - Heading5, - Heading6, - Image, - Italic, - List, - ListOrdered, - ListTodo, - Strikethrough, - Table, - TextQuote, - Underline, -} from "lucide-react"; + AlignCenterOutline, + AlignLeftOutline, + AlignRightOutline, + BoldOutline, + CodeOutline, + H1Outline, + H2Outline, + H3Outline, + H4Outline, + H5Outline, + H6Outline, + ImageOutline, + ItalicOutline, + ListOutline, + NumberedListOutline, + QuoteOutline, + StrikethroughOutline, + TableEditorOutline, + TextOutline, + ToDoOutline, + UnderlineOutline, +} from "@makeplane/propel/icons"; import { MonospaceIcon, SansSerifIcon, SerifIcon } from "@plane/propel/icons"; import type { TCommandExtraProps, TEditorCommands, TEditorFontStyle } from "@/types"; @@ -42,20 +42,20 @@ export type ToolbarMenuItem = { itemKey: T; renderKey: string; name: string; - icon: LucideIcon; + icon: ComponentType>; shortcut?: string[]; editors: TEditorTypes[]; extraProps?: ExtraPropsForCommand; }; export const TYPOGRAPHY_ITEMS: ToolbarMenuItem<"text" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6">[] = [ - { itemKey: "text", renderKey: "text", name: "Text", icon: CaseSensitive, editors: ["document"] }, - { itemKey: "h1", renderKey: "h1", name: "Heading 1", icon: Heading1, editors: ["document"] }, - { itemKey: "h2", renderKey: "h2", name: "Heading 2", icon: Heading2, editors: ["document"] }, - { itemKey: "h3", renderKey: "h3", name: "Heading 3", icon: Heading3, editors: ["document"] }, - { itemKey: "h4", renderKey: "h4", name: "Heading 4", icon: Heading4, editors: ["document"] }, - { itemKey: "h5", renderKey: "h5", name: "Heading 5", icon: Heading5, editors: ["document"] }, - { itemKey: "h6", renderKey: "h6", name: "Heading 6", icon: Heading6, editors: ["document"] }, + { itemKey: "text", renderKey: "text", name: "Text", icon: TextOutline, editors: ["document"] }, + { itemKey: "h1", renderKey: "h1", name: "Heading 1", icon: H1Outline, editors: ["document"] }, + { itemKey: "h2", renderKey: "h2", name: "Heading 2", icon: H2Outline, editors: ["document"] }, + { itemKey: "h3", renderKey: "h3", name: "Heading 3", icon: H3Outline, editors: ["document"] }, + { itemKey: "h4", renderKey: "h4", name: "Heading 4", icon: H4Outline, editors: ["document"] }, + { itemKey: "h5", renderKey: "h5", name: "Heading 5", icon: H5Outline, editors: ["document"] }, + { itemKey: "h6", renderKey: "h6", name: "Heading 6", icon: H6Outline, editors: ["document"] }, ]; export const TEXT_ALIGNMENT_ITEMS: ToolbarMenuItem<"text-align">[] = [ @@ -63,7 +63,7 @@ export const TEXT_ALIGNMENT_ITEMS: ToolbarMenuItem<"text-align">[] = [ itemKey: "text-align", renderKey: "text-align-left", name: "Left align", - icon: AlignLeft, + icon: AlignLeftOutline, shortcut: ["Cmd", "Shift", "L"], editors: ["lite", "document"], extraProps: { @@ -74,7 +74,7 @@ export const TEXT_ALIGNMENT_ITEMS: ToolbarMenuItem<"text-align">[] = [ itemKey: "text-align", renderKey: "text-align-center", name: "Center align", - icon: AlignCenter, + icon: AlignCenterOutline, shortcut: ["Cmd", "Shift", "E"], editors: ["lite", "document"], extraProps: { @@ -85,7 +85,7 @@ export const TEXT_ALIGNMENT_ITEMS: ToolbarMenuItem<"text-align">[] = [ itemKey: "text-align", renderKey: "text-align-right", name: "Right align", - icon: AlignRight, + icon: AlignRightOutline, shortcut: ["Cmd", "Shift", "R"], editors: ["lite", "document"], extraProps: { @@ -98,32 +98,32 @@ const BASIC_MARK_ITEMS: ToolbarMenuItem<"bold" | "italic" | "underline" | "strik { itemKey: "bold", renderKey: "bold", - name: "Bold", - icon: Bold, + name: "BoldOutline", + icon: BoldOutline, shortcut: ["Cmd", "B"], editors: ["lite", "document"], }, { itemKey: "italic", renderKey: "italic", - name: "Italic", - icon: Italic, + name: "ItalicOutline", + icon: ItalicOutline, shortcut: ["Cmd", "I"], editors: ["lite", "document"], }, { itemKey: "underline", renderKey: "underline", - name: "Underline", - icon: Underline, + name: "UnderlineOutline", + icon: UnderlineOutline, shortcut: ["Cmd", "U"], editors: ["lite", "document"], }, { itemKey: "strikethrough", renderKey: "strikethrough", - name: "Strikethrough", - icon: Strikethrough, + name: "StrikethroughOutline", + icon: StrikethroughOutline, shortcut: ["Cmd", "Shift", "S"], editors: ["lite", "document"], }, @@ -134,7 +134,7 @@ const LIST_ITEMS: ToolbarMenuItem<"bulleted-list" | "numbered-list" | "to-do-lis itemKey: "bulleted-list", renderKey: "bulleted-list", name: "Bulleted list", - icon: List, + icon: ListOutline, shortcut: ["Cmd", "Shift", "7"], editors: ["lite", "document"], }, @@ -142,7 +142,7 @@ const LIST_ITEMS: ToolbarMenuItem<"bulleted-list" | "numbered-list" | "to-do-lis itemKey: "numbered-list", renderKey: "numbered-list", name: "Numbered list", - icon: ListOrdered, + icon: NumberedListOutline, shortcut: ["Cmd", "Shift", "8"], editors: ["lite", "document"], }, @@ -150,20 +150,20 @@ const LIST_ITEMS: ToolbarMenuItem<"bulleted-list" | "numbered-list" | "to-do-lis itemKey: "to-do-list", renderKey: "to-do-list", name: "To-do list", - icon: ListTodo, + icon: ToDoOutline, shortcut: ["Cmd", "Shift", "9"], editors: ["lite", "document"], }, ]; export const USER_ACTION_ITEMS: ToolbarMenuItem<"quote" | "code">[] = [ - { itemKey: "quote", renderKey: "quote", name: "Quote", icon: TextQuote, editors: ["lite", "document"] }, - { itemKey: "code", renderKey: "code", name: "Code", icon: Code2, editors: ["lite", "document"] }, + { itemKey: "quote", renderKey: "quote", name: "Quote", icon: QuoteOutline, editors: ["lite", "document"] }, + { itemKey: "code", renderKey: "code", name: "Code", icon: CodeOutline, editors: ["lite", "document"] }, ]; export const COMPLEX_ITEMS: ToolbarMenuItem<"table" | "image">[] = [ - { itemKey: "table", renderKey: "table", name: "Table", icon: Table, editors: ["document"] }, - { itemKey: "image", renderKey: "image", name: "Image", icon: Image, editors: ["lite", "document"] }, + { itemKey: "table", renderKey: "table", name: "TableEditorOutline", icon: TableEditorOutline, editors: ["document"] }, + { itemKey: "image", renderKey: "image", name: "ImageOutline", icon: ImageOutline, editors: ["lite", "document"] }, ]; export const IMAGE_ITEM = COMPLEX_ITEMS.find((item): item is ToolbarMenuItem<"image"> => item.itemKey === "image")!; diff --git a/packages/editor/src/extensions/callout/color-selector.tsx b/packages/editor/src/extensions/callout/color-selector.tsx index a51e2f4eab..cb535b380c 100644 --- a/packages/editor/src/extensions/callout/color-selector.tsx +++ b/packages/editor/src/extensions/callout/color-selector.tsx @@ -5,7 +5,7 @@ */ import { Ban } from "lucide-react"; -import { ChevronDownIcon } from "@plane/propel/icons"; +import { ChevronDownOutline } from "@makeplane/propel/icons"; // plane utils import { cn } from "@plane/utils"; // constants @@ -50,7 +50,7 @@ export function CalloutBlockColorSelector(props: Props) { disabled={disabled} > Color - + {isOpen && (
diff --git a/packages/editor/src/extensions/code/code-block-node-view.tsx b/packages/editor/src/extensions/code/code-block-node-view.tsx index 6df877d44b..12592a1b17 100644 --- a/packages/editor/src/extensions/code/code-block-node-view.tsx +++ b/packages/editor/src/extensions/code/code-block-node-view.tsx @@ -8,9 +8,8 @@ import type { Node as ProseMirrorNode } from "@tiptap/pm/model"; import { NodeViewWrapper, NodeViewContent } from "@tiptap/react"; import ts from "highlight.js/lib/languages/typescript"; import { common, createLowlight } from "lowlight"; -import { CheckIcon } from "lucide-react"; +import { CopyOutline, TickOutline } from "@makeplane/propel/icons"; import { useState } from "react"; -import { CopyIcon } from "@plane/propel/icons"; // ui import { Tooltip } from "@plane/propel/tooltip"; // plane utils @@ -58,9 +57,9 @@ export function CodeBlockComponent({ node }: Props) { onClick={(e) => void copyToClipboard(e)} > {copied ? ( - + ) : ( - + )} diff --git a/packages/editor/src/extensions/custom-image/components/toolbar/alignment.tsx b/packages/editor/src/extensions/custom-image/components/toolbar/alignment.tsx index ecdcf0c6ea..2b8602b4ab 100644 --- a/packages/editor/src/extensions/custom-image/components/toolbar/alignment.tsx +++ b/packages/editor/src/extensions/custom-image/components/toolbar/alignment.tsx @@ -7,7 +7,7 @@ import { useEffect, useRef, useState } from "react"; // plane imports import { useOutsideClickDetector } from "@plane/hooks"; -import { ChevronDownIcon } from "@plane/propel/icons"; +import { ChevronDownOutline } from "@makeplane/propel/icons"; import { Tooltip } from "@plane/propel/tooltip"; // local imports import type { TCustomImageAlignment } from "../../types"; @@ -44,7 +44,7 @@ export function ImageAlignmentAction(props: Props) { onClick={() => setIsDropdownOpen((prev) => !prev)} > {activeAlignmentDetails && } - + {isDropdownOpen && ( diff --git a/packages/editor/src/extensions/custom-image/components/toolbar/download.tsx b/packages/editor/src/extensions/custom-image/components/toolbar/download.tsx index 772ddd0fb9..947a7ad7b4 100644 --- a/packages/editor/src/extensions/custom-image/components/toolbar/download.tsx +++ b/packages/editor/src/extensions/custom-image/components/toolbar/download.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import { Download } from "lucide-react"; +import { DownloadOutline } from "@makeplane/propel/icons"; // plane imports import { Tooltip } from "@plane/propel/tooltip"; @@ -16,14 +16,14 @@ export function ImageDownloadAction(props: Props) { const { src } = props; return ( - + ); diff --git a/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/modal.tsx b/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/modal.tsx index 044607e9ec..292e28d8e0 100644 --- a/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/modal.tsx +++ b/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/modal.tsx @@ -4,10 +4,9 @@ * See the LICENSE file for details. */ -import { Download, Minus } from "lucide-react"; +import { AddOutline, CloseOutline, DownloadOutline, MinusOutline, NewTabOutline } from "@makeplane/propel/icons"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import ReactDOM from "react-dom"; -import { NewTabIcon, PlusIcon, CloseIcon } from "@plane/propel/icons"; // plane imports import { cn } from "@plane/utils"; @@ -219,7 +218,7 @@ function ImageFullScreenModalWithoutPortal(props: Props) { className="absolute top-10 right-10 grid size-8 place-items-center" aria-label="Close image viewer" > - + - + {Math.round(100 * magnification)}%
{!isTouchDevice && ( @@ -276,9 +275,9 @@ function ImageFullScreenModalWithoutPortal(props: Props) { type="button" onClick={() => window.open(downloadSrc, "_blank")} className="grid size-8 flex-shrink-0 place-items-center text-white/60 transition-colors duration-200 hover:text-white" - aria-label="Download image" + aria-label="DownloadOutline image" > - + )} {!isTouchDevice && ( @@ -288,7 +287,7 @@ function ImageFullScreenModalWithoutPortal(props: Props) { className="grid size-8 flex-shrink-0 place-items-center text-white/60 transition-colors duration-200 hover:text-white" aria-label="Open image in new tab" > - + )}
diff --git a/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/root.tsx b/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/root.tsx index 79e116a3b8..5baa86b4cc 100644 --- a/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/root.tsx +++ b/packages/editor/src/extensions/custom-image/components/toolbar/full-screen/root.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import { Maximize } from "lucide-react"; +import { FullScreenOutline } from "@makeplane/propel/icons"; import { useEffect, useState } from "react"; // plane imports import { Tooltip } from "@plane/propel/tooltip"; @@ -56,7 +56,7 @@ export function ImageFullScreenActionRoot(props: Props) { className="grid h-full flex-shrink-0 place-items-center text-on-color/60 transition-colors hover:text-on-color" aria-label="View image in full screen" > - + diff --git a/packages/editor/src/extensions/custom-image/components/uploader.tsx b/packages/editor/src/extensions/custom-image/components/uploader.tsx index 13dd5a4ba5..4e13930dde 100644 --- a/packages/editor/src/extensions/custom-image/components/uploader.tsx +++ b/packages/editor/src/extensions/custom-image/components/uploader.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import { ImageIcon, RotateCcw } from "lucide-react"; +import { ImageOutline, RefreshOutline } from "@makeplane/propel/icons"; import type { ChangeEvent } from "react"; import { useCallback, useEffect, useMemo, useRef } from "react"; // plane imports @@ -235,7 +235,7 @@ export function CustomImageUploader(props: CustomImageUploaderProps) { } }} > - +
{getDisplayMessage()}
{hasDuplicationFailed && editor.isEditable && ( )} diff --git a/packages/editor/src/extensions/custom-image/utils.ts b/packages/editor/src/extensions/custom-image/utils.ts index 5e7ed2de72..fbeeb387c8 100644 --- a/packages/editor/src/extensions/custom-image/utils.ts +++ b/packages/editor/src/extensions/custom-image/utils.ts @@ -5,8 +5,8 @@ */ import type { Editor } from "@tiptap/core"; -import { AlignCenter, AlignLeft, AlignRight } from "lucide-react"; -import type { LucideIcon } from "lucide-react"; +import { AlignCenterOutline, AlignLeftOutline, AlignRightOutline } from "@makeplane/propel/icons"; +import type { ComponentType, SVGProps } from "react"; // local imports import { ECustomImageAttributeNames, ECustomImageStatus } from "./types"; import type { TCustomImageAlignment, Pixel, TCustomImageAttributes } from "./types"; @@ -41,22 +41,22 @@ export const ensurePixelString = ( export const IMAGE_ALIGNMENT_OPTIONS: { label: string; value: TCustomImageAlignment; - icon: LucideIcon; + icon: ComponentType>; }[] = [ { label: "Left", value: "left", - icon: AlignLeft, + icon: AlignLeftOutline, }, { label: "Center", value: "center", - icon: AlignCenter, + icon: AlignCenterOutline, }, { label: "Right", value: "right", - icon: AlignRight, + icon: AlignRightOutline, }, ]; export const getImageBlockId = (id: string) => `editor-image-block-${id}`; diff --git a/packages/editor/src/extensions/slash-commands/command-items-list.tsx b/packages/editor/src/extensions/slash-commands/command-items-list.tsx index c1de43e5fe..d20d31b6c0 100644 --- a/packages/editor/src/extensions/slash-commands/command-items-list.tsx +++ b/packages/editor/src/extensions/slash-commands/command-items-list.tsx @@ -4,26 +4,25 @@ * See the LICENSE file for details. */ +import { Smile } from "lucide-react"; import { - ALargeSmall, - CaseSensitive, - Code2, - Heading1, - Heading2, - Heading3, - Heading4, - Heading5, - Heading6, - ImageIcon, - List, - ListOrdered, - ListTodo, - MessageSquareText, - MinusSquare, - Smile, - Table, - TextQuote, -} from "lucide-react"; + ChatOutline, + CodeOutline, + H1Outline, + H2Outline, + H3Outline, + H4Outline, + H5Outline, + H6Outline, + ImageOutline, + ListOutline, + MinusSquareOutline, + NumberedListOutline, + QuoteOutline, + TableEditorOutline, + TextOutline, + ToDoOutline, +} from "@makeplane/propel/icons"; // constants import { COLORS_LIST } from "@/constants/common"; // helpers @@ -68,7 +67,7 @@ export const getSlashCommandFilteredSections = title: "Text", description: "Just start typing with plain text.", searchTerms: ["p", "paragraph"], - icon: , + icon: , command: ({ editor, range }) => setText(editor, range), }, { @@ -77,7 +76,7 @@ export const getSlashCommandFilteredSections = title: "Heading 1", description: "Big section heading.", searchTerms: ["title", "big", "large"], - icon: , + icon: , command: ({ editor, range }) => toggleHeading(editor, 1, range), }, { @@ -86,7 +85,7 @@ export const getSlashCommandFilteredSections = title: "Heading 2", description: "Medium section heading.", searchTerms: ["subtitle", "medium"], - icon: , + icon: , command: ({ editor, range }) => toggleHeading(editor, 2, range), }, { @@ -95,7 +94,7 @@ export const getSlashCommandFilteredSections = title: "Heading 3", description: "Small section heading.", searchTerms: ["subtitle", "small"], - icon: , + icon: , command: ({ editor, range }) => toggleHeading(editor, 3, range), }, { @@ -104,7 +103,7 @@ export const getSlashCommandFilteredSections = title: "Heading 4", description: "Small section heading.", searchTerms: ["subtitle", "small"], - icon: , + icon: , command: ({ editor, range }) => toggleHeading(editor, 4, range), }, { @@ -113,7 +112,7 @@ export const getSlashCommandFilteredSections = title: "Heading 5", description: "Small section heading.", searchTerms: ["subtitle", "small"], - icon: , + icon: , command: ({ editor, range }) => toggleHeading(editor, 5, range), }, { @@ -122,7 +121,7 @@ export const getSlashCommandFilteredSections = title: "Heading 6", description: "Small section heading.", searchTerms: ["subtitle", "small"], - icon: , + icon: , command: ({ editor, range }) => toggleHeading(editor, 6, range), }, @@ -132,7 +131,7 @@ export const getSlashCommandFilteredSections = title: "Numbered list", description: "Create a numbered list.", searchTerms: ["ordered"], - icon: , + icon: , command: ({ editor, range }) => toggleOrderedList(editor, range), }, { @@ -141,7 +140,7 @@ export const getSlashCommandFilteredSections = title: "Bulleted list", description: "Create a bulleted list.", searchTerms: ["unordered", "point"], - icon: , + icon: , command: ({ editor, range }) => toggleBulletList(editor, range), }, { @@ -150,16 +149,16 @@ export const getSlashCommandFilteredSections = title: "To-do list", description: "Create a to-do list.", searchTerms: ["todo", "task", "list", "check", "checkbox"], - icon: , + icon: , command: ({ editor, range }) => toggleTaskList(editor, range), }, { commandKey: "table", key: "table", - title: "Table", + title: "TableEditorOutline", description: "Create a table", searchTerms: ["table", "cell", "db", "data", "tabular"], - icon: , + icon: , command: ({ editor, range }) => insertTableCommand(editor, range), }, { @@ -168,7 +167,7 @@ export const getSlashCommandFilteredSections = title: "Quote", description: "Capture a quote.", searchTerms: ["blockquote"], - icon: , + icon: , command: ({ editor, range }) => toggleBlockquote(editor, range), }, { @@ -177,14 +176,14 @@ export const getSlashCommandFilteredSections = title: "Code", description: "Capture a code snippet.", searchTerms: ["codeblock"], - icon: , + icon: , command: ({ editor, range }) => editor.chain().focus().deleteRange(range).toggleCodeBlock().run(), }, { commandKey: "callout", key: "callout", title: "Callout", - icon: , + icon: , description: "Insert callout", searchTerms: ["callout", "comment", "message", "info", "alert"], command: ({ editor, range }: CommandProps) => insertCallout(editor, range), @@ -195,7 +194,7 @@ export const getSlashCommandFilteredSections = title: "Divider", description: "Visually divide blocks.", searchTerms: ["line", "divider", "horizontal", "rule", "separate"], - icon: , + icon: , command: ({ editor, range }) => editor.chain().focus().deleteRange(range).setHorizontalRule().run(), }, { @@ -221,7 +220,7 @@ export const getSlashCommandFilteredSections = title: "Default", description: "Change text color", searchTerms: ["color", "text", "default"], - icon: , + icon: , command: ({ editor, range }) => toggleTextColor(undefined, editor, range), }, ...COLORS_LIST.map( @@ -234,7 +233,7 @@ export const getSlashCommandFilteredSections = searchTerms: ["color", "text", color.label], icon: ( - , + icon: , iconContainerStyle: { borderRadius: "4px", backgroundColor: "var(--background-color-surface-1)", @@ -273,7 +272,7 @@ export const getSlashCommandFilteredSections = title: color.label, description: "Change background color", searchTerms: ["color", "bg", "background", color.label], - icon: , + icon: , iconContainerStyle: { borderRadius: "4px", @@ -293,7 +292,7 @@ export const getSlashCommandFilteredSections = commandKey: "image", key: "image", title: "Image", - icon: , + icon: , description: "Insert an image", searchTerms: ["img", "photo", "picture", "media", "upload"], command: ({ editor, range }: CommandProps) => insertImage({ editor, event: "insert", range }), diff --git a/packages/editor/src/extensions/table/plugins/drag-handles/color-selector.tsx b/packages/editor/src/extensions/table/plugins/drag-handles/color-selector.tsx index ae555bba82..881129bcb5 100644 --- a/packages/editor/src/extensions/table/plugins/drag-handles/color-selector.tsx +++ b/packages/editor/src/extensions/table/plugins/drag-handles/color-selector.tsx @@ -6,9 +6,9 @@ import { Disclosure } from "@headlessui/react"; import type { Editor } from "@tiptap/core"; -import { Ban, Palette } from "lucide-react"; +import { Ban } from "lucide-react"; +import { ChevronRightOutline, PaletteOutline } from "@makeplane/propel/icons"; // plane imports -import { ChevronRightIcon } from "@plane/propel/icons"; import { cn } from "@plane/utils"; // constants import { COLORS_LIST } from "@/constants/common"; @@ -54,10 +54,10 @@ export function TableDragHandleDropdownColorSelector(props: Props) { {({ open }) => ( <> - + Color - - + {isDropdownOpen && ( diff --git a/packages/editor/src/extensions/table/plugins/drag-handles/column/dropdown.tsx b/packages/editor/src/extensions/table/plugins/drag-handles/column/dropdown.tsx index f1c0ee3e7f..2dc43bc840 100644 --- a/packages/editor/src/extensions/table/plugins/drag-handles/column/dropdown.tsx +++ b/packages/editor/src/extensions/table/plugins/drag-handles/column/dropdown.tsx @@ -6,11 +6,17 @@ import type { Editor } from "@tiptap/core"; import { TableMap } from "@tiptap/pm/tables"; -import { ArrowLeft, ArrowRight, ToggleRight } from "lucide-react"; +import { + ArrowNarrowLeftOutline, + ArrowNarrowRightOutline, + CloseOutline, + CopyOutline, + DeleteOutline, + ToggleFilled, +} from "@makeplane/propel/icons"; import type { LucideIcon } from "lucide-react"; // extensions import type { ISvgIcons } from "@plane/propel/icons"; -import { CopyIcon, TrashIcon, CloseIcon } from "@plane/propel/icons"; import { findTable, getSelectedColumns } from "@/extensions/table/table/utilities/helpers"; // local imports import { duplicateColumns } from "../actions"; @@ -25,19 +31,19 @@ const DROPDOWN_ITEMS: { { key: "insert-left", label: "Insert left", - icon: ArrowLeft, + icon: ArrowNarrowLeftOutline, action: (editor) => editor.chain().focus().addColumnBefore().run(), }, { key: "insert-right", label: "Insert right", - icon: ArrowRight, + icon: ArrowNarrowRightOutline, action: (editor) => editor.chain().focus().addColumnAfter().run(), }, { key: "duplicate", label: "Duplicate", - icon: CopyIcon, + icon: CopyOutline, action: (editor) => { const table = findTable(editor.state.selection); if (!table) return; @@ -52,13 +58,13 @@ const DROPDOWN_ITEMS: { { key: "clear-contents", label: "Clear contents", - icon: CloseIcon, + icon: CloseOutline, action: (editor) => editor.chain().focus().clearSelectedCells().run(), }, { key: "delete", label: "Delete", - icon: TrashIcon, + icon: DeleteOutline, action: (editor) => editor.chain().focus().deleteColumn().run(), }, ]; @@ -84,7 +90,7 @@ export function ColumnOptionsDropdown(props: Props) { }} >
Header column
- +
diff --git a/packages/editor/src/extensions/table/plugins/drag-handles/row/drag-handle.tsx b/packages/editor/src/extensions/table/plugins/drag-handles/row/drag-handle.tsx index ef038f9951..d970b016f5 100644 --- a/packages/editor/src/extensions/table/plugins/drag-handles/row/drag-handle.tsx +++ b/packages/editor/src/extensions/table/plugins/drag-handles/row/drag-handle.tsx @@ -17,7 +17,7 @@ import { useRole, } from "@floating-ui/react"; import type { Editor } from "@tiptap/core"; -import { Ellipsis } from "lucide-react"; +import { MoreHorizontalOutline } from "@makeplane/propel/icons"; import { useCallback, useEffect, useRef, useState } from "react"; // plane imports import { cn } from "@plane/utils"; @@ -234,7 +234,7 @@ export function RowDragHandle(props: RowDragHandleProps) { "hover:bg-layer-1-hover": !isDropdownOpen, })} > - + {isDropdownOpen && ( diff --git a/packages/editor/src/extensions/table/plugins/drag-handles/row/dropdown.tsx b/packages/editor/src/extensions/table/plugins/drag-handles/row/dropdown.tsx index 6359adffac..1ad0b76203 100644 --- a/packages/editor/src/extensions/table/plugins/drag-handles/row/dropdown.tsx +++ b/packages/editor/src/extensions/table/plugins/drag-handles/row/dropdown.tsx @@ -6,11 +6,17 @@ import type { Editor } from "@tiptap/core"; import { TableMap } from "@tiptap/pm/tables"; -import { ArrowDown, ArrowUp, ToggleRight } from "lucide-react"; +import { + ArrowDownOutline, + CloseOutline, + CopyOutline, + DeleteOutline, + ToggleFilled, + TopArrowOutline, +} from "@makeplane/propel/icons"; import type { LucideIcon } from "lucide-react"; // extensions import type { ISvgIcons } from "@plane/propel/icons"; -import { CopyIcon, TrashIcon, CloseIcon } from "@plane/propel/icons"; import { findTable, getSelectedRows } from "@/extensions/table/table/utilities/helpers"; // local imports import { duplicateRows } from "../actions"; @@ -25,19 +31,19 @@ const DROPDOWN_ITEMS: { { key: "insert-above", label: "Insert above", - icon: ArrowUp, + icon: TopArrowOutline, action: (editor) => editor.chain().focus().addRowBefore().run(), }, { key: "insert-below", label: "Insert below", - icon: ArrowDown, + icon: ArrowDownOutline, action: (editor) => editor.chain().focus().addRowAfter().run(), }, { key: "duplicate", label: "Duplicate", - icon: CopyIcon, + icon: CopyOutline, action: (editor) => { const table = findTable(editor.state.selection); if (!table) return; @@ -52,13 +58,13 @@ const DROPDOWN_ITEMS: { { key: "clear-contents", label: "Clear contents", - icon: CloseIcon, + icon: CloseOutline, action: (editor) => editor.chain().focus().clearSelectedCells().run(), }, { key: "delete", label: "Delete", - icon: TrashIcon, + icon: DeleteOutline, action: (editor) => editor.chain().focus().deleteRow().run(), }, ]; @@ -84,7 +90,7 @@ export function RowOptionsDropdown(props: Props) { }} >
Header row
- +
diff --git a/packages/propel/package.json b/packages/propel/package.json index f98add2773..6226ec3ea9 100644 --- a/packages/propel/package.json +++ b/packages/propel/package.json @@ -64,6 +64,7 @@ }, "dependencies": { "@base-ui-components/react": "catalog:", + "@makeplane/propel": "catalog:", "@plane/constants": "workspace:*", "@plane/hooks": "workspace:*", "@plane/types": "workspace:*", diff --git a/packages/propel/src/accordion/accordion.tsx b/packages/propel/src/accordion/accordion.tsx index 1eebc748d5..ac5071cf6d 100644 --- a/packages/propel/src/accordion/accordion.tsx +++ b/packages/propel/src/accordion/accordion.tsx @@ -7,7 +7,7 @@ import * as React from "react"; import { Accordion as BaseAccordion } from "@base-ui-components/react"; -import { PlusIcon } from "../icons"; +import { AddOutline } from "@makeplane/propel/icons"; export interface AccordionRootProps { defaultValue?: string[]; @@ -55,7 +55,7 @@ function AccordionItem({ value, disabled, className = "", children }: AccordionI function AccordionTrigger({ className = "", - icon =