tldraw 3.16.0-canary.8c74738e06fb → 3.16.0-canary.99cd20c3ee29

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 (392) hide show
  1. package/dist-cjs/index.d.ts +191 -6
  2. package/dist-cjs/index.js +21 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/Tldraw.js +12 -2
  5. package/dist-cjs/lib/Tldraw.js.map +2 -2
  6. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  8. package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
  13. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  14. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  15. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  16. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  17. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  19. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  20. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +15 -12
  21. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  22. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  23. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  24. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  25. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  26. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  27. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  28. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  29. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  31. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  33. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  35. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  36. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  37. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  38. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  39. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  40. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  41. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  42. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  43. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  44. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  45. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  46. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  47. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  48. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  49. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  50. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  51. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  52. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  53. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  54. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  55. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  56. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  57. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  58. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  59. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  60. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  61. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  62. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  63. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  64. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  65. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  66. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  67. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  68. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  69. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  70. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  72. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  74. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  75. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  76. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  77. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +2 -0
  78. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +171 -140
  80. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  81. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
  82. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
  83. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
  84. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
  85. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  86. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  87. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  88. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  89. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  90. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  91. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  92. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  93. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  94. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  95. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +5 -16
  96. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
  97. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  98. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  99. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  100. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  101. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +6 -4
  102. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  103. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +30 -7
  104. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  105. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +262 -0
  106. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  107. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  108. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  109. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  110. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  111. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  112. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +12 -26
  113. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  114. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  115. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  116. package/dist-cjs/lib/ui/context/actions.js +31 -2
  117. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  118. package/dist-cjs/lib/ui/context/components.js +2 -0
  119. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  120. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  121. package/dist-cjs/lib/ui/hooks/useTools.js +21 -3
  122. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  123. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  124. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +4 -0
  125. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  126. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  127. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  128. package/dist-cjs/lib/ui/version.js +3 -3
  129. package/dist-cjs/lib/ui/version.js.map +1 -1
  130. package/dist-esm/index.d.mts +191 -6
  131. package/dist-esm/index.mjs +33 -2
  132. package/dist-esm/index.mjs.map +2 -2
  133. package/dist-esm/lib/Tldraw.mjs +14 -4
  134. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  135. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  136. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  137. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  138. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  139. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  140. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  141. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  142. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  143. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  144. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  145. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  146. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  147. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  148. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  149. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +16 -12
  150. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  151. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  152. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  153. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  154. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  155. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  156. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  157. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  158. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  159. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  160. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  161. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  162. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  163. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  164. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  165. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  166. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  167. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  168. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  169. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  170. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  171. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  172. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  173. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  174. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  175. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  176. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  177. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  178. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  179. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  180. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  181. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  182. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  183. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  184. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  185. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  186. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  187. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  188. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  189. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  190. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  191. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  192. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  193. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  194. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  195. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  196. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  197. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  198. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  199. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  200. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  201. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  202. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  203. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  204. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  205. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  206. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +3 -1
  207. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  208. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +171 -140
  209. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  210. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
  211. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
  212. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
  213. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  214. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  215. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  216. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  217. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  218. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  219. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  220. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  221. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  222. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  223. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  224. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +6 -6
  225. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  226. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
  227. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  228. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  229. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  230. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +6 -4
  231. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  232. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +30 -7
  233. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  234. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +239 -0
  235. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  236. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  237. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  238. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  239. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  240. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  241. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +12 -26
  242. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  243. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  244. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  245. package/dist-esm/lib/ui/context/actions.mjs +31 -2
  246. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  247. package/dist-esm/lib/ui/context/components.mjs +2 -0
  248. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  249. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  250. package/dist-esm/lib/ui/hooks/useTools.mjs +22 -3
  251. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  252. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +4 -0
  253. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  254. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  255. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  256. package/dist-esm/lib/ui/version.mjs +3 -3
  257. package/dist-esm/lib/ui/version.mjs.map +1 -1
  258. package/package.json +11 -34
  259. package/src/index.ts +24 -1
  260. package/src/lib/Tldraw.tsx +15 -2
  261. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  262. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  263. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  264. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +4 -3
  265. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +7 -6
  266. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  267. package/src/lib/shapes/arrow/arrowTargetState.ts +2 -1
  268. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  269. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  270. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  271. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  272. package/src/lib/shapes/frame/FrameShapeUtil.tsx +25 -14
  273. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  274. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  275. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  276. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  277. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  278. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  279. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  280. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  281. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  282. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  283. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  284. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  285. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  286. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  287. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  288. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  289. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  290. package/src/lib/ui/TldrawUi.tsx +33 -12
  291. package/src/lib/ui/assetUrls.ts +13 -10
  292. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  293. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  294. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  295. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  296. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  297. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  298. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  299. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  300. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  301. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  302. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  303. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  304. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +3 -1
  305. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +146 -107
  306. package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
  307. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
  308. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  309. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  310. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  311. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +14 -11
  312. package/src/lib/ui/components/menu-items.tsx +8 -0
  313. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +40 -37
  314. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
  315. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  316. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +35 -30
  317. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +51 -12
  318. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +325 -0
  319. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  320. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  321. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  322. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +18 -27
  323. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  324. package/src/lib/ui/context/actions.tsx +31 -2
  325. package/src/lib/ui/context/components.tsx +3 -0
  326. package/src/lib/ui/context/events.tsx +2 -1
  327. package/src/lib/ui/hooks/useTools.tsx +25 -3
  328. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +4 -0
  329. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +4 -0
  330. package/src/lib/ui/kbd-utils.ts +10 -3
  331. package/src/lib/ui/version.ts +3 -3
  332. package/src/lib/ui.css +409 -292
  333. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  334. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  335. package/src/test/A11y.test.tsx +3 -2
  336. package/src/test/ClickManager.test.ts +7 -6
  337. package/src/test/Editor.test.tsx +20 -19
  338. package/src/test/EraserTool.test.ts +184 -13
  339. package/src/test/HandTool.test.ts +10 -9
  340. package/src/test/HighlightShape.test.ts +2 -1
  341. package/src/test/SelectTool.test.ts +3 -2
  342. package/src/test/TLUserPreferences.test.ts +4 -3
  343. package/src/test/TestEditor.ts +13 -15
  344. package/src/test/TldrawEditor.test.tsx +11 -10
  345. package/src/test/ZoomTool.test.ts +7 -6
  346. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  347. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  348. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  349. package/src/test/arrows-megabus.test.tsx +17 -10
  350. package/src/test/bindings.test.tsx +24 -37
  351. package/src/test/bookmark-shapes.test.ts +1 -8
  352. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  353. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  354. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  355. package/src/test/commands/alignShapes.test.tsx +25 -24
  356. package/src/test/commands/animationSpeed.test.ts +2 -1
  357. package/src/test/commands/centerOnPoint.test.ts +3 -2
  358. package/src/test/commands/clipboard.test.ts +3 -2
  359. package/src/test/commands/createShapes.test.ts +2 -1
  360. package/src/test/commands/deleteShapes.test.ts +2 -1
  361. package/src/test/commands/distributeShapes.test.tsx +11 -10
  362. package/src/test/commands/getSvgString.test.ts +2 -1
  363. package/src/test/commands/packShapes.test.ts +5 -4
  364. package/src/test/commands/resizeShape.test.ts +2 -1
  365. package/src/test/commands/rotateShapes.test.ts +7 -6
  366. package/src/test/commands/setCamera.test.ts +4 -3
  367. package/src/test/commands/setCurrentPage.test.ts +3 -2
  368. package/src/test/commands/stackShapes.test.ts +11 -10
  369. package/src/test/commands/stretch.test.tsx +13 -12
  370. package/src/test/createDeepLink.test.tsx +2 -1
  371. package/src/test/cropping.test.ts +3 -2
  372. package/src/test/drawing.test.ts +2 -1
  373. package/src/test/flipShapes.test.ts +4 -3
  374. package/src/test/frames.test.ts +25 -24
  375. package/src/test/getCulledShapes.test.tsx +3 -2
  376. package/src/test/groups.test.tsx +1 -1
  377. package/src/test/handleDeepLink.test.tsx +2 -1
  378. package/src/test/inner-outer-margin.test.ts +315 -0
  379. package/src/test/maxShapes.test.ts +3 -2
  380. package/src/test/modifiers.test.ts +5 -4
  381. package/src/test/navigation.test.ts +12 -11
  382. package/src/test/panning.test.ts +2 -1
  383. package/src/test/perf/perf.test.ts +2 -1
  384. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  385. package/src/test/resizing.test.ts +39 -38
  386. package/src/test/select.test.tsx +4 -3
  387. package/src/test/selection-omnibus.test.ts +11 -10
  388. package/src/test/shapeutils.test.ts +4 -3
  389. package/src/test/translating.test.ts +9 -8
  390. package/tldraw.css +710 -580
  391. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  392. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
