diff --git a/blocksuite/affine/blocks/callout/src/callout-block.ts b/blocksuite/affine/blocks/callout/src/callout-block.ts index f79ee03bc5..d63ba291ec 100644 --- a/blocksuite/affine/blocks/callout/src/callout-block.ts +++ b/blocksuite/affine/blocks/callout/src/callout-block.ts @@ -1,14 +1,13 @@ import { CaptionedBlockComponent } from '@blocksuite/affine-components/caption'; import { createLitPortal } from '@blocksuite/affine-components/portal'; import { DefaultInlineManagerExtension } from '@blocksuite/affine-inline-preset'; -import { type CalloutBlockModel } from '@blocksuite/affine-model'; +import { type CalloutBlockModel, DefaultTheme } from '@blocksuite/affine-model'; import { focusTextModel } from '@blocksuite/affine-rich-text'; import { EDGELESS_TOP_CONTENTEDITABLE_SELECTOR } from '@blocksuite/affine-shared/consts'; import { DocModeProvider, ThemeProvider, } from '@blocksuite/affine-shared/services'; -import { unsafeCSSVarV2 } from '@blocksuite/affine-shared/theme'; import type { BlockComponent } from '@blocksuite/std'; import { flip, offset } from '@floating-ui/dom'; import { css, html } from 'lit'; @@ -26,7 +25,6 @@ export class CalloutBlockComponent extends CaptionedBlockComponent
+ ${colors.map( + color => html` + + ` + )} +
+ `; + }, +} satisfies ToolbarAction; + +const builtinToolbarConfig = { + actions: [ + { + id: 'style', + actions: [backgroundColorAction], + } satisfies ToolbarActionGroup, + ], +} as const satisfies ToolbarModuleConfig; + +export const createBuiltinToolbarConfigExtension = ( + flavour: string +): ExtensionType[] => { + return [ + ToolbarModuleExtension({ + id: BlockFlavourIdentifier(flavour), + config: builtinToolbarConfig, + }), + ]; +}; diff --git a/blocksuite/affine/blocks/callout/src/view.ts b/blocksuite/affine/blocks/callout/src/view.ts index 981b2235bb..07e47553cf 100644 --- a/blocksuite/affine/blocks/callout/src/view.ts +++ b/blocksuite/affine/blocks/callout/src/view.ts @@ -8,6 +8,7 @@ import { literal } from 'lit/static-html.js'; import { CalloutKeymapExtension } from './callout-keymap'; import { calloutSlashMenuConfig } from './configs/slash-menu'; +import { createBuiltinToolbarConfigExtension } from './configs/toolbar'; import { effects } from './effects'; export class CalloutViewExtension extends ViewExtensionProvider { @@ -25,6 +26,7 @@ export class CalloutViewExtension extends ViewExtensionProvider { BlockViewExtension('affine:callout', literal`affine-callout`), CalloutKeymapExtension, SlashMenuConfigExtension('affine:callout', calloutSlashMenuConfig), + ...createBuiltinToolbarConfigExtension('affine:callout'), ]); } } diff --git a/blocksuite/affine/model/src/blocks/callout/callout-model.ts b/blocksuite/affine/model/src/blocks/callout/callout-model.ts index aa7591e4f0..661655b95a 100644 --- a/blocksuite/affine/model/src/blocks/callout/callout-model.ts +++ b/blocksuite/affine/model/src/blocks/callout/callout-model.ts @@ -5,11 +5,14 @@ import { type Text, } from '@blocksuite/store'; +import type { Color } from '../../themes/index.js'; +import { DefaultTheme } from '../../themes/index.js'; import type { BlockMeta } from '../../utils/types'; export type CalloutProps = { emoji: string; text: Text; + background: Color; } & BlockMeta; export const CalloutBlockSchema = defineBlockSchema({ @@ -17,6 +20,7 @@ export const CalloutBlockSchema = defineBlockSchema({ props: (internal): CalloutProps => ({ emoji: '😀', text: internal.Text(), + background: DefaultTheme.NoteBackgroundColorMap.White, 'meta:createdAt': undefined, 'meta:updatedAt': undefined, 'meta:createdBy': undefined,