+
+
diff --git a/src/components/SettingsDialog/types.ts b/src/components/SettingsDialog/types.ts
new file mode 100644
index 000000000..c32b2f50d
--- /dev/null
+++ b/src/components/SettingsDialog/types.ts
@@ -0,0 +1,42 @@
+import type { Component } from 'vue'
+import type { DialogSize } from '../Dialog/types'
+import type { SidebarItemProps, SidebarSectionProps } from '../Sidebar/types'
+
+/**
+ * A single navigable settings tab shown in the dialog sidebar. Extends the
+ * sidebar item contract, adding an optional `component` rendered in the content
+ * area when the tab is active.
+ */
+export type SettingsTab = SidebarItemProps & {
+ /** Component rendered in the content area when this tab is active. */
+ component?: Component
+}
+
+/** A labelled group of settings tabs rendered as one sidebar section. */
+export type SettingsSection = Omit & {
+ items: SettingsTab[]
+}
+
+export interface SettingsDialogProps {
+ /**
+ * Sidebar sections to render. Each item may carry a `component` that is
+ * shown in the content area when the item is selected.
+ */
+ sections: SettingsSection[]
+
+ /** Max-width size of the dialog. */
+ size?: DialogSize
+}
+
+export interface SettingsDialogEmits {
+ /** Fired when the dialog is opened or closed. */
+ 'update:modelValue': [value: boolean]
+}
+
+export interface SettingsPanelProps {
+ /** Heading rendered at the top of the panel. */
+ title: string
+
+ /** Optional sub-heading rendered below the title. */
+ description?: string
+}
diff --git a/src/components/TextEditor/components/CodeBlockComponent.vue b/src/components/TextEditor/components/CodeBlockComponent.vue
index ce57663cf..5714c1ac6 100644
--- a/src/components/TextEditor/components/CodeBlockComponent.vue
+++ b/src/components/TextEditor/components/CodeBlockComponent.vue
@@ -1,7 +1,7 @@