@multiplatform.one/rich-text 7.11.0 → 7.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/editor/TentapEditor.native.js +47 -14
  3. package/dist/cjs/editor/TentapEditor.native.js.map +1 -1
  4. package/dist/cjs/toolbar/ColorPicker.cjs +2 -2
  5. package/dist/cjs/toolbar/ImageDialog.cjs +1 -1
  6. package/dist/cjs/toolbar/LinkDialog.cjs +2 -2
  7. package/dist/cjs/toolbar/LinkDialog.native.js +1 -1
  8. package/dist/cjs/toolbar/LinkDialog.native.js.map +1 -1
  9. package/dist/cjs/toolbar/MoreDropdown.cjs +1 -1
  10. package/dist/cjs/toolbar/MoreDropdown.native.js +1 -1
  11. package/dist/cjs/toolbar/TableBubble.cjs +1 -1
  12. package/dist/cjs/toolbar/TableBubble.native.js +1 -1
  13. package/dist/cjs/toolbar/TableBubble.native.js.map +1 -1
  14. package/dist/cjs/toolbar/ToolbarButton.cjs +11 -3
  15. package/dist/cjs/toolbar/useHorizontalScroll.cjs +2 -3
  16. package/dist/cjs/toolbar/useHorizontalScroll.native.js +2 -3
  17. package/dist/cjs/toolbar/useHorizontalScroll.native.js.map +1 -1
  18. package/dist/esm/editor/TentapEditor.native.js +48 -15
  19. package/dist/esm/editor/TentapEditor.native.js.map +1 -1
  20. package/dist/esm/toolbar/ColorPicker.mjs +2 -2
  21. package/dist/esm/toolbar/ImageDialog.mjs +1 -1
  22. package/dist/esm/toolbar/LinkDialog.mjs +2 -2
  23. package/dist/esm/toolbar/LinkDialog.mjs.map +1 -1
  24. package/dist/esm/toolbar/LinkDialog.native.js +1 -1
  25. package/dist/esm/toolbar/LinkDialog.native.js.map +1 -1
  26. package/dist/esm/toolbar/MoreDropdown.mjs +1 -1
  27. package/dist/esm/toolbar/MoreDropdown.native.js +1 -1
  28. package/dist/esm/toolbar/TableBubble.mjs +2 -2
  29. package/dist/esm/toolbar/TableBubble.mjs.map +1 -1
  30. package/dist/esm/toolbar/TableBubble.native.js +2 -2
  31. package/dist/esm/toolbar/TableBubble.native.js.map +1 -1
  32. package/dist/esm/toolbar/ToolbarButton.mjs +11 -3
  33. package/dist/esm/toolbar/ToolbarButton.mjs.map +1 -1
  34. package/dist/esm/toolbar/useHorizontalScroll.mjs +2 -3
  35. package/dist/esm/toolbar/useHorizontalScroll.mjs.map +1 -1
  36. package/dist/esm/toolbar/useHorizontalScroll.native.js +2 -3
  37. package/dist/esm/toolbar/useHorizontalScroll.native.js.map +1 -1
  38. package/dist/jsx/editor/TentapEditor.native.js +47 -14
  39. package/dist/jsx/editor/TentapEditor.native.js.map +1 -1
  40. package/dist/jsx/toolbar/ColorPicker.mjs +2 -2
  41. package/dist/jsx/toolbar/ImageDialog.mjs +1 -1
  42. package/dist/jsx/toolbar/LinkDialog.mjs +2 -2
  43. package/dist/jsx/toolbar/LinkDialog.mjs.map +1 -1
  44. package/dist/jsx/toolbar/LinkDialog.native.js +1 -1
  45. package/dist/jsx/toolbar/LinkDialog.native.js.map +1 -1
  46. package/dist/jsx/toolbar/MoreDropdown.mjs +1 -1
  47. package/dist/jsx/toolbar/MoreDropdown.native.js +1 -1
  48. package/dist/jsx/toolbar/TableBubble.mjs +2 -2
  49. package/dist/jsx/toolbar/TableBubble.mjs.map +1 -1
  50. package/dist/jsx/toolbar/TableBubble.native.js +1 -1
  51. package/dist/jsx/toolbar/TableBubble.native.js.map +1 -1
  52. package/dist/jsx/toolbar/ToolbarButton.mjs +11 -3
  53. package/dist/jsx/toolbar/ToolbarButton.mjs.map +1 -1
  54. package/dist/jsx/toolbar/useHorizontalScroll.mjs +2 -3
  55. package/dist/jsx/toolbar/useHorizontalScroll.mjs.map +1 -1
  56. package/dist/jsx/toolbar/useHorizontalScroll.native.js +2 -3
  57. package/dist/jsx/toolbar/useHorizontalScroll.native.js.map +1 -1
  58. package/package.json +10 -10
  59. package/src/editor/TentapEditor.native.spec.tsx +39 -1
  60. package/src/editor/TentapEditor.native.tsx +72 -15
  61. package/src/toolbar/ColorPicker.tsx +2 -2
  62. package/src/toolbar/ImageDialog.tsx +1 -1
  63. package/src/toolbar/LinkDialog.native.tsx +1 -6
  64. package/src/toolbar/LinkDialog.tsx +2 -2
  65. package/src/toolbar/MoreDropdown.tsx +1 -1
  66. package/src/toolbar/TableBubble.spec.tsx +6 -0
  67. package/src/toolbar/TableBubble.tsx +2 -2
  68. package/src/toolbar/ToolbarButton.tsx +16 -5
  69. package/src/toolbar/toolbarButtonRadius.spec.tsx +59 -0
  70. package/src/toolbar/toolbarMenuAnchoring.spec.ts +32 -0
  71. package/src/toolbar/useHorizontalScroll.tsx +2 -1
  72. package/types/editor/TentapEditor.native.d.ts.map +1 -1
  73. package/types/toolbar/LinkDialog.native.d.ts.map +1 -1
  74. package/types/toolbar/ToolbarButton.d.ts.map +1 -1
  75. package/types/toolbar/useHorizontalScroll.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useHorizontalScroll_exports","HorizontalScrollArrow","horizontalScrollEdges","useHorizontalScroll","useHorizontalScrollArrows","module","exports","import_jsx_runtime","require","import_react","import_tamagui","import_linear_gradient","import_react2","import_components","scrollArrowThreshold","element","direction","range","Math","max","scrollWidth","clientWidth","minScrollLeft","fromLeftEdge","scrollLeft","fromRightEdge","ref","useEffect","el","current","handleWheel","handleWheel2","e","delta","deltaY","deltaX","preventDefault","isDown","isDragging","startX","handleMouseDown","handleMouseDown2","button","clientX","handleMouseUp","handleMouseUp2","stopPropagation","handleMouseMove","handleMouseMove2","x","diff","abs","walk","addEventListener","passive","capture","document","removeEventListener","useDirection","arrowLeft","setArrowLeft","useState","arrowRight","setArrowRight","arrowScrollDirRef","useRef","updateArrows","useCallback","left","right","prev","param","scrollRef","visible","transition","isLeft","textDirection","animationFrameRef","lastTimeRef","resumeTimerRef","hoveringRef","activeRef","selfScrollingRef","resumeDelay","stopLoop","cancelAnimationFrame","startLoop","performance","now","tick","tick1","elapsed","px","min","requestAnimationFrame","openTimestampRef","handlePointerEnter","wasOverOnOpen","clearTimeout","setTimeout","handlePointerLeave","onScroll","onScroll2"],"sources":["../../../src/toolbar/useHorizontalScroll.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useHorizontalScroll_exports","HorizontalScrollArrow","horizontalScrollEdges","useHorizontalScroll","useHorizontalScrollArrows","module","exports","import_jsx_runtime","require","import_react","import_tamagui","import_linear_gradient","import_react2","import_components","import_theme","scrollArrowThreshold","element","direction","range","Math","max","scrollWidth","clientWidth","minScrollLeft","fromLeftEdge","scrollLeft","fromRightEdge","ref","useEffect","el","current","handleWheel","handleWheel2","e","delta","deltaY","deltaX","preventDefault","isDown","isDragging","startX","handleMouseDown","handleMouseDown2","button","clientX","handleMouseUp","handleMouseUp2","stopPropagation","handleMouseMove","handleMouseMove2","x","diff","abs","walk","addEventListener","passive","capture","document","removeEventListener","useDirection","arrowLeft","setArrowLeft","useState","arrowRight","setArrowRight","arrowScrollDirRef","useRef","updateArrows","useCallback","left","right","prev","param","scrollRef","visible","transition","isLeft","textDirection","animationFrameRef","lastTimeRef","resumeTimerRef","hoveringRef","activeRef","selfScrollingRef","resumeDelay","stopLoop","cancelAnimationFrame","startLoop","performance","now","tick","tick1","elapsed","px","min","requestAnimationFrame","openTimestampRef","handlePointerEnter","wasOverOnOpen","clearTimeout","setTimeout","handlePointerLeave","onScroll","onScroll2"],"sources":["../../../src/toolbar/useHorizontalScroll.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/rich-text",
