diff --git a/packages/frontend/core/src/blocksuite/block-suite-editor/starter-bar.tsx b/packages/frontend/core/src/blocksuite/block-suite-editor/starter-bar.tsx index 6ca5d8f524..95e5017561 100644 --- a/packages/frontend/core/src/blocksuite/block-suite-editor/starter-bar.tsx +++ b/packages/frontend/core/src/blocksuite/block-suite-editor/starter-bar.tsx @@ -1,3 +1,4 @@ +import { MenuSeparator } from '@affine/component'; import { handleInlineAskAIAction, pageAIGroups, @@ -6,7 +7,10 @@ import { DocsService } from '@affine/core/modules/doc'; import { EditorService } from '@affine/core/modules/editor'; import { FeatureFlagService } from '@affine/core/modules/feature-flag'; import { TemplateDocService } from '@affine/core/modules/template-doc'; -import { TemplateListMenu } from '@affine/core/modules/template-doc/view/template-list-menu'; +import { + TemplateListMenu, + TemplateListMenuAdd, +} from '@affine/core/modules/template-doc/view/template-list-menu'; import { useI18n } from '@affine/i18n'; import track from '@affine/track'; import { PageRootBlockComponent } from '@blocksuite/affine/blocks'; @@ -134,6 +138,12 @@ const StarterBarNotEmpty = ({ doc }: { doc: Store }) => { open: templateMenuOpen, onOpenChange: onTemplateMenuOpenChange, }} + suffixItems={ + <> + + + + } > { @@ -44,7 +43,7 @@ export const TemplateDocEntrance = () => { suffixItems={ <> - + } /> @@ -55,28 +54,3 @@ export const TemplateDocEntrance = () => { ); }; - -const CreateNewTemplateMenuItem = () => { - const t = useI18n(); - const docsService = useService(DocsService); - const workbench = useService(WorkbenchService).workbench; - - const createNewTemplate = useCallback( - (e: React.MouseEvent) => { - const record = docsService.createDoc({ isTemplate: true }); - workbench.openDoc(record.id, { at: inferOpenMode(e) }); - }, - [docsService, workbench] - ); - - return ( - } - onClick={createNewTemplate} - onAuxClick={createNewTemplate} - > - {t['com.affine.template-list.create-new']()} - - ); -}; diff --git a/packages/frontend/core/src/modules/template-doc/view/template-list-menu.tsx b/packages/frontend/core/src/modules/template-doc/view/template-list-menu.tsx index b85ed0e034..86d04fa900 100644 --- a/packages/frontend/core/src/modules/template-doc/view/template-list-menu.tsx +++ b/packages/frontend/core/src/modules/template-doc/view/template-list-menu.tsx @@ -6,14 +6,19 @@ import { Scrollable, } from '@affine/component'; import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; +import { inferOpenMode } from '@affine/core/utils'; import { useI18n } from '@affine/i18n'; -import { DualLinkIcon, InformationIcon } from '@blocksuite/icons/rc'; +import { + DualLinkIcon, + InformationIcon, + TemplateIcon, +} from '@blocksuite/icons/rc'; import { useLiveData, useService } from '@toeverything/infra'; -import { useState } from 'react'; +import { useCallback, useState } from 'react'; -import { type DocRecord } from '../../doc'; +import { type DocRecord, DocsService } from '../../doc'; import { DocDisplayMetaService } from '../../doc-display-meta'; -import { WorkbenchLink } from '../../workbench'; +import { WorkbenchLink, WorkbenchService } from '../../workbench'; import { TemplateDocService } from '../services/template-doc'; import * as styles from './styles.css'; interface CommonProps { @@ -143,3 +148,28 @@ export const TemplateListMenu = ({ ); }; + +export const TemplateListMenuAdd = () => { + const t = useI18n(); + const docsService = useService(DocsService); + const workbench = useService(WorkbenchService).workbench; + + const createNewTemplate = useCallback( + (e: React.MouseEvent) => { + const record = docsService.createDoc({ isTemplate: true }); + workbench.openDoc(record.id, { at: inferOpenMode(e) }); + }, + [docsService, workbench] + ); + + return ( + } + onClick={createNewTemplate} + onAuxClick={createNewTemplate} + > + {t['com.affine.template-list.create-new']()} + + ); +};