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']()}
+
+ );
+};