tldraw 3.16.0-canary.146e95b93256 → 3.16.0-canary.29e7605fd21b

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 (270) hide show
  1. package/dist-cjs/index.d.ts +98 -5
  2. package/dist-cjs/index.js +13 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  5. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  6. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  7. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  8. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
  9. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  11. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  12. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  13. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  14. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  15. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  16. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -12
  17. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  19. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  20. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  21. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  22. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  23. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  24. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  25. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  26. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +3 -3
  27. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +1 -1
  28. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  29. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  31. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/shared/ShapeFill.js +5 -5
  33. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  34. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  35. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  36. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  37. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  38. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  39. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  40. package/dist-cjs/lib/ui/TldrawUi.js +14 -0
  41. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  42. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  43. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  44. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  45. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  46. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  47. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  48. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  49. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  50. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  51. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  52. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  53. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  54. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  55. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  56. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  57. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  58. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  59. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  60. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  61. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  62. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +2 -0
  63. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  64. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +171 -140
  65. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  66. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
  67. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
  68. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
  69. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
  70. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  71. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  72. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  73. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  74. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  75. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  76. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  77. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  78. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  79. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  80. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +5 -16
  81. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
  82. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  83. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  84. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  85. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  86. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +30 -7
  87. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  88. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +253 -0
  89. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  90. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  91. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  92. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  93. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  94. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  95. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +10 -26
  96. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  97. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  98. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  99. package/dist-cjs/lib/ui/context/actions.js +15 -0
  100. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  101. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  102. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  103. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +3 -0
  104. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  105. package/dist-cjs/lib/ui/version.js +3 -3
  106. package/dist-cjs/lib/ui/version.js.map +1 -1
  107. package/dist-esm/index.d.mts +98 -5
  108. package/dist-esm/index.mjs +23 -1
  109. package/dist-esm/index.mjs.map +2 -2
  110. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  111. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  112. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  113. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  114. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  115. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  116. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  117. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  118. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  119. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  120. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  121. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  122. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +13 -12
  123. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  124. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  125. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  126. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  127. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  128. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  129. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  130. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  131. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  132. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +3 -3
  133. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +1 -1
  134. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  135. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  136. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  137. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  138. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +6 -5
  139. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  140. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  141. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  142. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  143. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  144. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  145. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  146. package/dist-esm/lib/ui/TldrawUi.mjs +16 -2
  147. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  148. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  149. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  150. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  151. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  152. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  153. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  154. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  155. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  156. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  157. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  158. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  159. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  160. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  161. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  162. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  163. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  164. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  165. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  166. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  167. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  168. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +3 -1
  169. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  170. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +171 -140
  171. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  172. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
  173. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
  174. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
  175. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  176. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  177. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  178. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  179. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  180. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  181. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  182. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  183. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  184. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  185. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  186. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +6 -6
  187. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  188. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
  189. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  190. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  191. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  192. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +30 -7
  193. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  194. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +230 -0
  195. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  196. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  197. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  198. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  199. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  200. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  201. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +10 -26
  202. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  203. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  204. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  205. package/dist-esm/lib/ui/context/actions.mjs +15 -0
  206. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  207. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  208. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +3 -0
  209. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  210. package/dist-esm/lib/ui/version.mjs +3 -3
  211. package/dist-esm/lib/ui/version.mjs.map +1 -1
  212. package/package.json +3 -3
  213. package/src/index.ts +18 -0
  214. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  215. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  216. package/src/lib/shapes/arrow/arrowTargetState.ts +2 -1
  217. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  218. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  219. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  220. package/src/lib/shapes/frame/FrameShapeUtil.tsx +13 -14
  221. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  222. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  223. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  224. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  225. package/src/lib/shapes/image/ImageShapeUtil.tsx +3 -3
  226. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  227. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  228. package/src/lib/shapes/shared/ShapeFill.tsx +6 -5
  229. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  230. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  231. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  232. package/src/lib/ui/TldrawUi.tsx +17 -2
  233. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  234. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  235. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  236. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  237. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  238. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  239. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  240. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  241. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  242. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  243. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +3 -1
  244. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +146 -107
  245. package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
  246. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
  247. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  248. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  249. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  250. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +14 -11
  251. package/src/lib/ui/components/menu-items.tsx +8 -0
  252. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +40 -37
  253. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
  254. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  255. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +51 -12
  256. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +301 -0
  257. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  258. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  259. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  260. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +13 -25
  261. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  262. package/src/lib/ui/context/actions.tsx +15 -0
  263. package/src/lib/ui/context/events.tsx +1 -0
  264. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +3 -0
  265. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +3 -0
  266. package/src/lib/ui/version.ts +3 -3
  267. package/src/lib/ui.css +402 -292
  268. package/src/test/arrows-megabus.test.tsx +12 -6
  269. package/src/test/inner-outer-margin.test.ts +315 -0
  270. package/tldraw.css +695 -580