@@ -13,11 +13,13 @@ import { CSSProperties } from 'react';
13
13
  import { Editor } from '@tldraw/editor';
14
14
  import { Extension } from '@tiptap/core';
15
15
  import { Extensions } from '@tiptap/core';
16
+ import { ForwardRefExoticComponent } from 'react';
16
17
  import { Geometry2d } from '@tldraw/editor';
17
18
  import { Geometry2dFilters } from '@tldraw/editor';
18
19
  import { Geometry2dOptions } from '@tldraw/editor';
19
20
  import { Group2d } from '@tldraw/editor';
20
21
  import { HandleSnapGeometry } from '@tldraw/editor';
22
+ import { HTMLAttributes } from 'react';
21
23
  import { IndexKey } from '@tldraw/editor';
22
24
  import { JsonObject } from '@tldraw/editor';
23
25
  import { JSX as JSX_2 } from 'react/jsx-runtime';
@@ -37,6 +39,7 @@ import { ReadonlySharedStyleMap } from '@tldraw/editor';
37
39
  import { RecordProps } from '@tldraw/editor';
38
40
  import { Rectangle2d } from '@tldraw/editor';
39
41
  import { RecursivePartial } from '@tldraw/editor';
42
+ import { RefAttributes } from 'react';
40
43
  import { RefObject } from 'react';
41
44
  import { Result } from '@tldraw/editor';
42
45
  import { RichTextFontVisitorState } from '@tldraw/editor';
@@ -148,6 +151,9 @@ export declare interface A11yProviderProps {
148
151
  children: React.ReactNode;
149
152
  }
150
153
 
154
+ /** @public @react */
155
+ export declare function AccessibilityMenu(): JSX_2.Element;
156
+
151
157
  /** @public */
