diff --git a/docs/pages/docs/editor-basics/default-schema.mdx b/docs/pages/docs/editor-basics/default-schema.mdx index cd1c09966e..5b61d73050 100644 --- a/docs/pages/docs/editor-basics/default-schema.mdx +++ b/docs/pages/docs/editor-basics/default-schema.mdx @@ -56,6 +56,20 @@ type HeadingBlock = { `level:` The heading level, representing a title (`level: 1`), heading (`level: 2`), and subheading (`level: 3`). +#### Quote + +**Type & Props** + +```typescript +type QuoteBlock = { + id: string; + type: "quote"; + props: DefaultProps; + content: InlineContent[]; + children: Block[]; +}; +``` + #### Bullet List Item **Type & Props** diff --git a/examples/01-basic/04-default-blocks/App.tsx b/examples/01-basic/04-default-blocks/App.tsx index 935e96d93e..992a52d217 100644 --- a/examples/01-basic/04-default-blocks/App.tsx +++ b/examples/01-basic/04-default-blocks/App.tsx @@ -32,6 +32,10 @@ export default function App() { type: "heading", content: "Heading", }, + { + type: "quote", + content: "Quote", + }, { type: "bulletListItem", content: "Bullet List Item", diff --git a/packages/core/src/blocks/QuoteBlockContent/QuoteBlockContent.ts b/packages/core/src/blocks/QuoteBlockContent/QuoteBlockContent.ts new file mode 100644 index 0000000000..5dfd3fc000 --- /dev/null +++ b/packages/core/src/blocks/QuoteBlockContent/QuoteBlockContent.ts @@ -0,0 +1,98 @@ +import { + createBlockSpecFromStronglyTypedTiptapNode, + createStronglyTypedTiptapNode, +} from "../../schema/index.js"; +import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers.js"; +import { defaultProps } from "../defaultProps.js"; +import { getBlockInfoFromSelection } from "../../api/getBlockInfoFromPos.js"; +import { updateBlockCommand } from "../../api/blockManipulation/commands/updateBlock/updateBlock.js"; +import { InputRule } from "@tiptap/core"; + +export const quotePropSchema = { + ...defaultProps, +}; + +export const QuoteBlockContent = createStronglyTypedTiptapNode({ + name: "quote", + content: "inline*", + group: "blockContent", + + addInputRules() { + return [ + // Creates a block quote when starting with ">". + new InputRule({ + find: new RegExp(`^>\\s$`), + handler: ({ state, chain, range }) => { + const blockInfo = getBlockInfoFromSelection(state); + if ( + !blockInfo.isBlockContainer || + blockInfo.blockContent.node.type.spec.content !== "inline*" + ) { + return; + } + + chain() + .command( + updateBlockCommand( + this.options.editor, + blockInfo.bnBlock.beforePos, + { + type: "quote", + props: {}, + } + ) + ) + // Removes the ">" character used to set the list. + .deleteRange({ from: range.from, to: range.to }); + }, + }), + ]; + }, + + addKeyboardShortcuts() { + return { + "Mod-Alt-q": () => { + const blockInfo = getBlockInfoFromSelection(this.editor.state); + if ( + !blockInfo.isBlockContainer || + blockInfo.blockContent.node.type.spec.content !== "inline*" + ) { + return true; + } + + return this.editor.commands.command( + updateBlockCommand(this.options.editor, blockInfo.bnBlock.beforePos, { + type: "quote", + }) + ); + }, + }; + }, + + parseHTML() { + return [ + { tag: "div[data-content-type=" + this.name + "]" }, + { + tag: "blockquote", + node: "quote", + }, + ]; + }, + + renderHTML({ HTMLAttributes }) { + return createDefaultBlockDOMOutputSpec( + this.name, + "blockquote", + { + ...(this.options.domAttributes?.blockContent || {}), + ...HTMLAttributes, + }, + this.options.domAttributes?.inlineContent || {} + ); + }, +}); + +export const Quote = createBlockSpecFromStronglyTypedTiptapNode( + QuoteBlockContent, + quotePropSchema +); diff --git a/packages/core/src/blocks/defaultBlocks.ts b/packages/core/src/blocks/defaultBlocks.ts index 81dc0e49ab..79771e4dcf 100644 --- a/packages/core/src/blocks/defaultBlocks.ts +++ b/packages/core/src/blocks/defaultBlocks.ts @@ -29,6 +29,7 @@ import { BulletListItem } from "./ListItemBlockContent/BulletListItemBlockConten import { CheckListItem } from "./ListItemBlockContent/CheckListItemBlockContent/CheckListItemBlockContent.js"; import { NumberedListItem } from "./ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.js"; import { Paragraph } from "./ParagraphBlockContent/ParagraphBlockContent.js"; +import { Quote } from "./QuoteBlockContent/QuoteBlockContent.js"; import { Table } from "./TableBlockContent/TableBlockContent.js"; import { VideoBlock } from "./VideoBlockContent/VideoBlockContent.js"; @@ -37,6 +38,7 @@ export { customizeCodeBlock } from "./CodeBlockContent/CodeBlockContent.js"; export const defaultBlockSpecs = { paragraph: Paragraph, heading: Heading, + quote: Quote, codeBlock: CodeBlock, bulletListItem: BulletListItem, numberedListItem: NumberedListItem, diff --git a/packages/core/src/editor/Block.css b/packages/core/src/editor/Block.css index f8eb8c1d67..f3b2a14117 100644 --- a/packages/core/src/editor/Block.css +++ b/packages/core/src/editor/Block.css @@ -146,6 +146,14 @@ NESTED BLOCKS font-weight: bold; } +/* QUOTES */ +[data-content-type="quote"] blockquote { + border-left: 2px solid rgb(125, 121, 122); + color: rgb(125, 121, 122); + margin: 0; + padding-left: 1em; +} + /* LISTS */ .bn-block-content::before { diff --git a/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts b/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts index cecaaeabd3..2c070b2366 100644 --- a/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts +++ b/packages/core/src/extensions/SuggestionMenu/getDefaultSlashMenuItems.ts @@ -125,6 +125,18 @@ export function getDefaultSlashMenuItems< ); } + if (checkDefaultBlockTypeInSchema("quote", editor)) { + items.push({ + onItemClick: () => { + insertOrUpdateBlock(editor, { + type: "quote", + }); + }, + key: "quote", + ...editor.dictionary.slash_menu.quote, + }); + } + if (checkDefaultBlockTypeInSchema("numberedListItem", editor)) { items.push({ onItemClick: () => { diff --git a/packages/core/src/i18n/locales/ar.ts b/packages/core/src/i18n/locales/ar.ts index cdb930d347..eff1bbed30 100644 --- a/packages/core/src/i18n/locales/ar.ts +++ b/packages/core/src/i18n/locales/ar.ts @@ -20,6 +20,12 @@ export const ar: Dictionary = { aliases: ["ع3", "عنوان3", "عنوان فرعي"], group: "العناوين", }, + quote: { + title: "اقتباس", + subtext: "اقتباس أو مقتطف", + aliases: ["quotation", "blockquote", "bq"], + group: "الكتل الأساسية", + }, numbered_list: { title: "قائمة مرقمة", subtext: "تستخدم لعرض قائمة مرقمة", diff --git a/packages/core/src/i18n/locales/de.ts b/packages/core/src/i18n/locales/de.ts index fb860b7f1c..8a416349c4 100644 --- a/packages/core/src/i18n/locales/de.ts +++ b/packages/core/src/i18n/locales/de.ts @@ -20,6 +20,12 @@ export const de: Dictionary = { aliases: ["h3", "überschrift3", "unterüberschrift"], group: "Überschriften", }, + quote: { + title: "Zitat", + subtext: "Zitat oder Auszug", + aliases: ["quotation", "blockquote", "bq"], + group: "Grundlegende blöcke", + }, numbered_list: { title: "Nummerierte Liste", subtext: "Liste mit nummerierten Elementen", diff --git a/packages/core/src/i18n/locales/en.ts b/packages/core/src/i18n/locales/en.ts index 1f804d670a..c705fae419 100644 --- a/packages/core/src/i18n/locales/en.ts +++ b/packages/core/src/i18n/locales/en.ts @@ -18,6 +18,12 @@ export const en = { aliases: ["h3", "heading3", "subheading"], group: "Headings", }, + quote: { + title: "Quote", + subtext: "Quote or excerpt", + aliases: ["quotation", "blockquote", "bq"], + group: "Basic blocks", + }, numbered_list: { title: "Numbered List", subtext: "List with ordered items", diff --git a/packages/core/src/i18n/locales/es.ts b/packages/core/src/i18n/locales/es.ts index 77e6fd7d7d..4f23dc027c 100644 --- a/packages/core/src/i18n/locales/es.ts +++ b/packages/core/src/i18n/locales/es.ts @@ -20,6 +20,12 @@ export const es: Dictionary = { aliases: ["h3", "encabezado3", "subencabezado"], group: "Encabezados", }, + quote: { + title: "Cita", + subtext: "Cita o extracto", + aliases: ["quotation", "blockquote", "bq"], + group: "Bloques básicos", + }, numbered_list: { title: "Lista Numerada", subtext: "Lista con elementos ordenados", diff --git a/packages/core/src/i18n/locales/fr.ts b/packages/core/src/i18n/locales/fr.ts index 3b41156b87..ba24ee8599 100644 --- a/packages/core/src/i18n/locales/fr.ts +++ b/packages/core/src/i18n/locales/fr.ts @@ -21,6 +21,12 @@ export const fr: Dictionary = { aliases: ["h3", "titre3", "sous-titre"], group: "Titres", }, + quote: { + title: "Citation", + subtext: "Citation ou extrait", + aliases: ["quotation", "blockquote", "bq"], + group: "Blocs de base", + }, numbered_list: { title: "Liste Numérotée", subtext: "Utilisé pour afficher une liste numérotée", diff --git a/packages/core/src/i18n/locales/hr.ts b/packages/core/src/i18n/locales/hr.ts index efe3a297d4..d099696d8f 100644 --- a/packages/core/src/i18n/locales/hr.ts +++ b/packages/core/src/i18n/locales/hr.ts @@ -20,6 +20,12 @@ export const hr: Dictionary = { aliases: ["h3", "naslov3", "podnaslov"], group: "Naslovi", }, + quote: { + title: "Citat", + subtext: "Citat ili izvadak", + aliases: ["quotation", "blockquote", "bq"], + group: "Osnovni blokovi", + }, numbered_list: { title: "Numerirani popis", subtext: "Popis s numeriranim stavkama", diff --git a/packages/core/src/i18n/locales/is.ts b/packages/core/src/i18n/locales/is.ts index 9e3b302bfc..f307171012 100644 --- a/packages/core/src/i18n/locales/is.ts +++ b/packages/core/src/i18n/locales/is.ts @@ -20,6 +20,12 @@ export const is: Dictionary = { aliases: ["h3", "fyrirsogn3", "undirfyrirsogn"], group: "Fyrirsagnir", }, + quote: { + title: "Tilvitnun", + subtext: "Tilvitnun eða útdráttur", + aliases: ["quotation", "blockquote", "bq"], + group: "Grunnblokkar", + }, numbered_list: { title: "Númeruð listi", subtext: "Notað til að birta númeraðan lista", diff --git a/packages/core/src/i18n/locales/it.ts b/packages/core/src/i18n/locales/it.ts index 1ce62b2e96..5554317ddf 100644 --- a/packages/core/src/i18n/locales/it.ts +++ b/packages/core/src/i18n/locales/it.ts @@ -20,6 +20,12 @@ export const it: Dictionary = { aliases: ["h3", "intestazione3", "sottotitolo"], group: "Intestazioni", }, + quote: { + title: "Citazione", + subtext: "Citazione o estratto", + aliases: ["quotation", "blockquote", "bq"], + group: "Blocchi Base", + }, numbered_list: { title: "Elenco Numerato", subtext: "Elenco con elementi ordinati", diff --git a/packages/core/src/i18n/locales/ja.ts b/packages/core/src/i18n/locales/ja.ts index 18177cf76b..0d359a07c6 100644 --- a/packages/core/src/i18n/locales/ja.ts +++ b/packages/core/src/i18n/locales/ja.ts @@ -20,6 +20,12 @@ export const ja: Dictionary = { aliases: ["h3", "見出し3", "subheading", "小見出し"], group: "見出し", }, + quote: { + title: "引用", + subtext: "引用または抜粋", + aliases: ["quotation", "blockquote", "bq"], + group: "基本ブロック", + }, numbered_list: { title: "番号付リスト", subtext: "番号付リストを表示するために使用", diff --git a/packages/core/src/i18n/locales/ko.ts b/packages/core/src/i18n/locales/ko.ts index 94e13828fb..f647d9d018 100644 --- a/packages/core/src/i18n/locales/ko.ts +++ b/packages/core/src/i18n/locales/ko.ts @@ -20,6 +20,12 @@ export const ko: Dictionary = { aliases: ["h3", "제목3", "subheading"], group: "제목", }, + quote: { + title: "인용", + subtext: "인용문 또는 발췌", + aliases: ["quotation", "blockquote", "bq"], + group: "기본 블록", + }, numbered_list: { title: "번호 매기기 목록", subtext: "번호가 매겨진 목록을 추가합니다.", diff --git a/packages/core/src/i18n/locales/nl.ts b/packages/core/src/i18n/locales/nl.ts index 14642667c3..9e6f8d34bd 100644 --- a/packages/core/src/i18n/locales/nl.ts +++ b/packages/core/src/i18n/locales/nl.ts @@ -20,6 +20,12 @@ export const nl: Dictionary = { aliases: ["h3", "kop3", "subkop"], group: "Koppen", }, + quote: { + title: "Citaat", + subtext: "Citaat of uittreksel", + aliases: ["quotation", "blockquote", "bq"], + group: "Basisblokken", + }, numbered_list: { title: "Genummerde Lijst", subtext: "Gebruikt om een genummerde lijst weer te geven", diff --git a/packages/core/src/i18n/locales/no.ts b/packages/core/src/i18n/locales/no.ts index 43023b2d92..5eddd8705d 100644 --- a/packages/core/src/i18n/locales/no.ts +++ b/packages/core/src/i18n/locales/no.ts @@ -20,6 +20,12 @@ export const no: Dictionary = { aliases: ["h3", "overskrift3", "underoverskrift"], group: "Overskrifter", }, + quote: { + title: "Sitat", + subtext: "Sitat eller utdrag", + aliases: ["quotation", "blockquote", "bq"], + group: "Grunnleggende blokker", + }, numbered_list: { title: "Nummerert liste", subtext: "Liste med ordnede elementer", diff --git a/packages/core/src/i18n/locales/pl.ts b/packages/core/src/i18n/locales/pl.ts index 8af5576052..490de484e8 100644 --- a/packages/core/src/i18n/locales/pl.ts +++ b/packages/core/src/i18n/locales/pl.ts @@ -20,6 +20,12 @@ export const pl: Dictionary = { aliases: ["h3", "naglowek3", "podnaglowek"], group: "Nagłówki", }, + quote: { + title: "Cytat", + subtext: "Cytat lub fragment", + aliases: ["quotation", "blockquote", "bq"], + group: "Podstawowe bloki", + }, numbered_list: { title: "Lista numerowana", subtext: "Używana do wyświetlania listy numerowanej", diff --git a/packages/core/src/i18n/locales/pt.ts b/packages/core/src/i18n/locales/pt.ts index 8e5d871b00..1272700eb2 100644 --- a/packages/core/src/i18n/locales/pt.ts +++ b/packages/core/src/i18n/locales/pt.ts @@ -20,6 +20,12 @@ export const pt: Dictionary = { aliases: ["h3", "titulo3", "subtitulo"], group: "Títulos", }, + quote: { + title: "Citação", + subtext: "Citação ou trecho", + aliases: ["quotation", "blockquote", "bq"], + group: "Blocos básicos", + }, numbered_list: { title: "Lista Numerada", subtext: "Usado para exibir uma lista numerada", diff --git a/packages/core/src/i18n/locales/ru.ts b/packages/core/src/i18n/locales/ru.ts index b6fc53c3b3..045980cf50 100644 --- a/packages/core/src/i18n/locales/ru.ts +++ b/packages/core/src/i18n/locales/ru.ts @@ -20,6 +20,12 @@ export const ru: Dictionary = { aliases: ["h3", "heading3", "subheading", "заголовок3", "подзаголовок"], group: "Заголовки", }, + quote: { + title: "Цитата", + subtext: "Цитата или отрывок", + aliases: ["quotation", "blockquote", "bq"], + group: "Базовые блоки", + }, numbered_list: { title: "Нумерованный список", subtext: "Используется для отображения нумерованного списка", diff --git a/packages/core/src/i18n/locales/uk.ts b/packages/core/src/i18n/locales/uk.ts index bd2d1c6d7d..5592d752c1 100644 --- a/packages/core/src/i18n/locales/uk.ts +++ b/packages/core/src/i18n/locales/uk.ts @@ -20,6 +20,12 @@ export const uk: Dictionary = { aliases: ["h3", "heading3", "subheading", "заголовок3"], group: "Заголовки", }, + quote: { + title: "Цитата", + subtext: "Цитата або уривок", + aliases: ["quotation", "blockquote", "bq"], + group: "Базові блоки", + }, numbered_list: { title: "Нумерований список", subtext: "Список із впорядкованими елементами", diff --git a/packages/core/src/i18n/locales/vi.ts b/packages/core/src/i18n/locales/vi.ts index 0847e543f2..afe16fd2cd 100644 --- a/packages/core/src/i18n/locales/vi.ts +++ b/packages/core/src/i18n/locales/vi.ts @@ -20,6 +20,12 @@ export const vi: Dictionary = { aliases: ["h3", "tieude3", "tieudephu"], group: "Tiêu đề", }, + quote: { + title: "Trích dẫn", + subtext: "Trích dẫn hoặc đoạn trích", + aliases: ["quotation", "blockquote", "bq"], + group: "Khối cơ bản", + }, numbered_list: { title: "Danh sách đánh số", subtext: "Sử dụng để hiển thị danh sách có đánh số", diff --git a/packages/core/src/i18n/locales/zh.ts b/packages/core/src/i18n/locales/zh.ts index 5167e448d0..fff54c314c 100644 --- a/packages/core/src/i18n/locales/zh.ts +++ b/packages/core/src/i18n/locales/zh.ts @@ -20,6 +20,12 @@ export const zh: Dictionary = { aliases: ["h3", "heading3", "subheading", "标题", "三级标题"], group: "标题", }, + quote: { + title: "引用", + subtext: "引用或摘录", + aliases: ["quotation", "blockquote", "bq"], + group: "基本块", + }, numbered_list: { title: "有序列表", subtext: "用于显示有序列表", diff --git a/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx b/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx index 9572279633..12d6776b34 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultSelects/BlockTypeSelect.tsx @@ -14,6 +14,7 @@ import { RiListCheck3, RiListOrdered, RiListUnordered, + RiQuoteText, RiText, } from "react-icons/ri"; @@ -75,6 +76,12 @@ export const blockTypeSelectItems = ( "level" in block.props && block.props.level === 3, }, + { + name: dict.slash_menu.quote.title, + type: "quote", + icon: RiQuoteText, + isSelected: (block) => block.type === "quote", + }, { name: dict.slash_menu.bullet_list.title, type: "bulletListItem", diff --git a/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx b/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx index 6e7bc96beb..9e970a2dac 100644 --- a/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx +++ b/packages/react/src/components/SuggestionMenu/getDefaultReactSlashMenuItems.tsx @@ -20,6 +20,7 @@ import { RiText, RiVolumeUpFill, RiCodeBlock, + RiQuoteText, } from "react-icons/ri"; import { DefaultReactSuggestionItem } from "./types.js"; @@ -27,6 +28,7 @@ const icons = { heading: RiH1, heading_2: RiH2, heading_3: RiH3, + quote: RiQuoteText, numbered_list: RiListOrdered, bullet_list: RiListUnordered, check_list: RiListCheck3, diff --git a/packages/xl-docx-exporter/src/docx/defaultSchema/blocks.ts b/packages/xl-docx-exporter/src/docx/defaultSchema/blocks.ts index a685bb9e65..654c58f5e8 100644 --- a/packages/xl-docx-exporter/src/docx/defaultSchema/blocks.ts +++ b/packages/xl-docx-exporter/src/docx/defaultSchema/blocks.ts @@ -116,6 +116,23 @@ export const docxBlockMappingForDefaultSchema: BlockMapping< heading: `Heading${block.props.level}`, }); }, + quote: (block, exporter) => { + return new Paragraph({ + shading: { + color: "#7D797A", + }, + border: { + left: { + color: "#7D797A", + space: 100, + style: "single", + size: 8, + }, + }, + ...blockPropsToStyles(block.props, exporter.options.colors), + children: exporter.transformInlineContent(block.content), + }); + }, audio: (block, exporter) => { return [ file(block.props, "Open audio", exporter), diff --git a/packages/xl-odt-exporter/src/odt/defaultSchema/blocks.tsx b/packages/xl-odt-exporter/src/odt/defaultSchema/blocks.tsx index fe9523894d..f841bbcdd1 100644 --- a/packages/xl-odt-exporter/src/odt/defaultSchema/blocks.tsx +++ b/packages/xl-odt-exporter/src/odt/defaultSchema/blocks.tsx @@ -17,10 +17,14 @@ const createParagraphStyle = ( exporter: ODTExporter, props: Partial, parentStyleName = "Standard", - styleAttributes: Record = {} + styleAttributes: Record = {}, + paragraphStyleAttributes: Record = {}, + textStyleAttributes: Record = {} ) => { - const paragraphStyles: Record = {}; - const textStyles: Record = {}; + const paragraphStyles: Record = { + ...paragraphStyleAttributes, + }; + const textStyles: Record = { ...textStyleAttributes }; if (props.textAlignment && props.textAlignment !== "left") { const alignmentMap = { @@ -201,6 +205,30 @@ export const odtBlockMappingForDefaultSchema: BlockMapping< ); }, + quote: (block, exporter, nestingLevel) => { + const customStyleName = createParagraphStyle( + exporter as ODTExporter, + block.props, + "Standard", + {}, + { + "fo:border-left": "2pt solid #7D797A", + "fo:padding-left": "0.25in", + }, + { + "fo:color": "#7D797A", + } + ); + const styleName = customStyleName; + + return ( + + {getTabs(nestingLevel)} + {exporter.transformInlineContent(block.content)} + + ); + }, + /** * Note: we wrap each list item in it's own list element. * This is not the cleanest solution, it would be nicer to recognize subsequent diff --git a/packages/xl-pdf-exporter/src/pdf/defaultSchema/blocks.tsx b/packages/xl-pdf-exporter/src/pdf/defaultSchema/blocks.tsx index 9e75c2d273..f79fc7bb1a 100644 --- a/packages/xl-pdf-exporter/src/pdf/defaultSchema/blocks.tsx +++ b/packages/xl-pdf-exporter/src/pdf/defaultSchema/blocks.tsx @@ -70,6 +70,18 @@ export const pdfBlockMappingForDefaultSchema: BlockMapping< ); }, + quote: (block, exporter) => { + return ( + + {exporter.transformInlineContent(block.content)} + + ); + }, codeBlock: (block) => { const textContent = (block.content as StyledText[])[0]?.text || ""; const lines = textContent.split("\n").map((line, index) => { diff --git a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-chromium-linux.png b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-chromium-linux.png index e05397c3ad..d888d1b293 100644 Binary files a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-chromium-linux.png and b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-chromium-linux.png differ diff --git a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-firefox-linux.png b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-firefox-linux.png index 15672652c3..99f724af41 100644 Binary files a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-firefox-linux.png and b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-firefox-linux.png differ diff --git a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-webkit-linux.png b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-webkit-linux.png index a1b0e68678..187ea6f00b 100644 Binary files a/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-webkit-linux.png and b/tests/src/end-to-end/ariakit/ariakit.test.ts-snapshots/ariakit-slash-menu-webkit-linux.png differ diff --git a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-chromium-linux.png b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-chromium-linux.png index fd79f6ae5f..5361d238b4 100644 Binary files a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-chromium-linux.png and b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-chromium-linux.png differ diff --git a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-firefox-linux.png b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-firefox-linux.png index 915e24a32e..6ae912b647 100644 Binary files a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-firefox-linux.png and b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-firefox-linux.png differ diff --git a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-webkit-linux.png b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-webkit-linux.png index 056d4864a5..a9024820c1 100644 Binary files a/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-webkit-linux.png and b/tests/src/end-to-end/shadcn/shadcn.test.ts-snapshots/shadcn-slash-menu-webkit-linux.png differ diff --git a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-chromium-linux.png b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-chromium-linux.png index 47f94fe21f..621340e725 100644 Binary files a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-chromium-linux.png and b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-chromium-linux.png differ diff --git a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-firefox-linux.png b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-firefox-linux.png index de6f49b8cf..ed83cac13b 100644 Binary files a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-firefox-linux.png and b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-firefox-linux.png differ diff --git a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-webkit-linux.png b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-webkit-linux.png index acb33a3e90..af9d51afd3 100644 Binary files a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-webkit-linux.png and b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-slash-menu-webkit-linux.png differ