3
- "version": "7.11.0",
3
+ "version": "7.16.0",
4
4
  "description": "Cross-platform rich text editor with markdown support and syntax highlighting",
5
5
  "keywords": [
6
6
  "cross-platform",
@@ -15,14 +15,14 @@
15
15
  ],
16
16
  "homepage": "https://multiplatform.one",
17
17
  "bugs": {
18
- "url": "https://gitlab.com/bitspur/multiplatform.one/multiplatform.one/issues",
18
+ "url": "https://projects.corp.bitspur.com/tracker/MPO",
19
19
  "email": "support@risserlabs.com"
20
20
  },
21
21
  "license": "Apache-2.0",
22
22
  "author": "BitSpur <support@risserlabs.com> (https://risserlabs.com)",
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "git+https://gitlab.com/bitspur/frappe/multiplatform.one.git",
25
+ "url": "git+https://git.corp.bitspur.com/multiplatform.one/mpo.git",
26
26
  "directory": "public/rich-text"
27
27
  },
28
28
  "source": "src/index.ts",
@@ -57,10 +57,10 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@10play/tentap-editor": "^1.0.1",
60
- "@multiplatform.one/components": "7.11.0",
61
- "@multiplatform.one/forms": "7.11.0",
62
- "@multiplatform.one/markdown": "7.11.0",
63
- "@multiplatform.one/theme": "7.11.0",
60
+ "@multiplatform.one/components": "7.16.0",
61
+ "@multiplatform.one/forms": "7.16.0",
62
+ "@multiplatform.one/markdown": "7.16.0",
63
+ "@multiplatform.one/theme": "7.16.0",
64
64
  "@phosphor-icons/react": "^2.1.10",