152
158
  export declare interface ActionsProviderProps {
153
159
  overrides?(editor: Editor, actions: TLUiActionsContextType, helpers: TLUiOverrideHelpers): TLUiActionsContextType;
@@ -847,6 +853,9 @@ export declare let defaultEditorAssetUrls: TLEditorAssetUrls;
847
853
  /** @public */
848
854
  export declare type DefaultEmbedDefinitionType = (typeof DEFAULT_EMBED_DEFINITIONS)[number]['type'];
849
855
 
856
+ /** @public @react */
857
+ export declare function DefaultFollowingIndicator(): JSX_2.Element | null;
858
+
850
859
  /** @public */
851
860
  export declare const DefaultFontFaces: TLDefaultFonts;
852
861
 
@@ -1011,6 +1020,11 @@ export declare function DefaultToolbarContent(): JSX_2.Element;
1011
1020
  /** @public */
1012
1021
  export declare interface DefaultToolbarProps {
1013
1022
  children?: ReactNode;
1023
+ orientation?: 'horizontal' | 'vertical';
1024
+ minItems?: number;
1025
+ minSizePx?: number;
1026
+ maxItems?: number;
1027
+ maxSizePx?: number;
1014
1028
  }
1015
1029
 
1016
1030
  /** @public */
@@ -1568,6 +1582,7 @@ export declare class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
1568
1582
  canEdit(): boolean;
1569
1583
  canResize(): boolean;
1570
1584
  canResizeChildren(): boolean;
1585
+ isExportBoundsContainer(): boolean;
1571
1586
  getDefaultProps(): TLFrameShape['props'];
1572
1587
  getAriaDescriptor(shape: TLFrameShape): string;
1573
1588
  getGeometry(shape: TLFrameShape): Geometry2d;
@@ -1769,6 +1784,29 @@ export declare function getHitShapeOnCanvasPointerDown(editor: Editor, hitLabels
1769
1784
  /** @public */
1770
1785
  export declare function getMediaAssetInfoPartial(file: File, assetId: TLAssetId, isImageType: boolean, isVideoType: boolean, maxImageDimension?: number): Promise<TLImageAsset | TLVideoAsset>;
1771
1786
 
1787
+ /**
1788
+ * ## getStrokePoints
1789
+ *
1790
+ * Get an array of points as objects with an adjusted point, pressure, vector, distance, and
1791
+ * runningLength.
1792
+ *
1793
+ * @param points - An array of points (as `[x, y, pressure]` or `{x, y, pressure}`). Pressure is
1794
+ * optional in both cases.
1795
+ * @param options - An object with options.
1796
+ * @public
1797
+ */
1798
+ export declare function getStrokePoints(rawInputPoints: VecLike[], options?: StrokeOptions): StrokePoint[];
1799
+
1800
+ /**
1801
+ * Turn an array of stroke points into a path of quadradic curves.
1802
+ *
1803
+ * @param points - The stroke points returned from perfect-freehand
1804
+ * @param closed - Whether the shape is closed
1805
+ *
1806
+ * @public
1807
+ */
1808
+ export declare function getSvgPathFromStrokePoints(points: StrokePoint[], closed?: boolean): string;
1809
+
1772
1810
  /**
1773
1811
  * Original (uncropped) width and height of shape.
1774
1812
  *
@@ -1864,6 +1902,7 @@ export declare class ImageShapeUtil extends BaseBoxShapeUtil<TLImageShape> {
1864
1902
  static migrations: TLPropsMigrations;
1865
1903
  isAspectRatioLocked(): boolean;
1866
1904
  canCrop(): boolean;
1905
+ isExportBoundsContainer(): boolean;
1867
1906
  getDefaultProps(): TLImageShape['props'];
1868
1907
  getGeometry(shape: TLImageShape): Geometry2d;
1869
1908
  getAriaDescriptor(shape: TLImageShape): string;
@@ -2114,6 +2153,16 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2114
2153
  /** @public @react */
2115
2154
  export declare function NoteToolbarItem(): JSX_2.Element;
2116
2155
 
2156
+ /**
2157
+ * Checks if a file is allowed to be uploaded. If it is not, it will show a toast explaining why to the user.
2158
+ *
2159
+ * @param file - The file to check
2160
+ * @param options - The options for the external content handler
2161
+ * @returns True if the file is allowed, false otherwise
2162
+ * @public
2163
+ */
2164
+ export declare function notifyIfFileNotAllowed(file: File, options: TLDefaultExternalContentHandlerOpts): boolean;
2165
+
2117
2166
  /** @public @react */
2118
2167
  export declare function OfflineIndicator(): JSX_2.Element;
2119
2168
 
@@ -2147,11 +2196,17 @@ export declare function OpacitySlider(): JSX_2.Element | null;
2147
2196
  export declare function OvalToolbarItem(): JSX_2.Element;
2148
2197
 
2149
2198
  /** @public @react */
2150
- export declare function OverflowingToolbar({ children }: OverflowingToolbarProps): JSX_2.Element;
2199
+ export declare function OverflowingToolbar({ children, orientation, sizingParentClassName, minItems, minSizePx, maxItems, maxSizePx, }: OverflowingToolbarProps): JSX_2.Element;
2151
2200
 
2152
2201
  /** @public */
2153
2202
  export declare interface OverflowingToolbarProps {
2154
2203
  children: React.ReactNode;
2204
+ orientation: 'horizontal' | 'vertical';
2205
+ sizingParentClassName: string;
2206
+ minItems: number;
2207
+ minSizePx: number;
2208
+ maxItems: number;
2209
+ maxSizePx: number;
2155
2210
  }
2156
2211
 
2157
2212
  /** @public @react */
@@ -2540,6 +2595,54 @@ export declare function StarToolbarItem(): JSX_2.Element;
2540
2595
  /** @public */
2541
2596
  export declare const STROKE_SIZES: Record<TLDefaultSizeStyle, number>;
2542
2597
 
2598
+ /**
2599
+ * The options object for `getStroke` or `getStrokePoints`.
2600
+ *
2601
+ * @public
2602
+ */
2603
+ export declare interface StrokeOptions {
2604
+ /** The base size (diameter) of the stroke. */
2605
+ size?: number;
2606
+ /** The effect of pressure on the stroke's size. */
2607
+ thinning?: number;
2608
+ /** How much to soften the stroke's edges. */
2609
+ smoothing?: number;
2610
+ streamline?: number;
2611
+ /** An easing function to apply to each point's pressure. */
2612
+ easing?(pressure: number): number;
2613
+ /** Whether to simulate pressure based on velocity. */
2614
+ simulatePressure?: boolean;
2615
+ /** Cap, taper and easing for the start of the line. */
2616
+ start?: {
2617
+ cap?: boolean;
2618
+ easing?(distance: number): number;
2619
+ taper?: boolean | number;
2620
+ };
2621
+ /** Cap, taper and easing for the end of the line. */
2622
+ end?: {
2623
+ cap?: boolean;
2624
+ easing?(distance: number): number;
2625
+ taper?: boolean | number;
2626
+ };
2627
+ /** Whether to handle the points as a completed stroke. */
2628
+ last?: boolean;
2629
+ }
2630
+
2631
+ /**
2632
+ * The points returned by `getStrokePoints`, and the input for `getStrokeOutlinePoints`
2633
+ *
2634
+ * @public
2635
+ */
2636
+ export declare interface StrokePoint {
2637
+ point: Vec;
2638
+ input: Vec;
2639
+ vector: Vec;
2640
+ pressure: number;
2641
+ distance: number;
2642
+ runningLength: number;
2643
+ radius: number;
2644
+ }
2645
+
2543
2646
  /** @public */
2544
2647
  export declare interface StylePickerSetProps {
2545
2648
  styles: ReadonlySharedStyleMap;
@@ -2938,6 +3041,13 @@ export declare function TldrawUiButtonLabel({ children }: TLUiButtonLabelProps):
2938
3041
  /** @public */
2939
3042
  export declare const TldrawUiButtonPicker: <T extends string>(props: TLUiButtonPickerProps<T>) => ReactElement;
2940
3043
 
3044
+ /**
3045
+ * A column, usually of UI controls like buttons, select dropdown, checkboxes, etc.
3046
+ *
3047
+ * @public @react
3048
+ */
3049
+ export declare const TldrawUiColumn: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3050
+
2941
3051
  /** @public @react */
2942
3052
  export declare function TldrawUiComponentsProvider({ overrides, children, }: TLUiComponentsProviderProps): JSX_2.Element;
2943
3053
 
@@ -3000,9 +3110,19 @@ export declare function TldrawUiDropdownMenuTrigger({ children, ...rest }: TLUiD
3000
3110
  /** @public @react */
3001
3111
  export declare function TldrawUiEventsProvider({ onEvent, children }: EventsProviderProps): JSX_2.Element;
3002
3112
 
3113
+ /**
3114
+ * A tight grid 4 elements wide, usually of UI controls like buttons, select dropdown, checkboxes,
3115
+ * etc.
3116
+ *
3117
+ * @public @react */
3118
+ export declare const TldrawUiGrid: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3119
+
3003
3120
  /** @public @react */
3004
3121
  export declare const TldrawUiIcon: NamedExoticComponent<TLUiIconProps>;
3005
3122
 
3123
+ /** @public @react */
3124
+ export declare function TldrawUiInFrontOfTheCanvas(): JSX_2.Element;
3125
+
3006
3126
  /** @public @react */
3007
3127
  export declare const TldrawUiInput: React_2.ForwardRefExoticComponent<TLUiInputProps & React_2.RefAttributes<HTMLInputElement>>;
3008
3128
 
@@ -3033,8 +3153,24 @@ export declare function TldrawUiMenuSubmenu<Translation extends string = string>
3033
3153
  /** @public @react */
3034
3154
  export declare function TldrawUiMenuToolItem({ toolId, ...rest }: TLUiMenuToolItemProps): JSX_2.Element | null;
3035
3155
 
3156
+ /** @public */
3157
+ export declare interface TldrawUiOrientationContext {
3158
+ orientation: 'horizontal' | 'vertical';
3159
+ tooltipSide: 'bottom' | 'left' | 'right' | 'top';
3160
+ }
3161
+
3162
+ /** @public @react */
3163
+ export declare function TldrawUiOrientationProvider({ children, orientation, tooltipSide, }: TldrawUiOrientationProviderProps): JSX_2.Element;
3164
+
3165
+ /** @public */
3166
+ export declare interface TldrawUiOrientationProviderProps {
3167
+ children: ReactNode;
3168
+ orientation: 'horizontal' | 'vertical';
3169
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3170
+ }
3171
+
3036
3172
  /** @public @react */
3037
- export declare function TldrawUiPopover({ id, children, onOpenChange, open }: TLUiPopoverProps): JSX_2.Element;
3173
+ export declare function TldrawUiPopover({ id, children, onOpenChange, open, className }: TLUiPopoverProps): JSX_2.Element;
3038
3174
 
3039
3175
  /** @public @react */
3040
3176
  export declare function TldrawUiPopoverContent({ side, children, align, sideOffset, alignOffset, disableEscapeKeyDown, autoFocusFirstButton, }: TLUiPopoverContentProps): JSX_2.Element;
@@ -3064,6 +3200,13 @@ export declare interface TldrawUiProps extends TLUiContextProviderProps {
3064
3200
  assetUrls?: TLUiAssetUrlOverrides;
3065
3201
  }
3066
3202
 
3203
+ /**
3204
+ * A row, usually of UI controls like buttons, select dropdown, checkboxes, etc.
3205
+ *
3206
+ * @public @react
3207
+ */
3208
+ export declare const TldrawUiRow: ForwardRefExoticComponent<TLUiLayoutProps & RefAttributes<HTMLDivElement>>;
3209
+
3067
3210
  /** @public @react */
3068
3211
  export declare const TldrawUiSlider: React_3.ForwardRefExoticComponent<TLUiSliderProps & React_3.RefAttributes<HTMLDivElement>>;
3069
3212
 
@@ -3080,7 +3223,29 @@ export declare const TldrawUiToolbarButton: React_3.ForwardRefExoticComponent<TL
3080
3223
  export declare const TldrawUiToolbarToggleGroup: ({ children, className, type, ...props }: TLUiToolbarToggleGroupProps) => JSX_2.Element;
3081
3224
 
3082
3225
  /** @public @react */
3083
- export declare const TldrawUiToolbarToggleItem: ({ children, className, type, value, ...props }: TLUiToolbarToggleItemProps) => JSX_2.Element;
3226
+ export declare const TldrawUiToolbarToggleItem: ({ children, className, type, value, tooltip, ...props }: TLUiToolbarToggleItemProps) => JSX_2.Element;
3227
+
3228
+ /** @public @react */
3229
+ export declare const TldrawUiTooltip: React_3.ForwardRefExoticComponent<TldrawUiTooltipProps & React_3.RefAttributes<HTMLButtonElement>>;
3230
+
3231
+ /** @public */
3232
+ export declare interface TldrawUiTooltipProps {
3233
+ children: React_3.ReactNode;
3234
+ content?: React_3.ReactNode | string;
3235
+ side?: 'bottom' | 'left' | 'right' | 'top';
3236
+ sideOffset?: number;
3237
+ disabled?: boolean;
3238
+ showOnMobile?: boolean;
3239
+ delayDuration?: number;
3240
+ }
3241
+
3242
+ /** @public @react */
3243
+ export declare function TldrawUiTooltipProvider({ children }: TldrawUiTooltipProviderProps): JSX_2.Element;
3244
+
3245
+ /** @public */
3246
+ export declare interface TldrawUiTooltipProviderProps {
3247
+ children: React_3.ReactNode;
3248
+ }
3084
3249
 
3085
3250
  /* Excluded from this release type: TldrawUiTranslationProvider */
3086
3251
 
@@ -3288,6 +3453,7 @@ export declare interface TLUiComponents {
3288
3453
  Dialogs?: ComponentType | null;
3289
3454
  Toasts?: ComponentType | null;
3290
3455
  A11y?: ComponentType | null;
3456
+ FollowingIndicator?: ComponentType | null;
3291
3457
  }
3292
3458
 
3293
3459
  /** @public */
@@ -3595,6 +3761,7 @@ export declare interface TLUiEventMap {
3595
3761
  'toggle-lock': null;
3596
3762
  'toggle-reduce-motion': null;
3597
3763
  'toggle-keyboard-shortcuts': null;
3764
+ 'toggle-ui-labels': null;
3598
3765
  'toggle-edge-scrolling': null;
3599
3766
  'color-scheme': {
3600
3767
  value: string;
@@ -3612,7 +3779,7 @@ export declare interface TLUiEventMap {
3612
3779
  'flatten-to-image': null;
3613
3780
  'a11y-repeat-shape-announce': null;
3614
3781
  'open-url': {
3615
- url: string;
3782
+ destinationUrl: string;
3616
3783
  };
3617
3784
  'open-context-menu': null;
3618
3785
  'adjust-shape-styles': null;
@@ -3706,6 +3873,13 @@ export declare type TLUiKeyboardShortcutsDialogProps = TLUiDialogProps & {
3706
3873
  children?: ReactNode;
3707
3874
  };
3708
3875
 
3876
+ /** @public */
3877
+ export declare interface TLUiLayoutProps extends HTMLAttributes<HTMLDivElement> {
3878
+ children: ReactNode;
3879
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3880
+ asChild?: boolean;
3881
+ }
3882
+
3709
3883
  /** @public */
3710
3884
  export declare interface TLUiMainMenuProps {
3711
3885
  children?: ReactNode;
@@ -3745,7 +3919,7 @@ export declare interface TLUiMenuContextProviderProps {
3745
3919
  }
3746
3920
 
3747
3921
  /** @public */
3748
- export declare type TLUiMenuContextType = 'context-menu' | 'helper-buttons' | 'icons' | 'keyboard-shortcuts' | 'menu' | 'panel' | 'small-icons' | 'toolbar-overflow' | 'toolbar';
3922
+ export declare type TLUiMenuContextType = 'context-menu' | 'helper-buttons' | 'icons' | 'keyboard-shortcuts' | 'menu' | 'small-icons' | 'toolbar-overflow' | 'toolbar';
3749
3923
 
3750
3924
  /** @public */
3751
3925
  export declare interface TLUiMenuGroupProps<TranslationKey extends string = string> {
@@ -3854,6 +4028,7 @@ export declare interface TLUiPopoverProps {
3854
4028
  open?: boolean;
3855
4029
  children: React_3.ReactNode;
3856
4030
  onOpenChange?(isOpen: boolean): void;
4031
+ className?: string;
3857
4032
  }
3858
4033
 
3859
4034
  /** @public */
@@ -3939,6 +4114,7 @@ export declare interface TLUiToolbarButtonProps extends React_3.HTMLAttributes<H
3939
4114
  disabled?: boolean;
3940
4115
  isActive?: boolean;
3941
4116
  type: 'icon' | 'menu' | 'tool';
4117
+ tooltip?: string;
3942
4118
  }
3943
4119
 
3944
4120
  /** @public */
@@ -3947,6 +4123,8 @@ export declare interface TLUiToolbarProps extends React_3.HTMLAttributes<HTMLDiv
3947
4123
  className?: string;
3948
4124
  dir?: 'ltr' | 'rtl';
3949
4125
  label: string;
4126
+ orientation?: 'grid' | 'horizontal' | 'vertical';
4127
+ tooltipSide?: 'bottom' | 'left' | 'right' | 'top';
3950
4128
  }
3951
4129
 
3952
4130
  /** @public */
@@ -3965,6 +4143,7 @@ export declare interface TLUiToolbarToggleItemProps extends React_3.HTMLAttribut
3965
4143
  className?: string;
3966
4144
  type: 'icon' | 'tool';
3967
4145
  value: string;
4146
+ tooltip?: string;
3968
4147
  }
3969
4148
 
3970
4149
  /** @public */
@@ -4010,7 +4189,7 @@ export declare interface TLUiTranslation {
4010
4189
  export declare type TLUiTranslationContextType = TLUiTranslation;
4011
4190
 
4012
4191
  /** @public */
4013
- export declare type TLUiTranslationKey = 'a11y.adjust-shape-styles' | 'a11y.enlarge-shape' | 'a11y.enter-leave-container' | 'a11y.move-shape-faster' | 'a11y.move-shape' | 'a11y.multiple-shapes' | 'a11y.open-context-menu' | 'a11y.open-keyboard-shortcuts' | 'a11y.pan-camera' | 'a11y.repeat-shape' | 'a11y.rotate-shape-ccw-fine' | 'a11y.rotate-shape-ccw' | 'a11y.rotate-shape-cw-fine' | 'a11y.rotate-shape-cw' | 'a11y.select-shape-direction' | 'a11y.select-shape' | 'a11y.shape-image' | 'a11y.shape-index' | 'a11y.shape-video' | 'a11y.shrink-shape' | 'a11y.skip-to-main-content' | 'a11y.status' | 'action.align-bottom' | 'action.align-center-horizontal.short' | 'action.align-center-horizontal' | 'action.align-center-vertical.short' | 'action.align-center-vertical' | 'action.align-left' | 'action.align-right' | 'action.align-top' | 'action.back-to-content' | 'action.bring-forward' | 'action.bring-to-front' | 'action.convert-to-bookmark' | 'action.convert-to-embed' | 'action.copy-as-png.short' | 'action.copy-as-png' | 'action.copy-as-svg.short' | 'action.copy-as-svg' | 'action.copy' | 'action.cut' | 'action.delete' | 'action.distribute-horizontal.short' | 'action.distribute-horizontal' | 'action.distribute-vertical.short' | 'action.distribute-vertical' | 'action.download-original' | 'action.duplicate' | 'action.edit-link' | 'action.exit-pen-mode' | 'action.export-all-as-png.short' | 'action.export-all-as-png' | 'action.export-all-as-svg.short' | 'action.export-all-as-svg' | 'action.export-as-png.short' | 'action.export-as-png' | 'action.export-as-svg.short' | 'action.export-as-svg' | 'action.fit-frame-to-content' | 'action.flatten-to-image' | 'action.flip-horizontal.short' | 'action.flip-horizontal' | 'action.flip-vertical.short' | 'action.flip-vertical' | 'action.fork-project-on-tldraw' | 'action.fork-project' | 'action.group' | 'action.insert-embed' | 'action.insert-media' | 'action.leave-shared-project' | 'action.new-project' | 'action.new-shared-project' | 'action.open-cursor-chat' | 'action.open-embed-link' | 'action.open-file' | 'action.open-kbd-shortcuts' | 'action.pack' | 'action.paste-error-description' | 'action.paste-error-title' | 'action.paste' | 'action.print' | 'action.redo' | 'action.remove-frame' | 'action.rename' | 'action.rotate-ccw' | 'action.rotate-cw' | 'action.save-copy' | 'action.select-all' | 'action.select-none' | 'action.send-backward' | 'action.send-to-back' | 'action.share-project' | 'action.stack-horizontal.short' | 'action.stack-horizontal' | 'action.stack-vertical.short' | 'action.stack-vertical' | 'action.stop-following' | 'action.stretch-horizontal.short' | 'action.stretch-horizontal' | 'action.stretch-vertical.short' | 'action.stretch-vertical' | 'action.toggle-auto-size' | 'action.toggle-dark-mode.menu' | 'action.toggle-dark-mode' | 'action.toggle-debug-mode.menu' | 'action.toggle-debug-mode' | 'action.toggle-dynamic-size-mode.menu' | 'action.toggle-dynamic-size-mode' | 'action.toggle-edge-scrolling.menu' | 'action.toggle-edge-scrolling' | 'action.toggle-focus-mode.menu' | 'action.toggle-focus-mode' | 'action.toggle-grid.menu' | 'action.toggle-grid' | 'action.toggle-keyboard-shortcuts.menu' | 'action.toggle-keyboard-shortcuts' | 'action.toggle-lock' | 'action.toggle-paste-at-cursor.menu' | 'action.toggle-paste-at-cursor' | 'action.toggle-reduce-motion.menu' | 'action.toggle-reduce-motion' | 'action.toggle-snap-mode.menu' | 'action.toggle-snap-mode' | 'action.toggle-tool-lock.menu' | 'action.toggle-tool-lock' | 'action.toggle-transparent.context-menu' | 'action.toggle-transparent.menu' | 'action.toggle-transparent' | 'action.toggle-wrap-mode.menu' | 'action.toggle-wrap-mode' | 'action.undo' | 'action.ungroup' | 'action.unlock-all' | 'action.zoom-in' | 'action.zoom-out' | 'action.zoom-to-100' | 'action.zoom-to-fit' | 'action.zoom-to-selection' | 'actions-menu.title' | 'align-style.end' | 'align-style.justify' | 'align-style.middle' | 'align-style.start' | 'app.loading' | 'arrow-kind-style.arc' | 'arrow-kind-style.elbow' | 'arrowheadEnd-style.arrow' | 'arrowheadEnd-style.bar' | 'arrowheadEnd-style.diamond' | 'arrowheadEnd-style.dot' | 'arrowheadEnd-style.inverted' | 'arrowheadEnd-style.none' | 'arrowheadEnd-style.pipe' | 'arrowheadEnd-style.square' | 'arrowheadEnd-style.triangle' | 'arrowheadStart-style.arrow' | 'arrowheadStart-style.bar' | 'arrowheadStart-style.diamond' | 'arrowheadStart-style.dot' | 'arrowheadStart-style.inverted' | 'arrowheadStart-style.none' | 'arrowheadStart-style.pipe' | 'arrowheadStart-style.square' | 'arrowheadStart-style.triangle' | 'assets.files.amount-too-many' | 'assets.files.size-too-big' | 'assets.files.type-not-allowed' | 'assets.files.upload-failed' | 'assets.url.failed' | 'color-style.black' | 'color-style.blue' | 'color-style.green' | 'color-style.grey' | 'color-style.light-blue' | 'color-style.light-green' | 'color-style.light-red' | 'color-style.light-violet' | 'color-style.orange' | 'color-style.red' | 'color-style.violet' | 'color-style.white' | 'color-style.yellow' | 'context-menu.arrange' | 'context-menu.copy-as' | 'context-menu.edit' | 'context-menu.export-all-as' | 'context-menu.export-as' | 'context-menu.move-to-page' | 'context-menu.reorder' | 'context-menu.title' | 'context.pages.new-page' | 'cursor-chat.type-to-chat' | 'dash-style.dashed' | 'dash-style.dotted' | 'dash-style.draw' | 'dash-style.solid' | 'document-name-menu.copy-link' | 'document.default-name' | 'edit-link-dialog.cancel' | 'edit-link-dialog.clear' | 'edit-link-dialog.detail' | 'edit-link-dialog.external-link' | 'edit-link-dialog.invalid-url' | 'edit-link-dialog.save' | 'edit-link-dialog.title' | 'edit-link-dialog.url' | 'embed-dialog.back' | 'embed-dialog.cancel' | 'embed-dialog.create' | 'embed-dialog.instruction' | 'embed-dialog.invalid-url' | 'embed-dialog.title' | 'embed-dialog.url' | 'file-system.confirm-clear.cancel' | 'file-system.confirm-clear.continue' | 'file-system.confirm-clear.description' | 'file-system.confirm-clear.dont-show-again' | 'file-system.confirm-clear.title' | 'file-system.confirm-open.cancel' | 'file-system.confirm-open.description' | 'file-system.confirm-open.dont-show-again' | 'file-system.confirm-open.open' | 'file-system.confirm-open.title' | 'file-system.file-open-error.file-format-version-too-new' | 'file-system.file-open-error.generic-corrupted-file' | 'file-system.file-open-error.not-a-tldraw-file' | 'file-system.file-open-error.title' | 'file-system.shared-document-file-open-error.description' | 'file-system.shared-document-file-open-error.title' | 'fill-style.fill' | 'fill-style.none' | 'fill-style.pattern' | 'fill-style.semi' | 'fill-style.solid' | 'focus-mode.toggle-focus-mode' | 'font-style.draw' | 'font-style.mono' | 'font-style.sans' | 'font-style.serif' | 'geo-style.arrow-down' | 'geo-style.arrow-left' | 'geo-style.arrow-right' | 'geo-style.arrow-up' | 'geo-style.check-box' | 'geo-style.cloud' | 'geo-style.diamond' | 'geo-style.ellipse' | 'geo-style.heart' | 'geo-style.hexagon' | 'geo-style.octagon' | 'geo-style.oval' | 'geo-style.pentagon' | 'geo-style.rectangle' | 'geo-style.rhombus' | 'geo-style.star' | 'geo-style.trapezoid' | 'geo-style.triangle' | 'geo-style.x-box' | 'handle.crop.bottom-left' | 'handle.crop.bottom-right' | 'handle.crop.bottom' | 'handle.crop.left' | 'handle.crop.right' | 'handle.crop.top-left' | 'handle.crop.top-right' | 'handle.crop.top' | 'handle.resize-bottom-left' | 'handle.resize-bottom-right' | 'handle.resize-bottom' | 'handle.resize-left' | 'handle.resize-right' | 'handle.resize-top-left' | 'handle.resize-top-right' | 'handle.resize-top' | 'handle.rotate.bottom_left_rotate' | 'handle.rotate.bottom_right_rotate' | 'handle.rotate.mobile_rotate' | 'handle.rotate.top_left_rotate' | 'handle.rotate.top_right_rotate' | 'help-menu.about' | 'help-menu.discord' | 'help-menu.github' | 'help-menu.import-tldr-file' | 'help-menu.keyboard-shortcuts' | 'help-menu.privacy' | 'help-menu.terms' | 'help-menu.title' | 'help-menu.twitter' | 'menu.copy-as' | 'menu.edit' | 'menu.export-as' | 'menu.file' | 'menu.language' | 'menu.preferences' | 'menu.theme' | 'menu.title' | 'menu.view' | 'navigation-zone.minimap' | 'navigation-zone.title' | 'navigation-zone.toggle-minimap' | 'navigation-zone.zoom' | 'opacity-style.0.1' | 'opacity-style.0.25' | 'opacity-style.0.5' | 'opacity-style.0.75' | 'opacity-style.1' | 'page-menu.create-new-page' | 'page-menu.edit-done' | 'page-menu.edit-start' | 'page-menu.go-to-page' | 'page-menu.max-page-count-reached' | 'page-menu.new-page-initial-name' | 'page-menu.submenu.delete' | 'page-menu.submenu.duplicate-page' | 'page-menu.submenu.move-down' | 'page-menu.submenu.move-up' | 'page-menu.submenu.rename' | 'page-menu.submenu.title' | 'page-menu.title' | 'people-menu.anonymous-user' | 'people-menu.avatar-color' | 'people-menu.change-color' | 'people-menu.change-name' | 'people-menu.follow' | 'people-menu.following' | 'people-menu.invite' | 'people-menu.leading' | 'people-menu.title' | 'people-menu.user' | 'share-menu.copied' | 'share-menu.copy-link-note' | 'share-menu.copy-link' | 'share-menu.copy-readonly-link-note' | 'share-menu.copy-readonly-link' | 'share-menu.create-snapshot-link' | 'share-menu.creating-project' | 'share-menu.fork-note' | 'share-menu.offline-note' | 'share-menu.project-too-large' | 'share-menu.save-note' | 'share-menu.share-project' | 'share-menu.snapshot-link-note' | 'share-menu.title' | 'share-menu.upload-failed' | 'sharing.confirm-leave.cancel' | 'sharing.confirm-leave.description' | 'sharing.confirm-leave.dont-show-again' | 'sharing.confirm-leave.leave' | 'sharing.confirm-leave.title' | 'shortcuts-dialog.a11y' | 'shortcuts-dialog.collaboration' | 'shortcuts-dialog.edit' | 'shortcuts-dialog.file' | 'shortcuts-dialog.preferences' | 'shortcuts-dialog.text-formatting' | 'shortcuts-dialog.title' | 'shortcuts-dialog.tools' | 'shortcuts-dialog.transform' | 'shortcuts-dialog.view' | 'size-style.l' | 'size-style.m' | 'size-style.s' | 'size-style.xl' | 'spline-style.cubic' | 'spline-style.line' | 'status.offline' | 'style-panel.align' | 'style-panel.arrow-kind' | 'style-panel.arrowhead-end' | 'style-panel.arrowhead-start' | 'style-panel.arrowheads' | 'style-panel.color' | 'style-panel.dash' | 'style-panel.fill' | 'style-panel.font' | 'style-panel.geo' | 'style-panel.label-align' | 'style-panel.mixed' | 'style-panel.opacity' | 'style-panel.position' | 'style-panel.size' | 'style-panel.spline' | 'style-panel.title' | 'style-panel.vertical-align' | 'theme.dark' | 'theme.light' | 'theme.system' | 'toast.close' | 'toast.error.copy-fail.desc' | 'toast.error.copy-fail.title' | 'toast.error.export-fail.desc' | 'toast.error.export-fail.title' | 'toast.error' | 'toast.info' | 'toast.success' | 'toast.warning' | 'tool-panel.more' | 'tool-panel.title' | 'tool.arrow-down' | 'tool.arrow-left' | 'tool.arrow-right' | 'tool.arrow-up' | 'tool.arrow' | 'tool.aspect-ratio.circle' | 'tool.aspect-ratio.landscape' | 'tool.aspect-ratio.original' | 'tool.aspect-ratio.portrait' | 'tool.aspect-ratio.square' | 'tool.aspect-ratio.wide' | 'tool.aspect-ratio' | 'tool.bookmark' | 'tool.check-box' | 'tool.cloud' | 'tool.diamond' | 'tool.draw' | 'tool.ellipse' | 'tool.embed' | 'tool.eraser' | 'tool.flip-horz' | 'tool.flip-vert' | 'tool.frame' | 'tool.hand' | 'tool.heart' | 'tool.hexagon' | 'tool.highlight' | 'tool.image-crop' | 'tool.image-toolbar-title' | 'tool.image-zoom' | 'tool.laser' | 'tool.line' | 'tool.media-alt-text-confirm' | 'tool.media-alt-text-desc' | 'tool.media-alt-text' | 'tool.media' | 'tool.note' | 'tool.octagon' | 'tool.oval' | 'tool.pentagon' | 'tool.pointer-down' | 'tool.rectangle' | 'tool.replace-media' | 'tool.rhombus' | 'tool.rich-text-bold' | 'tool.rich-text-bulletList' | 'tool.rich-text-code' | 'tool.rich-text-header' | 'tool.rich-text-highlight' | 'tool.rich-text-italic' | 'tool.rich-text-link-remove' | 'tool.rich-text-link-visit' | 'tool.rich-text-link' | 'tool.rich-text-orderedList' | 'tool.rich-text-strikethrough' | 'tool.rich-text-toolbar-title' | 'tool.rotate-cw' | 'tool.select' | 'tool.star' | 'tool.text' | 'tool.trapezoid' | 'tool.triangle' | 'tool.x-box' | 'ui.checked' | 'ui.close' | 'ui.unchecked' | 'verticalAlign-style.end' | 'verticalAlign-style.middle' | 'verticalAlign-style.start' | 'vscode.file-open.backup-failed' | 'vscode.file-open.backup-saved' | 'vscode.file-open.backup' | 'vscode.file-open.desc' | 'vscode.file-open.dont-show-again' | 'vscode.file-open.open';
4192
+ export declare type TLUiTranslationKey = 'a11y.adjust-shape-styles' | 'a11y.enlarge-shape' | 'a11y.enter-leave-container' | 'a11y.move-shape-faster' | 'a11y.move-shape' | 'a11y.multiple-shapes' | 'a11y.open-context-menu' | 'a11y.open-keyboard-shortcuts' | 'a11y.pan-camera' | 'a11y.repeat-shape' | 'a11y.rotate-shape-ccw-fine' | 'a11y.rotate-shape-ccw' | 'a11y.rotate-shape-cw-fine' | 'a11y.rotate-shape-cw' | 'a11y.select-shape-direction' | 'a11y.select-shape' | 'a11y.shape-image' | 'a11y.shape-index' | 'a11y.shape-video' | 'a11y.shrink-shape' | 'a11y.skip-to-main-content' | 'a11y.status' | 'action.align-bottom' | 'action.align-center-horizontal.short' | 'action.align-center-horizontal' | 'action.align-center-vertical.short' | 'action.align-center-vertical' | 'action.align-left' | 'action.align-right' | 'action.align-top' | 'action.back-to-content' | 'action.bring-forward' | 'action.bring-to-front' | 'action.convert-to-bookmark' | 'action.convert-to-embed' | 'action.copy-as-png.short' | 'action.copy-as-png' | 'action.copy-as-svg.short' | 'action.copy-as-svg' | 'action.copy' | 'action.cut' | 'action.delete' | 'action.distribute-horizontal.short' | 'action.distribute-horizontal' | 'action.distribute-vertical.short' | 'action.distribute-vertical' | 'action.download-original' | 'action.duplicate' | 'action.edit-link' | 'action.exit-pen-mode' | 'action.export-all-as-png.short' | 'action.export-all-as-png' | 'action.export-all-as-svg.short' | 'action.export-all-as-svg' | 'action.export-as-png.short' | 'action.export-as-png' | 'action.export-as-svg.short' | 'action.export-as-svg' | 'action.fit-frame-to-content' | 'action.flatten-to-image' | 'action.flip-horizontal.short' | 'action.flip-horizontal' | 'action.flip-vertical.short' | 'action.flip-vertical' | 'action.fork-project-on-tldraw' | 'action.fork-project' | 'action.group' | 'action.insert-embed' | 'action.insert-media' | 'action.leave-shared-project' | 'action.new-project' | 'action.new-shared-project' | 'action.open-cursor-chat' | 'action.open-embed-link' | 'action.open-file' | 'action.open-kbd-shortcuts' | 'action.pack' | 'action.paste-error-description' | 'action.paste-error-title' | 'action.paste' | 'action.print' | 'action.redo' | 'action.remove-frame' | 'action.rename' | 'action.rotate-ccw' | 'action.rotate-cw' | 'action.save-copy' | 'action.select-all' | 'action.select-none' | 'action.send-backward' | 'action.send-to-back' | 'action.share-project' | 'action.stack-horizontal.short' | 'action.stack-horizontal' | 'action.stack-vertical.short' | 'action.stack-vertical' | 'action.stop-following' | 'action.stretch-horizontal.short' | 'action.stretch-horizontal' | 'action.stretch-vertical.short' | 'action.stretch-vertical' | 'action.toggle-auto-size' | 'action.toggle-dark-mode.menu' | 'action.toggle-dark-mode' | 'action.toggle-debug-mode.menu' | 'action.toggle-debug-mode' | 'action.toggle-dynamic-size-mode.menu' | 'action.toggle-dynamic-size-mode' | 'action.toggle-edge-scrolling.menu' | 'action.toggle-edge-scrolling' | 'action.toggle-focus-mode.menu' | 'action.toggle-focus-mode' | 'action.toggle-grid.menu' | 'action.toggle-grid' | 'action.toggle-keyboard-shortcuts.menu' | 'action.toggle-keyboard-shortcuts' | 'action.toggle-lock' | 'action.toggle-paste-at-cursor.menu' | 'action.toggle-paste-at-cursor' | 'action.toggle-reduce-motion.menu' | 'action.toggle-reduce-motion' | 'action.toggle-snap-mode.menu' | 'action.toggle-snap-mode' | 'action.toggle-tool-lock.menu' | 'action.toggle-tool-lock' | 'action.toggle-transparent.context-menu' | 'action.toggle-transparent.menu' | 'action.toggle-transparent' | 'action.toggle-ui-labels.menu' | 'action.toggle-ui-labels' | 'action.toggle-wrap-mode.menu' | 'action.toggle-wrap-mode' | 'action.undo' | 'action.ungroup' | 'action.unlock-all' | 'action.zoom-in' | 'action.zoom-out' | 'action.zoom-to-100' | 'action.zoom-to-fit' | 'action.zoom-to-selection' | 'actions-menu.title' | 'align-style.end' | 'align-style.justify' | 'align-style.middle' | 'align-style.start' | 'app.loading' | 'arrow-kind-style.arc' | 'arrow-kind-style.elbow' | 'arrowheadEnd-style.arrow' | 'arrowheadEnd-style.bar' | 'arrowheadEnd-style.diamond' | 'arrowheadEnd-style.dot' | 'arrowheadEnd-style.inverted' | 'arrowheadEnd-style.none' | 'arrowheadEnd-style.pipe' | 'arrowheadEnd-style.square' | 'arrowheadEnd-style.triangle' | 'arrowheadStart-style.arrow' | 'arrowheadStart-style.bar' | 'arrowheadStart-style.diamond' | 'arrowheadStart-style.dot' | 'arrowheadStart-style.inverted' | 'arrowheadStart-style.none' | 'arrowheadStart-style.pipe' | 'arrowheadStart-style.square' | 'arrowheadStart-style.triangle' | 'assets.files.amount-too-many' | 'assets.files.size-too-big' | 'assets.files.type-not-allowed' | 'assets.files.upload-failed' | 'assets.url.failed' | 'color-style.black' | 'color-style.blue' | 'color-style.green' | 'color-style.grey' | 'color-style.light-blue' | 'color-style.light-green' | 'color-style.light-red' | 'color-style.light-violet' | 'color-style.orange' | 'color-style.red' | 'color-style.violet' | 'color-style.white' | 'color-style.yellow' | 'context-menu.arrange' | 'context-menu.copy-as' | 'context-menu.edit' | 'context-menu.export-all-as' | 'context-menu.export-as' | 'context-menu.move-to-page' | 'context-menu.reorder' | 'context-menu.title' | 'context.pages.new-page' | 'cursor-chat.type-to-chat' | 'dash-style.dashed' | 'dash-style.dotted' | 'dash-style.draw' | 'dash-style.solid' | 'document-name-menu.copy-link' | 'document.default-name' | 'edit-link-dialog.cancel' | 'edit-link-dialog.clear' | 'edit-link-dialog.detail' | 'edit-link-dialog.external-link' | 'edit-link-dialog.invalid-url' | 'edit-link-dialog.save' | 'edit-link-dialog.title' | 'edit-link-dialog.url' | 'embed-dialog.back' | 'embed-dialog.cancel' | 'embed-dialog.create' | 'embed-dialog.instruction' | 'embed-dialog.invalid-url' | 'embed-dialog.title' | 'embed-dialog.url' | 'file-system.confirm-clear.cancel' | 'file-system.confirm-clear.continue' | 'file-system.confirm-clear.description' | 'file-system.confirm-clear.dont-show-again' | 'file-system.confirm-clear.title' | 'file-system.confirm-open.cancel' | 'file-system.confirm-open.description' | 'file-system.confirm-open.dont-show-again' | 'file-system.confirm-open.open' | 'file-system.confirm-open.title' | 'file-system.file-open-error.file-format-version-too-new' | 'file-system.file-open-error.generic-corrupted-file' | 'file-system.file-open-error.not-a-tldraw-file' | 'file-system.file-open-error.title' | 'file-system.shared-document-file-open-error.description' | 'file-system.shared-document-file-open-error.title' | 'fill-style.fill' | 'fill-style.none' | 'fill-style.pattern' | 'fill-style.semi' | 'fill-style.solid' | 'focus-mode.toggle-focus-mode' | 'font-style.draw' | 'font-style.mono' | 'font-style.sans' | 'font-style.serif' | 'geo-style.arrow-down' | 'geo-style.arrow-left' | 'geo-style.arrow-right' | 'geo-style.arrow-up' | 'geo-style.check-box' | 'geo-style.cloud' | 'geo-style.diamond' | 'geo-style.ellipse' | 'geo-style.heart' | 'geo-style.hexagon' | 'geo-style.octagon' | 'geo-style.oval' | 'geo-style.pentagon' | 'geo-style.rectangle' | 'geo-style.rhombus-2' | 'geo-style.rhombus' | 'geo-style.star' | 'geo-style.trapezoid' | 'geo-style.triangle' | 'geo-style.x-box' | 'handle.crop.bottom-left' | 'handle.crop.bottom-right' | 'handle.crop.bottom' | 'handle.crop.left' | 'handle.crop.right' | 'handle.crop.top-left' | 'handle.crop.top-right' | 'handle.crop.top' | 'handle.resize-bottom-left' | 'handle.resize-bottom-right' | 'handle.resize-bottom' | 'handle.resize-left' | 'handle.resize-right' | 'handle.resize-top-left' | 'handle.resize-top-right' | 'handle.resize-top' | 'handle.rotate.bottom_left_rotate' | 'handle.rotate.bottom_right_rotate' | 'handle.rotate.mobile_rotate' | 'handle.rotate.top_left_rotate' | 'handle.rotate.top_right_rotate' | 'help-menu.about' | 'help-menu.discord' | 'help-menu.github' | 'help-menu.import-tldr-file' | 'help-menu.keyboard-shortcuts' | 'help-menu.privacy' | 'help-menu.terms' | 'help-menu.title' | 'help-menu.twitter' | 'menu.accessibility' | 'menu.copy-as' | 'menu.edit' | 'menu.export-as' | 'menu.file' | 'menu.language' | 'menu.preferences' | 'menu.theme' | 'menu.title' | 'menu.view' | 'navigation-zone.minimap' | 'navigation-zone.title' | 'navigation-zone.toggle-minimap' | 'navigation-zone.zoom' | 'opacity-style.0.1' | 'opacity-style.0.25' | 'opacity-style.0.5' | 'opacity-style.0.75' | 'opacity-style.1' | 'page-menu.create-new-page' | 'page-menu.edit-done' | 'page-menu.edit-start' | 'page-menu.go-to-page' | 'page-menu.max-page-count-reached' | 'page-menu.new-page-initial-name' | 'page-menu.submenu.delete' | 'page-menu.submenu.duplicate-page' | 'page-menu.submenu.move-down' | 'page-menu.submenu.move-up' | 'page-menu.submenu.rename' | 'page-menu.submenu.title' | 'page-menu.title' | 'people-menu.anonymous-user' | 'people-menu.avatar-color' | 'people-menu.change-color' | 'people-menu.change-name' | 'people-menu.follow' | 'people-menu.following' | 'people-menu.invite' | 'people-menu.leading' | 'people-menu.title' | 'people-menu.user' | 'share-menu.copied' | 'share-menu.copy-link-note' | 'share-menu.copy-link' | 'share-menu.copy-readonly-link-note' | 'share-menu.copy-readonly-link' | 'share-menu.create-snapshot-link' | 'share-menu.creating-project' | 'share-menu.fork-note' | 'share-menu.offline-note' | 'share-menu.project-too-large' | 'share-menu.save-note' | 'share-menu.share-project' | 'share-menu.snapshot-link-note' | 'share-menu.title' | 'share-menu.upload-failed' | 'sharing.confirm-leave.cancel' | 'sharing.confirm-leave.description' | 'sharing.confirm-leave.dont-show-again' | 'sharing.confirm-leave.leave' | 'sharing.confirm-leave.title' | 'shortcuts-dialog.a11y' | 'shortcuts-dialog.collaboration' | 'shortcuts-dialog.edit' | 'shortcuts-dialog.file' | 'shortcuts-dialog.preferences' | 'shortcuts-dialog.text-formatting' | 'shortcuts-dialog.title' | 'shortcuts-dialog.tools' | 'shortcuts-dialog.transform' | 'shortcuts-dialog.view' | 'size-style.l' | 'size-style.m' | 'size-style.s' | 'size-style.xl' | 'spline-style.cubic' | 'spline-style.line' | 'status.offline' | 'style-panel.align' | 'style-panel.arrow-kind' | 'style-panel.arrowhead-end' | 'style-panel.arrowhead-start' | 'style-panel.arrowheads' | 'style-panel.color' | 'style-panel.dash' | 'style-panel.fill' | 'style-panel.font' | 'style-panel.geo' | 'style-panel.label-align' | 'style-panel.mixed' | 'style-panel.opacity' | 'style-panel.position' | 'style-panel.size' | 'style-panel.spline' | 'style-panel.title' | 'style-panel.vertical-align' | 'theme.dark' | 'theme.light' | 'theme.system' | 'toast.close' | 'toast.error.copy-fail.desc' | 'toast.error.copy-fail.title' | 'toast.error.export-fail.desc' | 'toast.error.export-fail.title' | 'toast.error' | 'toast.info' | 'toast.success' | 'toast.warning' | 'tool-panel.more' | 'tool-panel.title' | 'tool.arrow-down' | 'tool.arrow-left' | 'tool.arrow-right' | 'tool.arrow-up' | 'tool.arrow' | 'tool.aspect-ratio.circle' | 'tool.aspect-ratio.landscape' | 'tool.aspect-ratio.original' | 'tool.aspect-ratio.portrait' | 'tool.aspect-ratio.square' | 'tool.aspect-ratio.wide' | 'tool.aspect-ratio' | 'tool.bookmark' | 'tool.check-box' | 'tool.cloud' | 'tool.diamond' | 'tool.draw' | 'tool.ellipse' | 'tool.embed' | 'tool.eraser' | 'tool.flip-horz' | 'tool.flip-vert' | 'tool.frame' | 'tool.hand' | 'tool.heart' | 'tool.hexagon' | 'tool.highlight' | 'tool.image-crop' | 'tool.image-toolbar-title' | 'tool.image-zoom' | 'tool.laser' | 'tool.line' | 'tool.media-alt-text-confirm' | 'tool.media-alt-text-desc' | 'tool.media-alt-text' | 'tool.media' | 'tool.note' | 'tool.octagon' | 'tool.oval' | 'tool.pentagon' | 'tool.pointer-down' | 'tool.rectangle' | 'tool.replace-media' | 'tool.rhombus' | 'tool.rich-text-bold' | 'tool.rich-text-bulletList' | 'tool.rich-text-code' | 'tool.rich-text-header' | 'tool.rich-text-highlight' | 'tool.rich-text-italic' | 'tool.rich-text-link-remove' | 'tool.rich-text-link-visit' | 'tool.rich-text-link' | 'tool.rich-text-orderedList' | 'tool.rich-text-strikethrough' | 'tool.rich-text-toolbar-title' | 'tool.rotate-cw' | 'tool.select' | 'tool.star' | 'tool.text' | 'tool.trapezoid' | 'tool.triangle' | 'tool.x-box' | 'ui.checked' | 'ui.close' | 'ui.unchecked' | 'verticalAlign-style.end' | 'verticalAlign-style.middle' | 'verticalAlign-style.start' | 'vscode.file-open.backup-failed' | 'vscode.file-open.backup-saved' | 'vscode.file-open.backup' | 'vscode.file-open.desc' | 'vscode.file-open.dont-show-again' | 'vscode.file-open.open';
4014
4193
 
4015
4194
  /** @public */
4016
4195
  export declare interface TLUiTranslationProviderProps {
@@ -4151,6 +4330,9 @@ export declare function ToggleToolLockItem(): JSX_2.Element;
4151
4330
  /** @public @react */
4152
4331
  export declare function ToggleTransparentBgMenuItem(): JSX_2.Element;
4153
4332
 
4333
+ /** @public @react */
4334
+ export declare function ToggleUiLabelsItem(): JSX_2.Element;
4335
+
4154
4336
  /** @public @react */
4155
4337
  export declare function ToggleWrapModeItem(): JSX_2.Element;
4156
4338
 
@@ -4384,6 +4566,9 @@ export declare function useShowCollaborationUi(): boolean;
4384
4566
  /** @public */
4385
4567
  export declare function useTldrawUiComponents(): TLUiComponents;
4386
4568
 
4569
+ /** @public */
4570
+ export declare function useTldrawUiOrientation(): TldrawUiOrientationContext;
4571
+
4387
4572
  /** @public */
4388
4573
  export declare function useToasts(): TLUiToastsContextType;
4389
4574
 
@@ -5,8 +5,17 @@ import {
5
5
  } from "./lib/shapes/shared/PathBuilder.mjs";
6
6
  import { usePrefersReducedMotion } from "./lib/shapes/shared/usePrefersReducedMotion.mjs";
7
7
  import { DefaultA11yAnnouncer, useSelectedShapesAnnouncer } from "./lib/ui/components/A11y.mjs";
8
+ import { AccessibilityMenu } from "./lib/ui/components/AccessibilityMenu.mjs";
8
9
  import { ColorSchemeMenu } from "./lib/ui/components/ColorSchemeMenu.mjs";
10
+ import { DefaultFollowingIndicator } from "./lib/ui/components/DefaultFollowingIndicator.mjs";
9
11
  import { DefaultDialogs } from "./lib/ui/components/Dialogs.mjs";
12
+ import {
13
+ TldrawUiColumn,
14
+ TldrawUiGrid,
15
+ TldrawUiOrientationProvider,
16
+ TldrawUiRow,
17
+ useTldrawUiOrientation
18
+ } from "./lib/ui/components/primitives/layout.mjs";
10
19
  import {
11
20
  TldrawUiMenuActionCheckboxItem
12
21
  } from "./lib/ui/components/primitives/menus/TldrawUiMenuActionCheckboxItem.mjs";
@@ -48,6 +57,7 @@ import {
48
57
  defaultHandleExternalUrlContent,
49
58
  getAssetInfo,
50
59
  getMediaAssetInfoPartial,
60
+ notifyIfFileNotAllowed,
51
61
  registerDefaultExternalContentHandlers
52
62
  } from "./lib/defaultExternalContentHandlers.mjs";
53
63
  import { defaultShapeTools } from "./lib/defaultShapeTools.mjs";
@@ -97,6 +107,8 @@ import {
97
107
  allDefaultFontFaces,
98
108
  DefaultFontFaces
99
109
  } from "./lib/shapes/shared/defaultFonts.mjs";
110
+ import { getStrokePoints } from "./lib/shapes/shared/freehand/getStrokePoints.mjs";
111
+ import { getSvgPathFromStrokePoints } from "./lib/shapes/shared/freehand/svg.mjs";
100
112
  import {
101
113
  PlainTextLabel,
102
114
  TextLabel
@@ -221,6 +233,7 @@ import {
221
233
  ToggleSnapModeItem,
222
234
  ToggleToolLockItem,
223
235
  ToggleTransparentBgMenuItem,
236
+ ToggleUiLabelsItem,
224
237
  ToggleWrapModeItem,
225
238
  UngroupMenuItem,
226
239
  UnlockAllMenuItem,
@@ -305,6 +318,10 @@ import {
305
318
  TldrawUiToolbarToggleGroup,
306
319
  TldrawUiToolbarToggleItem
307
320
  } from "./lib/ui/components/primitives/TldrawUiToolbar.mjs";
321
+ import {
322
+ TldrawUiTooltip,
323
+ TldrawUiTooltipProvider
324
+ } from "./lib/ui/components/primitives/TldrawUiTooltip.mjs";
308
325
  import {
309
326
  DefaultQuickActions
310
327
  } from "./lib/ui/components/QuickActions/DefaultQuickActions.mjs";
@@ -448,7 +465,7 @@ import {
448
465
  useTranslation
449
466
  } from "./lib/ui/hooks/useTranslation/useTranslation.mjs";
450
467
  import { useDefaultHelpers } from "./lib/ui/overrides.mjs";
451
- import { TldrawUi } from "./lib/ui/TldrawUi.mjs";
468
+ import { TldrawUi, TldrawUiInFrontOfTheCanvas } from "./lib/ui/TldrawUi.mjs";
452
469
  import { containBoxSize, downsizeImage } from "./lib/utils/assets/assets.mjs";
453
470
  import { preloadFont } from "./lib/utils/assets/preload-font.mjs";
454
471
  import { getEmbedInfo } from "./lib/utils/embeds/embeds.mjs";
@@ -492,13 +509,14 @@ import {
492
509
  } from "./lib/utils/tldr/file.mjs";
493
510
  registerTldrawLibraryVersion(
494
511
  "tldraw",
495
- "3.16.0-canary.8c74738e06fb",
512
+ "3.16.0-canary.99cd20c3ee29",
496
513
  "esm"
497
514
  );
498
515
  export {
499
516
  ARROW_LABEL_FONT_SIZES,
500
517
  ASPECT_RATIO_OPTIONS,
501
518
  ASPECT_RATIO_TO_VALUE,
519
+ AccessibilityMenu,
502
520
  AlignMenuItems,
503
521
  ArrangeMenuSubmenu,
504
522
  ArrowBindingUtil,
@@ -540,6 +558,7 @@ export {
540
558
  DefaultDebugMenu,
541
559
  DefaultDebugMenuContent,
542
560
  DefaultDialogs,
561
+ DefaultFollowingIndicator,
543
562
  DefaultFontFaces,
544
563
  DefaultHelpMenu,
545
564
  DefaultHelpMenuContent,
@@ -687,6 +706,7 @@ export {
687
706
  TldrawUiButtonIcon,
688
707
  TldrawUiButtonLabel,
689
708
  TldrawUiButtonPicker,
709
+ TldrawUiColumn,
690
710
  TldrawUiComponentsProvider,
691
711
  TldrawUiContextProvider,
692
712
  TldrawUiContextualToolbar,
@@ -706,7 +726,9 @@ export {
706
726
  TldrawUiDropdownMenuSubTrigger,
707
727
  TldrawUiDropdownMenuTrigger,
708
728
  TldrawUiEventsProvider,
729
+ TldrawUiGrid,
709
730
  TldrawUiIcon,
731
+ TldrawUiInFrontOfTheCanvas,
710
732
  TldrawUiInput,
711
733
  TldrawUiKbd,
712
734
  TldrawUiMenuActionCheckboxItem,
@@ -717,15 +739,19 @@ export {
717
739
  TldrawUiMenuItem,
718
740
  TldrawUiMenuSubmenu,
719
741
  TldrawUiMenuToolItem,
742
+ TldrawUiOrientationProvider,
720
743
  TldrawUiPopover,
721
744
  TldrawUiPopoverContent,
722
745
  TldrawUiPopoverTrigger,
746
+ TldrawUiRow,
723
747
  TldrawUiSlider,
724
748
  TldrawUiToastsProvider,
725
749
  TldrawUiToolbar,
726
750
  TldrawUiToolbarButton,
727
751
  TldrawUiToolbarToggleGroup,
728
752
  TldrawUiToolbarToggleItem,
753
+ TldrawUiTooltip,
754
+ TldrawUiTooltipProvider,
729
755
  TldrawUiTranslationProvider,
730
756
  ToggleAutoSizeMenuItem,
731
757
  ToggleDebugModeItem,
@@ -741,6 +767,7 @@ export {
741
767
  ToggleToolLockItem,
742
768
  ToggleToolLockedButton,
743
769
  ToggleTransparentBgMenuItem,
770
+ ToggleUiLabelsItem,
744
771
  ToggleWrapModeItem,
745
772
  ToolbarItem,
746
773
  TrapezoidToolbarItem,
@@ -793,7 +820,10 @@ export {
793
820
  getEmbedInfo,
794
821
  getHitShapeOnCanvasPointerDown,
795
822
  getMediaAssetInfoPartial,
823
+ getStrokePoints,
824
+ getSvgPathFromStrokePoints,
796
825
  getUncroppedSize,
826
+ notifyIfFileNotAllowed,
797
827
  onDragFromToolbarToCreateShape,
798
828
  parseAndLoadDocument,
799
829
  parseTldrawJsonFile,
@@ -843,6 +873,7 @@ export {
843
873
  useSelectedShapesAnnouncer,
844
874
  useShowCollaborationUi,
845
875
  useTldrawUiComponents,
876
+ useTldrawUiOrientation,
846
877
  useToasts,
847
878
  useTools,
848
879
  useTranslation,