diff --git a/packages/presentation/src/components/markup/NodeContent.svelte b/packages/presentation/src/components/markup/NodeContent.svelte
index fcce7a7d297..d1613fa6959 100644
--- a/packages/presentation/src/components/markup/NodeContent.svelte
+++ b/packages/presentation/src/components/markup/NodeContent.svelte
@@ -112,7 +112,7 @@
{/if}
{:else if node.type === MarkupNodeType.paragraph}
-
+
{#if nodes.length > 0}
{#each nodes as node}
@@ -132,7 +132,7 @@
{:else if node.type === MarkupNodeType.heading}
{@const level = toNumber(node.attrs?.level) ?? 1}
{@const element = `h${level}`}
-
+
{#if nodes.length > 0}
{#each nodes as node}
diff --git a/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte b/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte
index f89bda14540..a783a2e3909 100644
--- a/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte
+++ b/packages/presentation/src/components/markup/lite/LiteNodeContent.svelte
@@ -81,7 +81,14 @@
{/each}
{/if}
{:else if node.type === MarkupNodeType.paragraph}
-
+
{:else if node.type === MarkupNodeType.blockquote}
diff --git a/packages/theme/styles/prose.scss b/packages/theme/styles/prose.scss
index 68126e92c3e..762e57bc3ed 100644
--- a/packages/theme/styles/prose.scss
+++ b/packages/theme/styles/prose.scss
@@ -84,7 +84,7 @@ table.proseTable {
}
th {
- text-align: left;
+ text-align: start;
background-color: var(--text-editor-table-header-color);
}
diff --git a/plugins/text-editor-resources/src/kits/editor-kit.ts b/plugins/text-editor-resources/src/kits/editor-kit.ts
index 82669655cb0..305033ea522 100644
--- a/plugins/text-editor-resources/src/kits/editor-kit.ts
+++ b/plugins/text-editor-resources/src/kits/editor-kit.ts
@@ -24,7 +24,9 @@ import {
extensionKit,
mergeKitOptions,
TextColorStylingKit,
+ Heading,
Highlight,
+ Paragraph,
Subscript,
Superscript
} from '@hcengineering/text'
@@ -89,6 +91,11 @@ const StaticEditorKit = extensionKit(
({
...CommonKitFactory(e),
+ // Let each text block take its direction from its first strong character,
+ // so RTL and mixed RTL/LTR text is rendered correctly (client-side only, stored content is unchanged)
+ paragraph: e(Paragraph, { HTMLAttributes: { dir: 'auto' } }),
+ heading: e(Heading, { HTMLAttributes: { dir: 'auto' } }),
+
shortcuts: e(subKits.shortcuts, context), // needs to be loaded as early as possible to override the default behavior
// ===========================================================================================