65
65
  "@tamagui/linear-gradient": "2.7.6",
66
66
  "@tanstack/react-form": "^1.29.1",
@@ -100,9 +100,9 @@
100
100
  "turndown": "^7.2.4"
101
101
  },
102
102
  "devDependencies": {
103
- "@multiplatform.one/config": "7.11.0",
104
- "@multiplatform.one/storybook": "7.11.0",
105
- "@multiplatform.one/test-utils": "7.11.0",
103
+ "@multiplatform.one/config": "7.16.0",
104
+ "@multiplatform.one/storybook": "7.16.0",
105
+ "@multiplatform.one/test-utils": "7.16.0",
106
106
  "@tamagui/build": "2.7.6",
107
107
  "@testing-library/jest-dom": "^6.9.1",
108
108
  "@testing-library/react": "^16.3.2",
@@ -5,7 +5,9 @@ import { TentapEditor } from "./TentapEditor.native";
5
5
  const state = vi.hoisted(() => ({
6
6
  props: {} as any,
7
7
  scheme: "light",
8
+ os: "light",
8
9
  theme: { color12: { val: "black" } },
10
+ themes: {} as Record<string, Record<string, unknown>>,
9
11
  editor: {
10
12
  injectCSS: vi.fn(),
11
13
  setContent: vi.fn(),
@@ -16,12 +18,14 @@ const state = vi.hoisted(() => ({
16
18
 
17
19
  vi.mock("react-native", () => ({
18
20
  StyleSheet: { create: (styles: any) => styles },
19
- useColorScheme: () => "light",
21
+ useColorScheme: () => state.os,
20
22
  }));
21
23
  vi.mock("tamagui", () => ({
22
24
  View: ({ children }: any) => <div>{children}</div>,
23
25
  useTheme: () => state.theme,
24
26
  useThemeName: () => state.scheme,
27
+ getConfig: () => ({ themes: state.themes }),
28
+ getVariableValue: (value: any) => value?.val ?? value,
25
29
  }));
26
30
  vi.mock("../context", () => ({
27
31
  RichEditorContext: { useStyledContext: () => ({ disabled: false }) },
@@ -49,7 +53,9 @@ beforeEach(() => {
49
53
  vi.useFakeTimers();
50
54
  vi.clearAllMocks();
51
55
  state.scheme = "light";
56
+ state.os = "light";
52
57
  state.theme = { color12: { val: "black" } };
58
+ state.themes = {};
53
59
  });
54
60
  afterEach(() => {
55
61
  cleanup();
@@ -117,4 +123,36 @@ describe("Tentap native stylesheet lifecycle", () => {
117
123
  "multiplatform-tentap-palette",
118
124
  );
119
125
  });
126
+
127
+ it("hands a theme that follows the appearance both palettes, so an unheard flip still repaints", () => {
128
+ state.scheme = "light_blue";
129
+ state.themes = { dark_blue: { color12: { val: "white" } } };
130
+ render(<TentapEditor />);
131
+ act(() => state.props.onLoad({ nativeEvent: { url: "about:blank" } }));
132
+ const css = (tag: string) =>
133
+ state.editor.injectCSS.mock.calls.findLast((call: string[]) => call[1] === tag)?.[0];
134
+ expect(css("multiplatform-tentap-palette")).toBe(
135
+ "@media (prefers-color-scheme: light) { :root { --color12: black; } } " +
136
+ "@media (prefers-color-scheme: dark) { :root { --color12: white; } }",
137
+ );
138
+ expect(css("multiplatform-tentap-dark")).toBe(
139
+ "@media (prefers-color-scheme: dark) { body { background: black; color: white; } }",
140
+ );
141
+ });
142
+
143
+ it("keeps a scheme forced away from the appearance static", () => {
144
+ state.scheme = "dark_blue";
145
+ state.theme = { color12: { val: "white" } };
146
+ state.themes = { light_blue: { color12: { val: "black" } } };
147
+ render(<TentapEditor />);
148
+ act(() => state.props.onLoad({ nativeEvent: { url: "about:blank" } }));
149
+ expect(state.editor.injectCSS).toHaveBeenCalledWith(
150
+ ":root { --color12: white; }",
151
+ "multiplatform-tentap-palette",
152
+ );
153
+ expect(state.editor.injectCSS).toHaveBeenCalledWith(
154
+ "body { background: black; color: white; }",
155
+ "multiplatform-tentap-dark",
156
+ );
157
+ });
120
158
  });
@@ -36,7 +36,7 @@ import {
36
36
  darkEditorCss,
37
37
  darkEditorTheme,
38
38
  } from "@10play/tentap-editor";
39
- import { View, useTheme, useThemeName } from "tamagui";
39
+ import { View, getConfig, getVariableValue, useTheme, useThemeName } from "tamagui";
40
40
  import type { RichEditorProps, RichEditorRef, EditorCommand } from "../types";
41
41
  import { RichEditorContext } from "../context";
42
42
  import { PALETTE_THEME_TOKENS } from "../constants";
@@ -46,13 +46,56 @@ import { getEditorCSS } from "./editorStyles";
46
46
  import { escapeNativeEditorCSS } from "./nativeEditorCSS";
47
47
  import { htmlToMarkdown, markdownToHtml } from "./markdown";
48
48
 
49
- function useNativeEditorDarkMode(): boolean {
50
- const themeName = useThemeName();
49
+ type EditorScheme = "light" | "dark";
50
+
51
+ function useNativeEditorScheme() {
52
+ const themeName = String(useThemeName() || "");
51
53
  const osScheme = useColorScheme();
52
- if (themeName) {
53
- return String(themeName).startsWith("dark");
54
- }
55
- return osScheme === "dark";
54
+ const scheme: EditorScheme = themeName
55
+ ? themeName.startsWith("dark")
56
+ ? "dark"
57
+ : "light"
58
+ : osScheme === "dark"
59
+ ? "dark"
60
+ : "light";
61
+ return { themeName: themeName || scheme, scheme, followsAppearance: osScheme === scheme };
62
+ }
63
+
64
+ function paletteDecls(read: (token: string) => unknown): string {
65
+ return PALETTE_THEME_TOKENS.flatMap((token) => {
66
+ const value = read(token);
67
+ return value ? [`--${token}: ${value};`] : [];
68
+ }).join(" ");
69
+ }
70
+
71
+ /**
72
+ * A theme that follows the appearance gets both palettes behind
73
+ * prefers-color-scheme, so the WebView repaints on a scheme flip JS never
74
+ * hears about: a fullScreen modal detaches the root view, and RN's Appearance
75
+ * stays silent until it closes (MPO-187).
76
+ */
77
+ function schemeStyles(
78
+ themeName: string,
79
+ scheme: EditorScheme,
80
+ followsAppearance: boolean,
81
+ current: string,
82
+ ): { dark: string; palette: string } {
83
+ const staticStyles = {
84
+ dark: scheme === "dark" ? darkEditorCss : "",
85
+ palette: `:root { ${current} }`,
86
+ };
87
+ if (!followsAppearance) return staticStyles;
88
+ const other: EditorScheme = scheme === "dark" ? "light" : "dark";
89
+ const otherTheme = (getConfig().themes as Record<string, Record<string, unknown>>)[
90
+ themeName.replace(/^(light|dark)/, other)
91
+ ];
92
+ if (!otherTheme) return staticStyles;
93
+ const opposite = paletteDecls((token) => getVariableValue(otherTheme[token]));
94
+ const byScheme = { [scheme]: current, [other]: opposite } as Record<EditorScheme, string>;
95
+ return {
96
+ dark: `@media (prefers-color-scheme: dark) { ${darkEditorCss} }`,
97
+ palette: `@media (prefers-color-scheme: light) { :root { ${byScheme.light} } } @media (prefers-color-scheme: dark) { :root { ${byScheme.dark} } }`,
98
+ };
56
99
  }
57
100
 
58
101
  // ===========================================================================
@@ -91,7 +134,8 @@ export const TentapEditor = forwardRef(
91
134
  ) => {
92
135
  const ctx = RichEditorContext.useStyledContext();
93
136
  const placeholder = placeholderProp ?? t("Start writing...");
94
- const isDarkMode = useNativeEditorDarkMode();
137
+ const { themeName, scheme, followsAppearance } = useNativeEditorScheme();
138
+ const isDarkMode = scheme === "dark";
95
139
  const cachedHtml = useRef<string>("");
96
140
  const cachedJson = useRef<any>(null);
97
141
 
@@ -133,14 +177,16 @@ export const TentapEditor = forwardRef(
133
177
  const inject = (css: string, tag: string) => {
134
178
  editor.injectCSS(escapeNativeEditorCSS(css), tag);
135
179
  };
136
- inject(isDarkMode ? darkEditorCss : "", "multiplatform-tentap-dark");
137
180
  // The WebView has no Tamagui stylesheet. Resolve the same palette as
138
181
  // web-authored color/highlight marks before applying content rules.
139
- const decls = PALETTE_THEME_TOKENS.map((token) => {
140
- const value = (theme as any)[token]?.val;
141
- return value ? `--${token}: ${value};` : "";
142
- }).join(" ");
143
- inject(`:root { ${decls} }`, "multiplatform-tentap-palette");
182
+ const styles = schemeStyles(
183
+ themeName,
184
+ scheme,
185
+ followsAppearance,
186
+ paletteDecls((token) => (theme as any)[token]?.val),
187
+ );
188
+ inject(styles.dark, "multiplatform-tentap-dark");
189
+ inject(styles.palette, "multiplatform-tentap-palette");
144
190
  inject(
145
191
  getEditorCSS({
146
192
  minHeight,
@@ -152,7 +198,18 @@ export const TentapEditor = forwardRef(
152
198
  }),
153
199
  "multiplatform-tentap-content",
154
200
  );
155
- }, [editor, isDarkMode, theme, minHeight, maxHeight, bodyFontFamily, headingFontFamily, fill]);
201
+ }, [
202
+ editor,
203
+ themeName,
204
+ scheme,
205
+ followsAppearance,
206
+ theme,
207
+ minHeight,
208
+ maxHeight,
209
+ bodyFontFamily,
210
+ headingFontFamily,
211
+ fill,
212
+ ]);
156
213
 
157
214
  // TenTap invokes this after its internal onLoad handling, including its
158
215
  // first-load iOS reload. Apply on every load so the replacement document
@@ -80,7 +80,7 @@ export function TextColorPicker({ editorRef, state, disabled }: ColorPickerProps
80
80
  );
81
81
 
82
82
  return (
83
- <Popover open={open} onOpenChange={setOpen} placement="bottom">
83
+ <Popover open={open} onOpenChange={setOpen} placement="bottom-start">
84
84
  <Popover.Trigger asChild>
85
85
  <ToolbarButton
86
86
  active={!!state.textColor}
@@ -123,7 +123,7 @@ export function HighlightColorPicker({ editorRef, state, disabled }: ColorPicker
123
123
  );
124
124
 
125
125
  return (
126
- <Popover open={open} onOpenChange={setOpen} placement="bottom">
126
+ <Popover open={open} onOpenChange={setOpen} placement="bottom-start">
127
127
  <Popover.Trigger asChild>
128
128
  <ToolbarButton
129
129
  active={!!state.highlightColor}
@@ -43,7 +43,7 @@ export function ImageDialog({ editorRef, disabled }: ImageDialogProps) {
43
43
  }, [imageUrl, editorRef]);
44
44
 
45
45
  return (
46
- <Popover open={open} onOpenChange={setOpen} placement="bottom">
46
+ <Popover open={open} onOpenChange={setOpen} placement="bottom-start">
47
47
  <Popover.Trigger asChild>
48
48
  <ToolbarButton
49
49
  disabled={disabled}
@@ -79,12 +79,7 @@ export function LinkDialog({ editorRef, state, disabled }: LinkDialogProps) {
79
79
  {t("Cancel")}
80
80
  </Button>
81
81
  {state.isLink && (
82
- <Button
83
- size="$2"
84
- theme="red"
85
- onPress={handleRemove}
86
- aria-label={t("Remove link")}
87
- >
82
+ <Button size="$2" error onPress={handleRemove} aria-label={t("Remove link")}>
88
83
  {t("Remove")}
89
84
  </Button>
90
85
  )}
@@ -69,7 +69,7 @@ export function LinkDialog({
69
69
  }, [editorRef]);
70
70
 
71
71
  return (
72
- <Popover open={open} onOpenChange={setOpen} placement="bottom">
72
+ <Popover open={open} onOpenChange={setOpen} placement="bottom-start">
73
73
  <Popover.Trigger asChild>
74
74
  <ToolbarButton
75
75
  active={state.isLink}
@@ -97,7 +97,7 @@ export function LinkDialog({
97
97
  />
98
98
  <XStack gap="$2" justifyContent="flex-end">
99
99
  {state.isLink && (
100
- <Button size="$2" theme="red" onPress={handleRemove} aria-label={t("Remove link")}>
100
+ <Button size="$2" error onPress={handleRemove} aria-label={t("Remove link")}>
101
101
  {t("Remove")}
102
102
  </Button>
103
103
  )}
@@ -159,7 +159,7 @@ export function MoreDropdown({
159
159
  );
160
160
 
161
161
  return (
162
- <DropdownMenu open={open} onOpenChange={setOpen} placement="bottom-end">
162
+ <DropdownMenu open={open} onOpenChange={setOpen} placement="bottom-start">
163
163
  <DropdownMenu.Trigger asChild>
164
164
  <ToolbarButton
165
165
  disabled={disabled}
@@ -117,6 +117,12 @@ describe("TableBubble", () => {
117
117
  expect(bubble.props?.options).toMatchObject({ placement: "top-start" });
118
118
  });
119
119
 
120
+ it("attaches flush to the table at the overlay family gap, not a private 6px (MPO-35)", () => {
121
+ const { editor } = makeEditor();
122
+ render(editor);
123
+ expect(bubble.props?.options).toMatchObject({ offset: 0 });
124
+ });
125
+
120
126
  // LC-52: GFM pipe tables are plain grids, so merge and split have no
121
127
  // markdown form. The markdown capability must drop exactly those two.
122
128
  it("markdown capability removes exactly mergeCells and splitCell", () => {
@@ -7,7 +7,7 @@ import { useState } from "react";
7
7
  import type { Editor } from "@tiptap/react";
8
8
  import { BubbleMenu } from "@tiptap/react/menus";
9
9
  import { PopoverContent } from "@multiplatform.one/components";
10
- import { useResolvedKnobs } from "@multiplatform.one/theme";
10
+ import { OVERLAY_ATTACH_GAP, useResolvedKnobs } from "@multiplatform.one/theme";
11
11
  import { ColumnsPlusRightIcon, RowsPlusBottomIcon, TrashIcon } from "@phosphor-icons/react";
12
12
  import { Popover, Text, XStack, YStack } from "tamagui";
13
13
  import { DropdownMenuItemFrame, ToolbarSeparatorFrame } from "../styled";
@@ -111,7 +111,7 @@ export function TableBubble({ editor, capabilities = "full" }: TableBubbleProps)
111
111
  // the first row and holds still while typing in cells (LC-06 spirit:
112
112
  // chrome must not sit on top of the content being edited).
113
113
  getReferencedVirtualElement={() => getBlockVirtualElement(editor, "table")}
114
- options={{ placement: "top-start", offset: 6 }}
114
+ options={{ placement: "top-start", offset: OVERLAY_ATTACH_GAP }}
115
115
  >
116
116
  <XStack
117
117
  backgroundColor="$background"
@@ -17,6 +17,7 @@ import type { ReactNode } from "react";
17
17
  import { XStack, View, styled } from "tamagui";
18
18
  import { Button } from "@multiplatform.one/forms";
19
19
  import { Tooltip } from "@multiplatform.one/components";
20
+ import { useResolvedKnobs } from "@multiplatform.one/theme";
20
21
  import { CaretDownIcon } from "@phosphor-icons/react";
21
22
  import { RichEditorContext } from "../context";
22
23
 
@@ -58,7 +59,6 @@ const ChromeBox = styled(View, {
58
59
  justifyContent: "center",
59
60
  width: VISUAL_SIZE,
60
61
  height: VISUAL_SIZE,
61
- borderRadius: "$2",
62
62
 
63
63
  hoverStyle: {
64
64
  backgroundColor: "$color4",
@@ -100,6 +100,7 @@ export function ToolbarButton({
100
100
  ...props
101
101
  }: ToolbarButtonProps) {
102
102
  const ctx = RichEditorContext.useStyledContext();
103
+ const { knobProps } = useResolvedKnobs();
103
104
  const isDisabled = disabled ?? ctx.disabled;
104
105
  const pressed = ariaPressed ?? (active !== undefined ? !!active : undefined);
105
106
 
@@ -124,12 +125,16 @@ export function ToolbarButton({
124
125
  backgroundColor="transparent"
125
126
  hoverStyle={{ backgroundColor: "transparent" }}
126
127
  pressStyle={{ backgroundColor: "transparent" }}
127
- borderRadius="$2"
128
128
  {...(pressed !== undefined ? { "aria-pressed": pressed } : undefined)}
129
129
  {...(active ? { theme: "active" } : undefined)}
130
130
  {...props}
131
131
  >
132
- <ChromeBox active={!!active} unavailable={!!isDisabled}>
132
+ <ChromeBox
133
+ {...knobProps.borderRadius}
134
+ borderWidth={0}
135
+ active={!!active}
136
+ unavailable={!!isDisabled}
137
+ >
133
138
  {children}
134
139
  </ChromeBox>
135
140
  </Button>
@@ -160,6 +165,7 @@ export function ToolbarDropdownButton({
160
165
  ...props
161
166
  }: ToolbarDropdownButtonProps) {
162
167
  const ctx = RichEditorContext.useStyledContext();
168
+ const { knobProps } = useResolvedKnobs();
163
169
  const isDisabled = disabled ?? ctx.disabled;
164
170
 
165
171
  return (
@@ -178,11 +184,16 @@ export function ToolbarDropdownButton({
178
184
  backgroundColor="transparent"
179
185
  hoverStyle={{ backgroundColor: "transparent" }}
180
186
  pressStyle={{ backgroundColor: "transparent" }}
181
- borderRadius="$2"
182
187
  {...(active ? { theme: "active" } : undefined)}
183
188
  {...props}
184
189
  >
185
- <ChromeBox active={!!active} stretch unavailable={!!isDisabled}>
190
+ <ChromeBox
191
+ {...knobProps.borderRadius}
192
+ borderWidth={0}
193
+ active={!!active}
194
+ stretch
195
+ unavailable={!!isDisabled}
196
+ >
186
197
  <XStack alignItems="center" gap="$1">
187
198
  {children}
188
199
  <CaretDownIcon size={10} />
@@ -0,0 +1,59 @@
1
+ import { cleanup } from "@testing-library/react";
2
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
3
+ import { Preset, type Knobs } from "@multiplatform.one/theme";
4
+ import { afterEach, describe, expect, it, vi } from "vitest";
5
+ import { RichEditorContext } from "../context";
6
+
7
+ vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
8
+ ...(await importOriginal<Record<string, unknown>>()),
9
+ Button: (props: any) => (
10
+ <button role="button" aria-label={props["aria-label"]} onClick={props.onPress}>
11
+ {props.children}
12
+ </button>
13
+ ),
14
+ }));
15
+
16
+ vi.mock("@multiplatform.one/components", () => ({
17
+ Tooltip: ({ children }: any) => children,
18
+ useDirection: () => "ltr",
19
+ }));
20
+
21
+ const { ToolbarButton, ToolbarDropdownButton } = await import("./ToolbarButton");
22
+
23
+ afterEach(cleanup);
24
+
25
+ function chromeRadius(overrides: Partial<Knobs>, dropdown = false) {
26
+ const { getByRole } = renderWithProviders(
27
+ <Preset overrides={overrides}>
28
+ <RichEditorContext.Provider size="$true" compact={false} disabled={false}>
29
+ {dropdown ? (
30
+ <ToolbarDropdownButton aria-label="Heading" onPress={() => {}}>
31
+ H
32
+ </ToolbarDropdownButton>
33
+ ) : (
34
+ <ToolbarButton aria-label="Bold" onPress={() => {}}>
35
+ B
36
+ </ToolbarButton>
37
+ )}
38
+ </RichEditorContext.Provider>
39
+ </Preset>,
40
+ );
41
+ const chrome = getByRole("button").firstElementChild;
42
+ const atom = String(chrome?.getAttribute("class") ?? "")
43
+ .split(/\s+/)
44
+ .find((c) => c.startsWith("_btlr-"));
45
+ cleanup();
46
+ return atom;
47
+ }
48
+
49
+ describe("toolbar chrome rides the borderRadius knob (DG-RAD-01, MPO-56)", () => {
50
+ it("squares the visible chrome at none", () => {
51
+ expect(chromeRadius({ borderRadius: "none" })).toBe("_btlr-t-radius-0");
52
+ expect(chromeRadius({ borderRadius: "none" }, true)).toBe("_btlr-t-radius-0");
53
+ });
54
+
55
+ it("follows the token scale above none", () => {
56
+ expect(chromeRadius({ borderRadius: "medium" })).toBe("_btlr-t-radius-4");
57
+ expect(chromeRadius({ borderRadius: "large" }, true)).toBe("_btlr-t-radius-6");
58
+ });
59
+ });
@@ -0,0 +1,32 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { describe, expect, it } from "vitest";
5
+
6
+ // MPO-35 ruling B (Clay, 2026-09-26): toolbar menus are input-anchored. Each
7
+ // one drops flush below its trigger and starts at the trigger's left edge, so
8
+ // a menu never covers the toolbar being worked in and never centres itself
9
+ // off to one side. The selection and block bubbles are their own lineage and
10
+ // are not held to this.
11
+ const here = dirname(fileURLToPath(import.meta.url));
12
+ const toolbarMenus = {
13
+ "ColorPicker.tsx": 2,
14
+ "HeadingPicker.tsx": 1,
15
+ "ImageDialog.tsx": 1,
16
+ "LinkDialog.tsx": 1,
17
+ "ListPicker.tsx": 1,
18
+ "MoreDropdown.tsx": 1,
19
+ } as const;
20
+
21
+ describe("rich-text toolbar menus open input-anchored (MPO-35)", () => {
22
+ for (const [file, menus] of Object.entries(toolbarMenus)) {
23
+ it(`${file}: every menu opens bottom-start`, () => {
24
+ const src = readFileSync(join(here, file), "utf8");
25
+ const placements = [
26
+ ...src.matchAll(/<(?:Popover|DropdownMenu)\b[^>]*placement="([^"]+)"/g),
27
+ ].map((match) => match[1]);
28
+ expect(placements).toHaveLength(menus);
29
+ expect(placements.every((placement) => placement === "bottom-start")).toBe(true);
30
+ });
31
+ }
32
+ });
@@ -9,6 +9,7 @@ import { View } from "tamagui";
9
9
  import { LinearGradient } from "@tamagui/linear-gradient";
10
10
  import { CaretLeftIcon, CaretRightIcon } from "@phosphor-icons/react";
11
11
  import { useDirection } from "@multiplatform.one/components";
12
+ import { transitionProps } from "@multiplatform.one/theme";
12
13
 
13
14
  const scrollArrowThreshold = 8;
14
15
 
@@ -276,7 +277,7 @@ export function HorizontalScrollArrow({
276
277
  opacity={visible ? 1 : 0}
277
278
  // `animation` is the tamagui 1.x prop — silently dropped on 2.x, which
278
279
  // left this opacity fade popping.
279
- {...(transition ? { transition } : undefined)}
280
+ {...transitionProps(transition)}
280
281
  onPointerEnter={visible ? handlePointerEnter : undefined}
281
282
  onPointerLeave={handlePointerLeave}
282
283
  data-testid={`toolbar-scroll-arrow-${direction}`}
@@ -1 +1 @@
1
- {"version":3,"file":"TentapEditor.native.d.ts","sourceRoot":"","sources":["../../src/editor/TentapEditor.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0BH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAsB9E,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,eAAO,MAAM,YAAY,6GA6QxB,CAAC"}
1
+ {"version":3,"file":"TentapEditor.native.d.ts","sourceRoot":"","sources":["../../src/editor/TentapEditor.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0BH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AAiE9E,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,6EAA6E;IAC7E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,eAAO,MAAM,YAAY,6GA2RxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LinkDialog.native.d.ts","sourceRoot":"","sources":["../../src/toolbar/LinkDialog.native.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAM3D,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,2CA+EzE"}
1
+ {"version":3,"file":"LinkDialog.native.d.ts","sourceRoot":"","sources":["../../src/toolbar/LinkDialog.native.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAM3D,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACjD,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,2CA0EzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarButton.d.ts","sourceRoot":"","sources":["../../src/toolbar/ToolbarButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAgBvC,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AA4CD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EAAE,WAAW,EAC3B,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAgDpB;AAMD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAgC5B"}
1
+ {"version":3,"file":"ToolbarButton.d.ts","sourceRoot":"","sources":["../../src/toolbar/ToolbarButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBvC,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AA2CD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EAAE,WAAW,EAC3B,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAqDpB;AAMD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAsC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useHorizontalScroll.d.ts","sourceRoot":"","sources":["../../src/toolbar/useHorizontalScroll.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC,EACxE,SAAS,EAAE,KAAK,GAAG,KAAK,GACvB;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAOjD;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,QAsE9E;AAMD;;GAEG;AACH,wBAAgB,yBAAyB;;;;4BAO3B,WAAW;EAWxB;AAMD,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,UAAU,GACX,EAAE,0BAA0B,2CAwI5B"}
1
+ {"version":3,"file":"useHorizontalScroll.d.ts","sourceRoot":"","sources":["../../src/toolbar/useHorizontalScroll.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,aAAa,GAAG,aAAa,CAAC,EACxE,SAAS,EAAE,KAAK,GAAG,KAAK,GACvB;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAOjD;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,QAsE9E;AAMD;;GAEG;AACH,wBAAgB,yBAAyB;;;;4BAO3B,WAAW;EAWxB;AAMD,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,UAAU,GACX,EAAE,0BAA0B,2CAwI5B"}