@@ -5,6 +5,7 @@ import {
5
5
  TLPointerEventInfo,
6
6
  useEditor,
7
7
  Vec,
8
+ VecModel,
8
9
  } from '@tldraw/editor'
9
10
  import { ContextMenu as _ContextMenu } from 'radix-ui'
10
11
  import { useMemo, useState } from 'react'
@@ -23,6 +24,7 @@ import { TldrawUiDropdownMenuItem } from '../TldrawUiDropdownMenu'
23
24
  import { TLUiIconJsx } from '../TldrawUiIcon'
24
25
  import { TldrawUiKbd } from '../TldrawUiKbd'
25
26
  import { TldrawUiToolbarButton } from '../TldrawUiToolbar'
27
+ import { tooltipManager } from '../TldrawUiTooltip'
26
28
  import { useTldrawUiMenuContext } from './TldrawUiMenuContext'
27
29
 
28
30
  /** @public */
@@ -118,7 +120,6 @@ export function TldrawUiMenuItem<
118
120
  type="menu"
119
121
  data-testid={`${sourceId}.${id}`}
120
122
  disabled={disabled}
121
- title={titleStr}
122
123
  onClick={(e) => {
123
124
  if (noClose) {
124
125
  preventDefault(e)
@@ -144,7 +145,6 @@ export function TldrawUiMenuItem<
144
145
  return (
145
146
  <_ContextMenu.Item
146
147
  dir="ltr"
147
- title={titleStr}
148
148
  draggable={false}
149
149
  className="tlui-button tlui-button__menu"
150
150
  data-testid={`${sourceId}.${id}`}
@@ -166,20 +166,6 @@ export function TldrawUiMenuItem<
166
166
  </_ContextMenu.Item>
167
167
  )
168
168
  }
169
- case 'panel': {
170
- return (
171
- <TldrawUiButton
172
- data-testid={`${sourceId}.${id}`}
173
- type="menu"
174
- title={titleStr}
175
- disabled={disabled}
176
- onClick={() => onSelect(sourceId)}
177
- >
178
- <TldrawUiButtonLabel>{labelStr}</TldrawUiButtonLabel>
179
- {spinner ? <Spinner /> : icon && <TldrawUiButtonIcon icon={icon} />}
180
- </TldrawUiButton>
181
- )
182
- }
183
169
  case 'small-icons':
184
170
  case 'icons': {
185
171
  return (
@@ -274,7 +260,6 @@ export function TldrawUiMenuItem<
274
260
  aria-label={labelStr}
275
261
  aria-pressed={isSelected ? 'true' : 'false'}
276
262
  isActive={isSelected}
277
- className="tlui-button-grid__button"
278
263
  data-testid={`tools.more.${id}`}
279
264
  data-value={id}
280
265
  disabled={disabled}
@@ -304,11 +289,11 @@ function useDraggableEvents(
304
289
  }
305
290
  | {
306
291
  name: 'pointing'
307
- start: Vec
292
+ screenSpaceStart: VecModel
308
293
  }
309
294
  | {
310
295
  name: 'dragging'
311
- start: Vec
296
+ screenSpaceStart: VecModel
312
297
  }
313
298
  | {
314
299
  name: 'dragged'
@@ -317,7 +302,7 @@ function useDraggableEvents(
317
302
  function handlePointerDown(e: React.PointerEvent<HTMLButtonElement>) {
318
303
  state = {
319
304
  name: 'pointing',
320
- start: editor.inputs.currentPagePoint.clone(),
305
+ screenSpaceStart: { x: e.clientX, y: e.clientY },
321
306
  }
322
307
 
323
308
  e.currentTarget.setPointerCapture(e.pointerId)
@@ -327,17 +312,17 @@ function useDraggableEvents(
327
312
  if ((e as any).isSpecialRedispatchedEvent) return
328
313
 
329
314
  if (state.name === 'pointing') {
330
- const distance = Vec.Dist2(state.start, editor.inputs.currentPagePoint)
315
+ const distanceSq = Vec.Dist2(state.screenSpaceStart, { x: e.clientX, y: e.clientY })
331
316
  if (
332
- distance >
317
+ distanceSq >
333
318
  (editor.getInstanceState().isCoarsePointer
334
319
  ? editor.options.coarseDragDistanceSquared
335
320
  : editor.options.dragDistanceSquared)
336
321
  ) {
337
- const start = state.start
322
+ const screenSpaceStart = state.screenSpaceStart
338
323
  state = {
339
324
  name: 'dragging',
340
- start,
325
+ screenSpaceStart,
341
326
  }
342
327
 
343
328
  editor.run(() => {
@@ -347,7 +332,7 @@ function useDraggableEvents(
347
332
  target: 'canvas',
348
333
  name: 'pointer_down',
349
334
  ...getPointerInfo(e),
350
- point: start,
335
+ point: screenSpaceStart,
351
336
  })
352
337
 
353
338
  // Pointer down potentially selects shapes, so we need to deselect them.
@@ -359,7 +344,10 @@ function useDraggableEvents(
359
344
  target: 'canvas',
360
345
  name: 'pointer_move',
361
346
  ...getPointerInfo(e),
347
+ point: screenSpaceStart,
362
348
  })
349
+
350
+ tooltipManager.hideAllTooltips()
363
351
  })
364
352
  }
365
353
  }
@@ -1,6 +1,7 @@
1
1
  import { RecursivePartial, defaultUserPreferences, track, useMaybeEditor } from '@tldraw/editor'
2
2
  import { ReactNode } from 'react'
3
3
  import { TLUiAssetUrls, useDefaultUiAssetUrlsWithOverrides } from '../assetUrls'
4
+ import { TldrawUiTooltipProvider } from '../components/primitives/TldrawUiTooltip'
4
5
  import { ToolsProvider } from '../hooks/useTools'
5
6
  import { TldrawUiTranslationProvider } from '../hooks/useTranslation/useTranslation'
6
7
  import {
@@ -72,26 +73,28 @@ export const TldrawUiContextProvider = track(function TldrawUiContextProvider({
72
73
  const editor = useMaybeEditor()
73
74
  return (
74
75
  <MimeTypeContext.Provider value={mediaMimeTypes}>
75
- <AssetUrlsProvider assetUrls={useDefaultUiAssetUrlsWithOverrides(assetUrls)}>
76
- <TldrawUiTranslationProvider
77
- overrides={useMergedTranslationOverrides(overrides)}
78
- locale={editor?.user.getLocale() ?? defaultUserPreferences.locale}
79
- >
80
- <TldrawUiEventsProvider onEvent={onUiEvent}>
81
- <TldrawUiToastsProvider>
82
- <TldrawUiDialogsProvider context={'tla'}>
83
- <TldrawUiA11yProvider>
84
- <BreakPointProvider forceMobile={forceMobile}>
85
- <TldrawUiComponentsProvider overrides={components}>
86
- <InternalProviders overrides={overrides}>{children}</InternalProviders>
87
- </TldrawUiComponentsProvider>
88
- </BreakPointProvider>
89
- </TldrawUiA11yProvider>
90
- </TldrawUiDialogsProvider>
91
- </TldrawUiToastsProvider>
92
- </TldrawUiEventsProvider>
93
- </TldrawUiTranslationProvider>
94
- </AssetUrlsProvider>
76
+ <TldrawUiTooltipProvider>
77
+ <AssetUrlsProvider assetUrls={useDefaultUiAssetUrlsWithOverrides(assetUrls)}>
78
+ <TldrawUiTranslationProvider
79
+ overrides={useMergedTranslationOverrides(overrides)}
80
+ locale={editor?.user.getLocale() ?? defaultUserPreferences.locale}
81
+ >
82
+ <TldrawUiEventsProvider onEvent={onUiEvent}>
83
+ <TldrawUiToastsProvider>
84
+ <TldrawUiDialogsProvider context={'tla'}>
85
+ <TldrawUiA11yProvider>
86
+ <BreakPointProvider forceMobile={forceMobile}>
87
+ <TldrawUiComponentsProvider overrides={components}>
88
+ <InternalProviders overrides={overrides}>{children}</InternalProviders>
89
+ </TldrawUiComponentsProvider>
90
+ </BreakPointProvider>
91
+ </TldrawUiA11yProvider>
92
+ </TldrawUiDialogsProvider>
93
+ </TldrawUiToastsProvider>
94
+ </TldrawUiEventsProvider>
95
+ </TldrawUiTranslationProvider>
96
+ </AssetUrlsProvider>
97
+ </TldrawUiTooltipProvider>
95
98
  </MimeTypeContext.Provider>
96
99
  )
97
100
  })
@@ -1266,6 +1266,21 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
1266
1266
  },
1267
1267
  checkbox: true,
1268
1268
  },
1269
+ {
1270
+ id: 'toggle-ui-labels',
1271
+ label: {
1272
+ default: 'action.toggle-ui-labels',
1273
+ menu: 'action.toggle-ui-labels.menu',
1274
+ },
1275
+ readonlyOk: true,
1276
+ onSelect(source) {
1277
+ trackEvent('toggle-ui-labels', { source })
1278
+ editor.user.updateUserPreferences({
1279
+ showUiLabels: !editor.user.getShowUiLabels(),
1280
+ })
1281
+ },
1282
+ checkbox: true,
1283
+ },
1269
1284
  {
1270
1285
  id: 'toggle-edge-scrolling',
1271
1286
  label: {
@@ -108,6 +108,7 @@ export interface TLUiEventMap {
108
108
  'toggle-lock': null
109
109
  'toggle-reduce-motion': null
110
110
  'toggle-keyboard-shortcuts': null
111
+ 'toggle-ui-labels': null
111
112
  'toggle-edge-scrolling': null
112
113
  'color-scheme': { value: string }
113
114
  'exit-pen-mode': null
@@ -93,6 +93,8 @@ export type TLUiTranslationKey =
93
93
  | 'action.toggle-reduce-motion'
94
94
  | 'action.toggle-keyboard-shortcuts.menu'
95
95
  | 'action.toggle-keyboard-shortcuts'
96
+ | 'action.toggle-ui-labels.menu'
97
+ | 'action.toggle-ui-labels'
96
98
  | 'action.toggle-edge-scrolling.menu'
97
99
  | 'action.toggle-edge-scrolling'
98
100
  | 'action.toggle-debug-mode.menu'
@@ -298,6 +300,7 @@ export type TLUiTranslationKey =
298
300
  | 'a11y.open-keyboard-shortcuts'
299
301
  | 'menu.title'
300
302
  | 'menu.theme'
303
+ | 'menu.accessibility'
301
304
  | 'menu.copy-as'
302
305
  | 'menu.edit'
303
306
  | 'menu.export-as'
@@ -94,6 +94,8 @@ export const DEFAULT_TRANSLATION = {
94
94
  'action.toggle-reduce-motion': 'Toggle reduce motion',
95
95
  'action.toggle-keyboard-shortcuts.menu': 'Keyboard shortcuts',
96
96
  'action.toggle-keyboard-shortcuts': 'Toggle keyboard shortcuts',
97
+ 'action.toggle-ui-labels.menu': 'UI labels',
98
+ 'action.toggle-ui-labels': 'Toggle UI labels',
97
99
  'action.toggle-edge-scrolling.menu': 'Edge scrolling',
98
100
  'action.toggle-edge-scrolling': 'Toggle edge scrolling',
99
101
  'action.toggle-debug-mode.menu': 'Debug mode',
@@ -299,6 +301,7 @@ export const DEFAULT_TRANSLATION = {
299
301
  'a11y.open-keyboard-shortcuts': 'Open keyboard shortcuts',
300
302
  'menu.title': 'Menu',
301
303
  'menu.theme': 'Theme',
304
+ 'menu.accessibility': 'Accessibility',
302
305
  'menu.copy-as': 'Copy as',
303
306
  'menu.edit': 'Edit',
304
307
  'menu.export-as': 'Export as',
@@ -1,9 +1,9 @@
1
1
  // This file is automatically generated by internal/scripts/refresh-assets.ts.
2
2
  // Do not edit manually. Or do, I'm a comment, not a cop.
3
3
 
4
- export const version = '3.16.0-canary.146e95b93256'
4
+ export const version = '3.16.0-canary.29e7605fd21b'
5
5
  export const publishDates = {
6
6
  major: '2024-09-13T14:36:29.063Z',
7
- minor: '2025-08-01T17:07:44.720Z',
8
- patch: '2025-08-01T17:07:44.720Z',
7
+ minor: '2025-08-13T12:18:03.671Z',
8
+ patch: '2025-08-13T12:18:03.671Z',
9
9
  }