From 9f73d08c237f3fb605ac577c3ef6bc8e5d628ee9 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Wed, 2 Sep 2026 23:24:15 +0530 Subject: [PATCH] refactor: migrate package icons to @makeplane/propel (#9732) * 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. * fix: address icon migration review on packages Restore the 49 user-facing strings the identifier rename overwrote. The migration replaced every occurrence of a source symbol name, including ones inside string literals and JSX text, so editor toolbar labels, slash-command titles, image download tooltips and aria-labels, and the Storybook example labels all displayed icon component names. Drop strokeWidth from Propel icons; the generated glyphs paint with fill="currentColor" so the prop never changed weight. Pick StarFilled for the selected FavoriteStar. Lucide's Star with a fill utility was a solid star, and StarOutline is a ring path, so filling it does not reproduce that shape. Also correct six toolbar story tooltips that already read "Bullet ListLayoutIcon" on preview, from an earlier migration with the same over-broad rename. * fix: restore context-menu story labels after icon rename The mechanical icon rename also replaced JSX text children that matched old lucide identifiers (Edit, Download, Share, Archive). Restore the 13 user-facing labels in the context-menu stories. * chore: align lockfile @makeplane/propel importers to 0.3.0 The preview merge left editor, propel, ui, and utils resolved to 0.2.0 while catalog is 0.3.0. Re-resolve those importers so the lockfile matches. --- 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 | 90 ++++++++--------- .../src/extensions/callout/color-selector.tsx | 4 +- .../extensions/code/code-block-node-view.tsx | 7 +- .../components/toolbar/alignment.tsx | 4 +- .../components/toolbar/download.tsx | 4 +- .../components/toolbar/full-screen/modal.tsx | 13 ++- .../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 | 77 +++++++-------- .../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 | 24 ++--- packages/propel/src/command/command.tsx | 4 +- .../src/context-menu/context-menu.stories.tsx | 77 ++++++++------- 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 | 23 +++-- 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 | 8 +- 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 | 8 +- .../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, 517 insertions(+), 478 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..a202ab5624 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: { @@ -99,7 +99,7 @@ const BASIC_MARK_ITEMS: ToolbarMenuItem<"bold" | "italic" | "underline" | "strik itemKey: "bold", renderKey: "bold", name: "Bold", - icon: Bold, + icon: BoldOutline, shortcut: ["Cmd", "B"], editors: ["lite", "document"], }, @@ -107,7 +107,7 @@ const BASIC_MARK_ITEMS: ToolbarMenuItem<"bold" | "italic" | "underline" | "strik itemKey: "italic", renderKey: "italic", name: "Italic", - icon: Italic, + icon: ItalicOutline, shortcut: ["Cmd", "I"], editors: ["lite", "document"], }, @@ -115,7 +115,7 @@ const BASIC_MARK_ITEMS: ToolbarMenuItem<"bold" | "italic" | "underline" | "strik itemKey: "underline", renderKey: "underline", name: "Underline", - icon: Underline, + icon: UnderlineOutline, shortcut: ["Cmd", "U"], editors: ["lite", "document"], }, @@ -123,7 +123,7 @@ const BASIC_MARK_ITEMS: ToolbarMenuItem<"bold" | "italic" | "underline" | "strik itemKey: "strikethrough", renderKey: "strikethrough", name: "Strikethrough", - icon: Strikethrough, + 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: "Table", icon: TableEditorOutline, editors: ["document"] }, + { itemKey: "image", renderKey: "image", name: "Image", 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..4a1acf3949 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..9230989ee3 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"; @@ -23,7 +23,7 @@ export function ImageDownloadAction(props: Props) { className="grid h-full flex-shrink-0 place-items-center text-white/60 transition-colors hover:text-white" aria-label="Download image" > - + ); 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..b1da541dea 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 && ( @@ -278,7 +277,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="Download 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..699813202d 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,7 +149,7 @@ 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), }, { @@ -159,7 +158,7 @@ export const getSlashCommandFilteredSections = title: "Table", 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 =