tldraw 3.16.0-canary.cf24aedcd577 → 3.16.0-canary.d354cc4340c1

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 (438) hide show
  1. package/dist-cjs/index.d.ts +318 -111
  2. package/dist-cjs/index.js +37 -14
  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 +15 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
  11. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +6 -0
  12. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
  13. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +3 -2
  14. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  15. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  16. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  17. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +1 -1
  18. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
  19. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +4 -4
  20. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  21. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  22. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  23. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -5
  24. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  25. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  26. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  27. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +8 -2
  28. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +2 -2
  29. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +1 -0
  30. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  31. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  32. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  33. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +2 -1
  34. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  35. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +4 -4
  36. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  37. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  38. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  39. package/dist-cjs/lib/shapes/shared/ShapeFill.js +1 -1
  40. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  41. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  42. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +3 -5
  43. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  44. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  45. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  46. package/dist-cjs/lib/shapes/text/PlainTextArea.js +3 -2
  47. package/dist-cjs/lib/shapes/text/PlainTextArea.js.map +2 -2
  48. package/dist-cjs/lib/shapes/text/RichTextArea.js +3 -3
  49. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  50. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  51. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  52. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  53. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  54. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  55. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  56. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +3 -1
  57. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  58. package/dist-cjs/lib/ui/TldrawUi.js +13 -12
  59. package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
  60. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  61. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  62. package/dist-cjs/lib/ui/components/A11y.js +1 -1
  63. package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
  64. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  65. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  66. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  67. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  68. package/dist-cjs/lib/ui/components/LanguageMenu.js +1 -0
  69. package/dist-cjs/lib/ui/components/LanguageMenu.js.map +2 -2
  70. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +2 -1
  71. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
  72. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  73. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  74. package/dist-cjs/lib/ui/components/MobileStylePanel.js +1 -1
  75. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  76. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +1 -1
  77. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  78. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +9 -4
  79. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  80. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
  81. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  82. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js +147 -0
  83. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  84. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  85. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  86. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +23 -22
  87. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  88. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +24 -21
  89. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  90. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  91. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  92. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +2 -0
  93. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  94. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  95. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  96. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  97. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  98. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +2 -1
  99. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  100. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +1 -1
  101. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +2 -2
  102. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +6 -2
  103. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  104. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +11 -2
  105. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  106. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +5 -3
  107. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
  108. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +18 -5
  109. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  110. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +3 -0
  111. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  112. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +137 -122
  113. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  114. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js +3 -0
  115. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
  116. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  117. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +0 -10
  118. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  119. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +11 -27
  120. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  121. package/dist-cjs/lib/ui/context/actions.js +29 -10
  122. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  123. package/dist-cjs/lib/ui/context/components.js +2 -0
  124. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  125. package/dist-cjs/lib/ui/context/events.js.map +1 -1
  126. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  127. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  128. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  129. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  130. package/dist-cjs/lib/ui/hooks/useTools.js +22 -4
  131. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  132. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  133. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +6 -2
  134. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  135. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  136. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  137. package/dist-cjs/lib/ui/version.js +3 -3
  138. package/dist-cjs/lib/ui/version.js.map +1 -1
  139. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  140. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  141. package/dist-cjs/lib/utils/export/export.js +0 -20
  142. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  143. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  144. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  145. package/dist-esm/index.d.mts +318 -111
  146. package/dist-esm/index.mjs +69 -29
  147. package/dist-esm/index.mjs.map +2 -2
  148. package/dist-esm/lib/Tldraw.mjs +14 -4
  149. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  150. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  151. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  152. package/dist-esm/lib/defaultExternalContentHandlers.mjs +15 -4
  153. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  154. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  155. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  156. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +3 -2
  157. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  158. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  159. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  160. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +1 -1
  161. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
  162. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +4 -5
  163. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  164. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  165. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  166. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +12 -5
  167. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  168. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  169. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  170. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +9 -3
  171. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +2 -2
  172. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +1 -0
  173. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  174. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  175. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  176. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +2 -1
  177. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  178. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +5 -5
  179. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  180. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  181. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  182. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +1 -1
  183. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  184. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  185. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +3 -6
  186. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  187. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  188. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  189. package/dist-esm/lib/shapes/text/PlainTextArea.mjs +4 -3
  190. package/dist-esm/lib/shapes/text/PlainTextArea.mjs.map +2 -2
  191. package/dist-esm/lib/shapes/text/RichTextArea.mjs +3 -4
  192. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  193. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  194. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  195. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  196. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  197. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  198. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  199. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +3 -1
  200. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  201. package/dist-esm/lib/ui/TldrawUi.mjs +13 -12
  202. package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
  203. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  204. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  205. package/dist-esm/lib/ui/components/A11y.mjs +1 -2
  206. package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
  207. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  208. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  209. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  210. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  211. package/dist-esm/lib/ui/components/LanguageMenu.mjs +1 -0
  212. package/dist-esm/lib/ui/components/LanguageMenu.mjs.map +2 -2
  213. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +2 -1
  214. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
  215. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  216. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  217. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +1 -1
  218. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  219. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +1 -2
  220. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  221. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +14 -5
  222. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  223. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
  224. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  225. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +135 -0
  226. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  227. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  228. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  229. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +20 -19
  230. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  231. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +21 -18
  232. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  233. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  234. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  235. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +2 -0
  236. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  237. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  238. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  239. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  240. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  241. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +2 -1
  242. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  243. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +1 -1
  244. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +2 -2
  245. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +6 -2
  246. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  247. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +11 -3
  248. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  249. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +6 -4
  250. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
  251. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +18 -5
  252. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  253. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +3 -0
  254. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  255. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +147 -124
  256. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  257. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs +3 -0
  258. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
  259. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  260. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +0 -10
  261. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  262. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +11 -27
  263. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  264. package/dist-esm/lib/ui/context/actions.mjs +29 -10
  265. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  266. package/dist-esm/lib/ui/context/components.mjs +2 -0
  267. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  268. package/dist-esm/lib/ui/context/events.mjs.map +1 -1
  269. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +1 -2
  270. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  271. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  272. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  273. package/dist-esm/lib/ui/hooks/useTools.mjs +23 -4
  274. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  275. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +6 -2
  276. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  277. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  278. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  279. package/dist-esm/lib/ui/version.mjs +3 -3
  280. package/dist-esm/lib/ui/version.mjs.map +1 -1
  281. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  282. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  283. package/dist-esm/lib/utils/export/export.mjs +0 -20
  284. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  285. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  286. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  287. package/package.json +11 -34
  288. package/src/index.ts +51 -22
  289. package/src/lib/Tldraw.tsx +15 -2
  290. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  291. package/src/lib/defaultExternalContentHandlers.ts +26 -4
  292. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +85 -14
  293. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +103 -8
  294. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +48 -6
  295. package/src/lib/shapes/arrow/arrow-types.ts +3 -5
  296. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  297. package/src/lib/shapes/arrow/arrowTargetState.ts +34 -3
  298. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  299. package/src/lib/shapes/arrow/toolStates/Pointing.tsx +1 -1
  300. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +4 -5
  301. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  302. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  303. package/src/lib/shapes/frame/FrameShapeUtil.tsx +21 -4
  304. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  305. package/src/lib/shapes/frame/components/FrameLabelInput.tsx +10 -3
  306. package/src/lib/shapes/geo/GeoShapeUtil.tsx +1 -0
  307. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  308. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  309. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  310. package/src/lib/shapes/note/NoteShapeUtil.tsx +1 -0
  311. package/src/lib/shapes/shared/HyperlinkButton.tsx +5 -5
  312. package/src/lib/shapes/shared/PlainTextLabel.tsx +0 -6
  313. package/src/lib/shapes/shared/ShapeFill.tsx +1 -1
  314. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  315. package/src/lib/shapes/shared/useEditablePlainText.ts +3 -10
  316. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  317. package/src/lib/shapes/text/PlainTextArea.tsx +4 -3
  318. package/src/lib/shapes/text/RichTextArea.tsx +3 -4
  319. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  320. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  321. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  322. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  323. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +6 -2
  324. package/src/lib/ui/TldrawUi.tsx +16 -10
  325. package/src/lib/ui/assetUrls.ts +13 -10
  326. package/src/lib/ui/components/A11y.tsx +1 -2
  327. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  328. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  329. package/src/lib/ui/components/LanguageMenu.tsx +1 -0
  330. package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +2 -1
  331. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  332. package/src/lib/ui/components/MobileStylePanel.tsx +1 -1
  333. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +1 -2
  334. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +27 -13
  335. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -381
  336. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +70 -50
  337. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  338. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +28 -19
  339. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  340. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  341. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +2 -0
  342. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  343. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  344. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +1 -0
  345. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +1 -1
  346. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +9 -2
  347. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +7 -3
  348. package/src/lib/ui/components/primitives/TldrawUiInput.tsx +6 -3
  349. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +52 -32
  350. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +5 -1
  351. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +159 -123
  352. package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +4 -0
  353. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  354. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +0 -10
  355. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +14 -27
  356. package/src/lib/ui/context/actions.tsx +36 -10
  357. package/src/lib/ui/context/components.tsx +3 -0
  358. package/src/lib/ui/context/events.tsx +1 -1
  359. package/src/lib/ui/hooks/useClipboardEvents.ts +1 -2
  360. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  361. package/src/lib/ui/hooks/useTools.tsx +26 -4
  362. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +4 -0
  363. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +6 -2
  364. package/src/lib/ui/kbd-utils.ts +10 -3
  365. package/src/lib/ui/version.ts +3 -3
  366. package/src/lib/ui.css +260 -230
  367. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  368. package/src/lib/utils/export/copyAs.ts +1 -24
  369. package/src/lib/utils/export/export.ts +0 -36
  370. package/src/lib/utils/export/exportAs.ts +1 -32
  371. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  372. package/src/test/A11y.test.tsx +3 -2
  373. package/src/test/ClickManager.test.ts +7 -6
  374. package/src/test/Editor.test.tsx +20 -19
  375. package/src/test/EraserTool.test.ts +184 -13
  376. package/src/test/HandTool.test.ts +10 -9
  377. package/src/test/HighlightShape.test.ts +2 -1
  378. package/src/test/SelectTool.test.ts +3 -2
  379. package/src/test/TLUserPreferences.test.ts +4 -3
  380. package/src/test/TestEditor.ts +21 -17
  381. package/src/test/TldrawEditor.test.tsx +11 -10
  382. package/src/test/ZoomTool.test.ts +7 -6
  383. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  384. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  385. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  386. package/src/test/arrows-megabus.test.tsx +5 -4
  387. package/src/test/bindings.test.tsx +24 -37
  388. package/src/test/bookmark-shapes.test.ts +1 -8
  389. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  390. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  391. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  392. package/src/test/commands/alignShapes.test.tsx +25 -24
  393. package/src/test/commands/animationSpeed.test.ts +2 -1
  394. package/src/test/commands/centerOnPoint.test.ts +3 -2
  395. package/src/test/commands/clipboard.test.ts +3 -2
  396. package/src/test/commands/createShapes.test.ts +2 -1
  397. package/src/test/commands/deleteShapes.test.ts +2 -1
  398. package/src/test/commands/distributeShapes.test.tsx +11 -10
  399. package/src/test/commands/getSvgString.test.ts +2 -1
  400. package/src/test/commands/packShapes.test.ts +5 -4
  401. package/src/test/commands/resizeShape.test.ts +2 -1
  402. package/src/test/commands/rotateShapes.test.ts +7 -6
  403. package/src/test/commands/setCamera.test.ts +4 -3
  404. package/src/test/commands/setCurrentPage.test.ts +3 -2
  405. package/src/test/commands/stackShapes.test.ts +11 -10
  406. package/src/test/commands/stretch.test.tsx +13 -12
  407. package/src/test/createDeepLink.test.tsx +2 -1
  408. package/src/test/cropping.test.ts +3 -2
  409. package/src/test/custom-clipping.test.ts +436 -0
  410. package/src/test/drawing.test.ts +2 -1
  411. package/src/test/flipShapes.test.ts +4 -3
  412. package/src/test/frames.test.ts +25 -24
  413. package/src/test/getCulledShapes.test.tsx +74 -4
  414. package/src/test/groups.test.tsx +1 -1
  415. package/src/test/handleDeepLink.test.tsx +2 -1
  416. package/src/test/maxShapes.test.ts +3 -2
  417. package/src/test/modifiers.test.ts +5 -4
  418. package/src/test/navigation.test.ts +12 -11
  419. package/src/test/panning.test.ts +2 -1
  420. package/src/test/perf/perf.test.ts +2 -1
  421. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  422. package/src/test/resizing.test.ts +39 -38
  423. package/src/test/select.test.tsx +4 -3
  424. package/src/test/selection-omnibus.test.ts +11 -10
  425. package/src/test/shapeutils.test.ts +4 -3
  426. package/src/test/translating.test.ts +9 -8
  427. package/tldraw.css +568 -522
  428. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  429. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  430. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  431. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +0 -131
  432. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  433. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  434. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  435. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  436. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +0 -115
  437. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  438. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +0 -110
package/src/lib/ui.css CHANGED
@@ -1,15 +1,15 @@
1
1
  /* @tldraw/ui */
2
2
 
3
3
  .tl-container {
4
- --layer-above: 1;
5
- --layer-focused-input: 10;
6
- --layer-menu-click-capture: 250;
7
- --layer-panels: 300;
8
- --layer-menus: 400;
9
- --layer-toasts: 650;
10
- --layer-cursor: 700;
11
- --layer-header-footer: 999;
12
- --layer-following-indicator: 1000;
4
+ --tl-layer-above: 1;
5
+ --tl-layer-focused-input: 10;
6
+ --tl-layer-menu-click-capture: 250;
7
+ --tl-layer-panels: 300;
8
+ --tl-layer-menus: 400;
9
+ --tl-layer-toasts: 650;
10
+ --tl-layer-cursor: 700;
11
+ --tl-layer-header-footer: 999;
12
+ --tl-layer-following-indicator: 1000;
13
13
  }
14
14
 
15
15
  /* Button */
@@ -33,23 +33,23 @@
33
33
  text-rendering: optimizeLegibility;
34
34
  font-size: 12px;
35
35
  gap: 0px;
36
- color: var(--color-text-1);
36
+ color: var(--tl-color-text-1);
37
37
  z-index: 0;
38
38
  }
39
39
 
40
40
  .tlui-button:disabled {
41
- color: var(--color-text-3);
41
+ color: var(--tl-color-text-3);
42
42
  text-shadow: none;
43
43
  cursor: default;
44
44
  }
45
45
 
46
46
  .tlui-button:disabled .tlui-kbd {
47
- color: var(--color-text-3);
47
+ color: var(--tl-color-text-3);
48
48
  }
49
49
 
50
50
  .tlui-button > * {
51
51
  position: relative;
52
- z-index: var(--layer-above);
52
+ z-index: var(--tl-layer-above);
53
53
  }
54
54
 
55
55
  .tlui-button__label {
@@ -65,7 +65,7 @@
65
65
  */
66
66
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button:focus-visible {
67
67
  border-radius: 10px;
68
- outline: 2px solid var(--color-focus);
68
+ outline: 2px solid var(--tl-color-focus);
69
69
  outline-offset: -5px;
70
70
  }
71
71
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button__tool:focus-visible {
@@ -73,7 +73,7 @@
73
73
  }
74
74
  .tlui-slider__container:has(.tlui-slider__thumb:focus-visible) {
75
75
  border-radius: 10px;
76
- outline: 2px solid var(--color-focus);
76
+ outline: 2px solid var(--tl-color-focus);
77
77
  outline-offset: -5px;
78
78
  }
79
79
 
@@ -82,8 +82,8 @@
82
82
  content: '';
83
83
  position: absolute;
84
84
  inset: 4px;
85
- border-radius: var(--radius-2);
86
- background: var(--color-muted-2);
85
+ border-radius: var(--tl-radius-2);
86
+ background: var(--tl-color-muted-2);
87
87
  opacity: 0;
88
88
  }
89
89
 
@@ -93,18 +93,18 @@
93
93
 
94
94
  .tlui-button[data-isactive='true']::after,
95
95
  .tlui-button[data-isactive='true']:not(:disabled, :focus-visible):active:after {
96
- background: var(--color-hint);
96
+ background: var(--tl-color-hint);
97
97
  opacity: 1;
98
98
  }
99
99
 
100
100
  .tlui-button[aria-expanded='true'][data-direction='left'] {
101
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
101
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
102
102
  opacity: 1;
103
103
  }
104
104
 
105
105
  @media (hover: hover) {
106
106
  .tlui-button[aria-expanded='true'][data-direction='left']:not(:hover)::after {
107
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
107
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
108
108
  opacity: 1;
109
109
  }
110
110
 
@@ -118,18 +118,18 @@
118
118
  }
119
119
 
120
120
  .tlui-button__icon + .tlui-button__label {
121
- margin-left: var(--space-2);
121
+ margin-left: var(--tl-space-2);
122
122
  }
123
123
 
124
124
  /* Low button */
125
125
 
126
126
  .tlui-button__low {
127
- border-radius: var(--radius-3);
128
- background-color: var(--color-low);
127
+ border-radius: var(--tl-radius-3);
128
+ background-color: var(--tl-color-low);
129
129
  }
130
130
 
131
131
  .tlui-button__low::after {
132
- background-color: var(--color-muted-2);
132
+ background-color: var(--tl-color-muted-2);
133
133
  opacity: 0;
134
134
  }
135
135
 
@@ -142,21 +142,21 @@
142
142
  /* Primary / danger buttons */
143
143
 
144
144
  .tlui-button__primary {
145
- color: var(--color-primary);
145
+ color: var(--tl-color-primary);
146
146
  }
147
147
 
148
148
  .tlui-button__danger {
149
- color: var(--color-danger);
149
+ color: var(--tl-color-danger);
150
150
  text-shadow: none;
151
151
  }
152
152
 
153
153
  @media (hover: hover) {
154
154
  .tlui-button__primary:not(:disabled, :focus-visible):hover {
155
- color: var(--color-primary);
155
+ color: var(--tl-color-primary);
156
156
  }
157
157
 
158
158
  .tlui-button__danger:not(:disabled, :focus-visible):hover {
159
- color: var(--color-danger);
159
+ color: var(--tl-color-danger);
160
160
  text-shadow: none;
161
161
  }
162
162
  }
@@ -173,7 +173,7 @@
173
173
 
174
174
  .tlui-button__menu::after {
175
175
  inset: 4px;
176
- border-radius: var(--radius-2);
176
+ border-radius: var(--tl-radius-2);
177
177
  }
178
178
 
179
179
  .tlui-button__menu > .tlui-icon + .tlui-button__label {
@@ -206,7 +206,7 @@
206
206
  pointer-events: all;
207
207
  height: 40px;
208
208
  width: 40px;
209
- border-radius: var(--radius-2);
209
+ border-radius: var(--tl-radius-2);
210
210
  }
211
211
 
212
212
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
@@ -240,15 +240,15 @@
240
240
  }
241
241
 
242
242
  .tlui-button__tool[aria-pressed='true'] {
243
- color: var(--color-selected-contrast);
243
+ color: var(--tl-color-selected-contrast);
244
244
  }
245
245
 
246
246
  .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
247
- color: var(--color-selected-contrast);
247
+ color: var(--tl-color-selected-contrast);
248
248
  }
249
249
 
250
250
  .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
251
- background: var(--color-selected);
251
+ background: var(--tl-color-selected);
252
252
  opacity: 1;
253
253
  }
254
254
 
@@ -321,9 +321,9 @@
321
321
  pointer-events: none;
322
322
  user-select: none;
323
323
  contain: strict;
324
- z-index: var(--layer-panels);
324
+ z-index: var(--tl-layer-panels);
325
325
  transform: translate3d(0, 0, 0);
326
- --sab: env(safe-area-inset-bottom);
326
+ --tl-sab: env(safe-area-inset-bottom);
327
327
  font-weight: 500;
328
328
  line-height: 1.6;
329
329
  -webkit-font-smoothing: antialiased;
@@ -376,11 +376,11 @@
376
376
  justify-content: flex-start;
377
377
  align-items: flex-start;
378
378
  width: min-content;
379
- gap: var(--space-3);
380
- margin: var(--space-2) var(--space-3);
379
+ gap: var(--tl-space-3);
380
+ margin: var(--tl-space-2) var(--tl-space-3);
381
381
  white-space: nowrap;
382
382
  pointer-events: none;
383
- z-index: var(--layer-panels);
383
+ z-index: var(--tl-layer-panels);
384
384
  }
385
385
 
386
386
  /* ---------------------- Icon ---------------------- */
@@ -408,7 +408,7 @@
408
408
 
409
409
  .tlui-slider__container {
410
410
  width: 100%;
411
- padding: 0px var(--space-4);
411
+ padding: 0px var(--tl-space-4);
412
412
  }
413
413
 
414
414
  .tlui-slider {
@@ -434,7 +434,7 @@
434
434
  content: '';
435
435
  height: 3px;
436
436
  width: 100%;
437
- background-color: var(--color-muted-1);
437
+ background-color: var(--tl-color-muted-1);
438
438
  border-radius: 14px;
439
439
  }
440
440
 
@@ -443,7 +443,7 @@
443
443
  top: calc(50% - 2px);
444
444
  left: 0px;
445
445
  height: 3px;
446
- background-color: var(--color-selected);
446
+ background-color: var(--tl-color-selected);
447
447
  border-radius: 14px;
448
448
  }
449
449
 
@@ -455,16 +455,16 @@
455
455
  height: 18px;
456
456
  position: relative;
457
457
  top: -1px;
458
- background-color: var(--color-panel);
458
+ background-color: var(--tl-color-panel);
459
459
  border-radius: 999px;
460
- box-shadow: inset 0px 0px 0px 2px var(--color-text-1);
460
+ box-shadow: inset 0px 0px 0px 2px var(--tl-color-text-1);
461
461
  }
462
462
 
463
463
  .tlui-slider__thumb:active {
464
464
  cursor: grabbing;
465
465
  box-shadow:
466
- inset 0px 0px 0px 2px var(--color-text-1),
467
- var(--shadow-1);
466
+ inset 0px 0px 0px 2px var(--tl-color-text-1),
467
+ var(--tl-shadow-1);
468
468
  }
469
469
 
470
470
  /* ---------------------- Input --------------------- */
@@ -473,7 +473,7 @@
473
473
  background: none;
474
474
  margin: 0px;
475
475
  position: relative;
476
- z-index: var(--layer-above);
476
+ z-index: var(--tl-layer-above);
477
477
  height: 40px;
478
478
  max-height: 40px;
479
479
  display: flex;
@@ -482,8 +482,8 @@
482
482
  font-family: inherit;
483
483
  font-size: 12px;
484
484
  font-weight: inherit;
485
- color: var(--color-text-1);
486
- padding: var(--space-4);
485
+ color: var(--tl-color-text-1);
486
+ padding: var(--tl-space-4);
487
487
  padding-left: 0px;
488
488
  border: none;
489
489
  outline: none;
@@ -494,13 +494,17 @@
494
494
  -webkit-user-select: auto !important;
495
495
  }
496
496
 
497
+ .tlui-input::placeholder {
498
+ color: var(--tl-color-text-3);
499
+ }
500
+
497
501
  .tlui-input__wrapper {
498
502
  width: 100%;
499
503
  height: 44px;
500
504
  display: flex;
501
505
  align-items: center;
502
- gap: var(--space-4);
503
- color: var(--color-text);
506
+ gap: var(--tl-space-4);
507
+ color: var(--tl-color-text);
504
508
  }
505
509
 
506
510
  .tlui-input__wrapper > .tlui-icon {
@@ -532,7 +536,7 @@
532
536
  grid-auto-columns: minmax(1em, auto);
533
537
  align-self: bottom;
534
538
  color: currentColor;
535
- margin-left: var(--space-4);
539
+ margin-left: var(--tl-space-4);
536
540
  }
537
541
 
538
542
  .tlui-kbd > span {
@@ -549,13 +553,13 @@
549
553
  }
550
554
 
551
555
  .tlui-kbd:not(:last-child) {
552
- margin-right: var(--space-2);
556
+ margin-right: var(--tl-space-2);
553
557
  }
554
558
 
555
559
  /* Focus Mode Button */
556
560
 
557
561
  .tlui-focus-button {
558
- z-index: var(--layer-panels);
562
+ z-index: var(--tl-layer-panels);
559
563
  pointer-events: all;
560
564
  }
561
565
 
@@ -566,16 +570,22 @@
566
570
  }
567
571
 
568
572
  .tlui-menu {
569
- z-index: var(--layer-menus);
573
+ z-index: var(--tl-layer-menus);
570
574
  height: fit-content;
571
575
  width: fit-content;
572
- border-radius: var(--radius-3);
576
+ border-radius: var(--tl-radius-3);
573
577
  pointer-events: all;
574
578
  touch-action: auto;
575
579
  overflow-y: auto;
576
580
  overscroll-behavior: none;
577
- background-color: var(--color-panel);
578
- box-shadow: var(--shadow-3);
581
+ background-color: var(--tl-color-panel);
582
+ box-shadow: var(--tl-shadow-3);
583
+ }
584
+
585
+ @media (max-height: 600px) {
586
+ .tlui-menu {
587
+ max-height: 70vh;
588
+ }
579
589
  }
580
590
 
581
591
  .tlui-menu::-webkit-scrollbar {
@@ -593,7 +603,7 @@
593
603
  }
594
604
 
595
605
  .tlui-menu__group {
596
- border-bottom: 1px solid var(--color-divider);
606
+ border-bottom: 1px solid var(--tl-color-divider);
597
607
  }
598
608
  .tlui-menu__group:nth-last-of-type(1) {
599
609
  border-bottom: none;
@@ -603,23 +613,23 @@
603
613
 
604
614
  .tlui-menu__submenu__trigger[data-state='open']::after {
605
615
  opacity: 1;
606
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
616
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
607
617
  }
608
618
 
609
619
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
610
620
  opacity: 1;
611
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
621
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
612
622
  }
613
623
 
614
624
  @media (hover: hover) {
615
625
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
616
626
  opacity: 1;
617
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
627
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
618
628
  }
619
629
 
620
630
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
621
631
  opacity: 1;
622
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
632
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
623
633
  }
624
634
  }
625
635
 
@@ -644,7 +654,7 @@
644
654
  .tlui-menu-click-capture {
645
655
  position: fixed;
646
656
  inset: 0;
647
- z-index: var(--layer-menu-click-capture);
657
+ z-index: var(--tl-layer-menu-click-capture);
648
658
  }
649
659
 
650
660
  /* --------------------- Popover -------------------- */
@@ -660,10 +670,10 @@
660
670
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
661
671
  margin: 0px;
662
672
  border: none;
663
- border-radius: var(--radius-3);
664
- background-color: var(--color-panel);
665
- box-shadow: var(--shadow-3);
666
- z-index: var(--layer-menus);
673
+ border-radius: var(--tl-radius-3);
674
+ background-color: var(--tl-color-panel);
675
+ box-shadow: var(--tl-shadow-3);
676
+ z-index: var(--tl-layer-menus);
667
677
  overflow: hidden;
668
678
  overflow-y: auto;
669
679
  touch-action: auto;
@@ -676,22 +686,22 @@
676
686
 
677
687
  .tlui-menu-zone {
678
688
  position: relative;
679
- z-index: var(--layer-panels);
689
+ z-index: var(--tl-layer-panels);
680
690
  width: fit-content;
681
- border-right: 2px solid var(--color-background);
682
- border-bottom: 2px solid var(--color-background);
683
- border-bottom-right-radius: var(--radius-4);
684
- background-color: var(--color-low);
691
+ border-right: 2px solid var(--tl-color-background);
692
+ border-bottom: 2px solid var(--tl-color-background);
693
+ border-bottom-right-radius: var(--tl-radius-4);
694
+ background-color: var(--tl-color-low);
685
695
  }
686
696
 
687
697
  .tlui-menu-zone *[data-state='open']::after {
688
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
698
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
689
699
  opacity: 1;
690
700
  }
691
701
 
692
702
  @media (hover: hover) {
693
703
  .tlui-menu-zone *[data-state='open']:not(:hover)::after {
694
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
704
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
695
705
  opacity: 1;
696
706
  }
697
707
  }
@@ -717,8 +727,8 @@
717
727
  align-items: center;
718
728
  width: 100%;
719
729
  height: 40px;
720
- padding-left: var(--space-4);
721
- border-bottom: 1px solid var(--color-divider);
730
+ padding-left: var(--tl-space-4);
731
+ border-bottom: 1px solid var(--tl-color-divider);
722
732
  }
723
733
 
724
734
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -726,7 +736,7 @@
726
736
  }
727
737
 
728
738
  .tlui-page-menu__header__title {
729
- color: var(--color-text);
739
+ color: var(--tl-color-text);
730
740
  font-size: 12px;
731
741
  flex-grow: 2;
732
742
  }
@@ -811,7 +821,7 @@
811
821
  display: inline-flex;
812
822
  align-items: center;
813
823
  justify-content: center;
814
- color: var(--color-text);
824
+ color: var(--tl-color-text);
815
825
  }
816
826
 
817
827
  .tlui-page_menu__item__sortable {
@@ -824,7 +834,7 @@
824
834
  flex-direction: row;
825
835
  align-items: center;
826
836
  overflow: hidden;
827
- z-index: var(--layer-above);
837
+ z-index: var(--tl-layer-above);
828
838
  }
829
839
 
830
840
  .tlui-page_menu__item__sortable__title {
@@ -836,7 +846,7 @@
836
846
  }
837
847
 
838
848
  .tlui-page_menu__item__sortable:focus-visible {
839
- z-index: var(--layer-focused-input);
849
+ z-index: var(--tl-layer-focused-input);
840
850
  }
841
851
 
842
852
  .tlui-page_menu__item__sortable__handle {
@@ -845,7 +855,7 @@
845
855
  min-width: 0px;
846
856
  height: 40px;
847
857
  cursor: grab;
848
- color: var(--color-text-3);
858
+ color: var(--tl-color-text-3);
849
859
  flex-shrink: 0;
850
860
  margin-right: -9px;
851
861
  }
@@ -887,13 +897,13 @@
887
897
  }
888
898
 
889
899
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']::after {
890
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
900
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
891
901
  opacity: 1;
892
902
  }
893
903
 
894
904
  @media (hover: hover) {
895
905
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']:not(:hover)::after {
896
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
906
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
897
907
  opacity: 1;
898
908
  }
899
909
  }
@@ -929,7 +939,7 @@
929
939
  top: 48px;
930
940
  left: -9999px;
931
941
  padding: 8px 16px;
932
- z-index: var(--layer-toasts);
942
+ z-index: var(--tl-layer-toasts);
933
943
  }
934
944
 
935
945
  .tl-skip-to-main-content:focus {
@@ -941,11 +951,11 @@
941
951
  .tlui-offline-indicator {
942
952
  display: flex;
943
953
  flex-direction: row;
944
- gap: var(--space-3);
945
- color: var(--color-text);
946
- background-color: var(--color-low);
947
- border: 3px solid var(--color-background);
948
- padding: 0px var(--space-5);
954
+ gap: var(--tl-space-3);
955
+ color: var(--tl-color-text);
956
+ background-color: var(--tl-color-low);
957
+ border: 3px solid var(--tl-color-background);
958
+ padding: 0px var(--tl-space-5);
949
959
  height: 42px;
950
960
  align-items: center;
951
961
  justify-content: center;
@@ -960,10 +970,10 @@
960
970
  /* ------------------- Style panel ------------------ */
961
971
 
962
972
  .tlui-style-panel__wrapper {
963
- box-shadow: var(--shadow-2);
964
- border-radius: var(--radius-3);
973
+ box-shadow: var(--tl-shadow-2);
974
+ border-radius: var(--tl-radius-3);
965
975
  pointer-events: all;
966
- background-color: var(--color-panel);
976
+ background-color: var(--tl-color-panel);
967
977
  height: fit-content;
968
978
  max-height: 100%;
969
979
  margin: 8px;
@@ -972,7 +982,7 @@
972
982
  overscroll-behavior: none;
973
983
  overflow-y: auto;
974
984
  overflow-x: hidden;
975
- color: var(--color-text);
985
+ color: var(--tl-color-text);
976
986
  }
977
987
  /* if the style panel is the only child (ie no share menu), increase the margin */
978
988
  .tlui-style-panel__wrapper:only-child {
@@ -981,7 +991,7 @@
981
991
 
982
992
  .tlui-style-panel {
983
993
  position: relative;
984
- z-index: var(--layer-panels);
994
+ z-index: var(--tl-layer-panels);
985
995
  pointer-events: all;
986
996
  width: 148px;
987
997
  max-width: 148px;
@@ -989,7 +999,7 @@
989
999
 
990
1000
  .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
991
1001
  border-radius: 10px;
992
- outline: 2px solid var(--color-text);
1002
+ outline: 2px solid var(--tl-color-text);
993
1003
  outline-offset: -5px;
994
1004
  }
995
1005
 
@@ -1007,29 +1017,47 @@
1007
1017
  flex-direction: column;
1008
1018
  }
1009
1019
 
1010
- .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
1011
- border-bottom: 1px solid var(--color-divider);
1020
+ /*
1021
+ add a border to the bottom of all but the last section. we have to handle empty sections too, which
1022
+ are hidden and shouldn't be counted
1023
+ */
1024
+ .tlui-style-panel__section:not(:nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))) {
1025
+ border-bottom: 1px solid var(--tl-color-divider);
1026
+ }
1027
+ /*
1028
+ if a section ends with a slider and we're adding a border, we need some extra space for visual
1029
+ balance. we need to handle empty sections as above. is this the most complex css selector in all of
1030
+ tldraw? probably.
1031
+ */
1032
+ .tlui-style-panel__section:has(.tlui-slider__container:last-child):not(
1033
+ :nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))
1034
+ ) {
1035
+ margin-bottom: 7px;
1012
1036
  }
1013
1037
 
1014
1038
  .tlui-style-panel__section:empty {
1015
1039
  display: none;
1016
1040
  }
1017
1041
 
1042
+ .tlui-style-panel[data-ismobile='true'] .tlui-style-panel__section .tlui-row.tlui-toolbar {
1043
+ flex-wrap: wrap;
1044
+ }
1045
+
1018
1046
  .tlui-style-panel__section__common:not(:only-child) {
1019
1047
  margin-bottom: 7px;
1020
- border-bottom: 1px solid var(--color-divider);
1048
+ border-bottom: 1px solid var(--tl-color-divider);
1021
1049
  }
1022
1050
 
1023
1051
  .tlui-style-panel__dropdown-picker:only-child {
1024
- width: 100%;
1052
+ flex: 1;
1025
1053
  }
1026
1054
 
1027
1055
  .tlui-style-panel__double-select-picker {
1028
1056
  display: flex;
1029
1057
  grid-template-columns: 1fr auto;
1030
1058
  align-items: center;
1031
- padding-left: var(--space-4);
1032
- color: var(--color-text-1);
1059
+ padding-left: var(--tl-space-4);
1060
+ color: var(--tl-color-text-1);
1033
1061
  font-size: 12px;
1034
1062
  }
1035
1063
 
@@ -1043,13 +1071,16 @@
1043
1071
 
1044
1072
  .tlui-style-panel .tlui-button[data-state='open']::after {
1045
1073
  opacity: 1;
1046
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1074
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1047
1075
  }
1048
1076
 
1049
1077
  @media (hover: hover) {
1078
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
1079
+ background: none;
1080
+ }
1050
1081
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
1051
1082
  opacity: 1;
1052
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1083
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1053
1084
  }
1054
1085
  }
1055
1086
 
@@ -1059,14 +1090,14 @@
1059
1090
  .tlui-style-panel__section__common .tlui-style-panel__subheading,
1060
1091
  .tlui-style-panel__subheading + .tlui-slider__container {
1061
1092
  margin: 0;
1062
- padding: var(--space-2) var(--space-3) 0px var(--space-4);
1093
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
1063
1094
  font-size: 12px;
1064
1095
  font-weight: inherit;
1065
1096
  line-height: inherit;
1066
1097
  }
1067
1098
 
1068
1099
  .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1069
- padding-top: var(--space-3);
1100
+ padding-top: var(--tl-space-3);
1070
1101
  }
1071
1102
 
1072
1103
  .tlui-style-panel__subheading + .tlui-slider__container {
@@ -1078,7 +1109,6 @@
1078
1109
  .tlui-layout__bottom {
1079
1110
  grid-row: 2;
1080
1111
  width: 100%;
1081
- overflow: hidden;
1082
1112
  }
1083
1113
 
1084
1114
  .tlui-layout__bottom__main {
@@ -1094,7 +1124,7 @@
1094
1124
  display: flex;
1095
1125
  width: min-content;
1096
1126
  flex-direction: column;
1097
- z-index: var(--layer-panels);
1127
+ z-index: var(--tl-layer-panels);
1098
1128
  pointer-events: all;
1099
1129
  position: absolute;
1100
1130
  left: 0px;
@@ -1107,10 +1137,10 @@
1107
1137
  z-index: -1;
1108
1138
  inset: -2px -2px 0px 0px;
1109
1139
  border-radius: 0;
1110
- border-top: 2px solid var(--color-background);
1111
- border-right: 2px solid var(--color-background);
1112
- border-top-right-radius: var(--radius-4);
1113
- background-color: var(--color-low);
1140
+ border-top: 2px solid var(--tl-color-background);
1141
+ border-right: 2px solid var(--tl-color-background);
1142
+ border-top-right-radius: var(--tl-radius-4);
1143
+ background-color: var(--tl-color-low);
1114
1144
  }
1115
1145
 
1116
1146
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -1124,7 +1154,7 @@
1124
1154
  height: 96px;
1125
1155
  min-height: 96px;
1126
1156
  overflow: hidden;
1127
- padding: var(--space-3);
1157
+ padding: var(--tl-space-3);
1128
1158
  padding-top: 0px;
1129
1159
  }
1130
1160
 
@@ -1147,7 +1177,7 @@
1147
1177
  }
1148
1178
 
1149
1179
  .tlui-main-toolbar--horizontal {
1150
- padding-bottom: calc(var(--space-3) + var(--sab));
1180
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
1151
1181
  max-width: 100%;
1152
1182
  }
1153
1183
 
@@ -1156,7 +1186,7 @@
1156
1186
  left: 0;
1157
1187
  top: 90px; /* height of page menu + 'back to content' button */
1158
1188
  bottom: 140px; /* height of expanded mini-map */
1159
- padding-left: calc(var(--space-3) + var(--sab));
1189
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
1160
1190
  }
1161
1191
 
1162
1192
  [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
@@ -1168,7 +1198,7 @@
1168
1198
  position: relative;
1169
1199
  width: fit-content;
1170
1200
  display: flex;
1171
- gap: var(--space-3);
1201
+ gap: var(--tl-space-3);
1172
1202
  align-items: flex-start;
1173
1203
  }
1174
1204
 
@@ -1187,7 +1217,7 @@
1187
1217
  /* Row of controls + lock button */
1188
1218
  .tlui-main-toolbar__extras {
1189
1219
  position: relative;
1190
- z-index: var(--layer-above);
1220
+ z-index: var(--tl-layer-above);
1191
1221
  pointer-events: none;
1192
1222
  align-self: stretch;
1193
1223
  }
@@ -1208,23 +1238,23 @@
1208
1238
 
1209
1239
  .tlui-main-toolbar__extras__controls {
1210
1240
  position: relative;
1211
- z-index: var(--layer-above);
1212
- background-color: var(--color-low);
1213
- border: 2px solid var(--color-background);
1241
+ z-index: var(--tl-layer-above);
1242
+ background-color: var(--tl-color-low);
1243
+ border: 2px solid var(--tl-color-background);
1214
1244
  pointer-events: all;
1215
1245
  }
1216
1246
 
1217
1247
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
1218
- border-top-left-radius: var(--radius-4);
1219
- border-top-right-radius: var(--radius-4);
1248
+ border-top-left-radius: var(--tl-radius-4);
1249
+ border-top-right-radius: var(--tl-radius-4);
1220
1250
  margin-left: 8px;
1221
1251
  margin-right: 0px;
1222
1252
  width: fit-content;
1223
1253
  }
1224
1254
 
1225
1255
  .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
1226
- border-top-right-radius: var(--radius-4);
1227
- border-bottom-right-radius: var(--radius-4);
1256
+ border-top-right-radius: var(--tl-radius-4);
1257
+ border-bottom-right-radius: var(--tl-radius-4);
1228
1258
  margin-top: 8px;
1229
1259
  margin-left: -2px;
1230
1260
  margin-bottom: 0px;
@@ -1232,12 +1262,12 @@
1232
1262
  }
1233
1263
 
1234
1264
  .tlui-main-toolbar__tools {
1235
- border-radius: var(--radius-4);
1236
- z-index: var(--layer-panels);
1265
+ border-radius: var(--tl-radius-4);
1266
+ z-index: var(--tl-layer-panels);
1237
1267
  pointer-events: all;
1238
1268
  position: relative;
1239
- background: var(--color-panel);
1240
- box-shadow: var(--shadow-2);
1269
+ background: var(--tl-color-panel);
1270
+ box-shadow: var(--tl-shadow-2);
1241
1271
  }
1242
1272
 
1243
1273
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
@@ -1262,14 +1292,18 @@
1262
1292
  }
1263
1293
 
1264
1294
  .tlui-main-toolbar--horizontal *[data-state='open']::after {
1265
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1295
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1266
1296
  opacity: 1;
1267
1297
  }
1268
1298
  .tlui-main-toolbar--vertical *[data-state='open']::after {
1269
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1299
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1270
1300
  opacity: 1;
1271
1301
  }
1272
1302
 
1303
+ .tlui-main-toolbar__overflow-content {
1304
+ touch-action: none;
1305
+ }
1306
+
1273
1307
  .tlui-main-toolbar__tools [data-toolbar-visible='false'],
1274
1308
  .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
1275
1309
  display: none;
@@ -1298,11 +1332,11 @@
1298
1332
 
1299
1333
  @media (hover: hover) {
1300
1334
  .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
1301
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1335
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1302
1336
  opacity: 1;
1303
1337
  }
1304
1338
  .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
1305
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1339
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1306
1340
  opacity: 1;
1307
1341
  }
1308
1342
  }
@@ -1313,44 +1347,40 @@
1313
1347
  font-size: 12px;
1314
1348
  padding: 2px 8px;
1315
1349
  border-radius: 4px;
1316
- background-color: var(--color-tooltip);
1350
+ background-color: var(--tl-color-tooltip);
1317
1351
  box-shadow: none;
1318
- color: var(--color-text-shadow);
1352
+ color: var(--tl-color-text-shadow);
1319
1353
  max-width: 400px;
1320
1354
  width: fit-content;
1321
1355
  text-align: center;
1322
- pointer-events: none;
1323
1356
  will-change: transform, opacity;
1324
1357
  z-index: 2;
1325
1358
  }
1326
1359
 
1327
1360
  .tlui-tooltip__arrow {
1328
- fill: var(--color-tooltip);
1361
+ fill: var(--tl-color-tooltip);
1329
1362
  will-change: opacity;
1330
1363
  }
1331
1364
 
1332
1365
  [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
1333
- z-index: var(--layer-toasts) !important;
1334
- }
1335
-
1336
- [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
1337
- transition: all 0.1s ease-out;
1366
+ z-index: var(--tl-layer-toasts) !important;
1367
+ pointer-events: none;
1338
1368
  }
1339
1369
 
1340
1370
  /* ------------------- Debug panel ------------------ */
1341
1371
 
1342
1372
  .tlui-debug-panel {
1343
- background-color: var(--color-low);
1373
+ background-color: var(--tl-color-low);
1344
1374
  width: 100%;
1345
1375
  display: grid;
1346
1376
  align-items: center;
1347
1377
  grid-template-columns: 1fr auto auto auto;
1348
1378
  justify-content: space-between;
1349
- padding-left: var(--space-4);
1350
- border-top: 1px solid var(--color-background);
1379
+ padding-left: var(--tl-space-4);
1380
+ border-top: 1px solid var(--tl-color-background);
1351
1381
  font-size: 12px;
1352
- color: var(--color-text-1);
1353
- z-index: var(--layer-panels);
1382
+ color: var(--tl-color-text-1);
1383
+ z-index: var(--tl-layer-panels);
1354
1384
  pointer-events: all;
1355
1385
  }
1356
1386
 
@@ -1366,7 +1396,7 @@
1366
1396
 
1367
1397
  .tlui-debug-panel__fps__slow {
1368
1398
  font-weight: bold;
1369
- color: var(--color-danger);
1399
+ color: var(--tl-color-danger);
1370
1400
  }
1371
1401
 
1372
1402
  .tlui-a11y-audit {
@@ -1376,7 +1406,7 @@
1376
1406
  .tlui-a11y-audit th,
1377
1407
  .tlui-a11y-audit td {
1378
1408
  padding: 8px;
1379
- border: 1px solid var(--color-low-border);
1409
+ border: 1px solid var(--tl-color-low-border);
1380
1410
  }
1381
1411
 
1382
1412
  /* --------------------- Toasts --------------------- */
@@ -1389,10 +1419,10 @@
1389
1419
  align-items: flex-end;
1390
1420
  justify-content: flex-end;
1391
1421
  flex-direction: column;
1392
- gap: var(--space-3);
1422
+ gap: var(--tl-space-3);
1393
1423
  pointer-events: none;
1394
- padding: 0px var(--space-3) 64px 0px;
1395
- z-index: var(--layer-toasts);
1424
+ padding: 0px var(--tl-space-3) 64px 0px;
1425
+ z-index: var(--tl-layer-toasts);
1396
1426
  }
1397
1427
 
1398
1428
  .tlui-toast__viewport > * {
@@ -1401,34 +1431,34 @@
1401
1431
 
1402
1432
  .tlui-toast__icon {
1403
1433
  padding-top: 11px;
1404
- padding-left: var(--space-4);
1405
- color: var(--color-text-1);
1434
+ padding-left: var(--tl-space-4);
1435
+ color: var(--tl-color-text-1);
1406
1436
  }
1407
1437
 
1408
1438
  .tlui-toast__container {
1409
1439
  min-width: 200px;
1410
1440
  display: flex;
1411
1441
  flex-direction: row;
1412
- background-color: var(--color-panel);
1413
- box-shadow: var(--shadow-2);
1414
- border-radius: var(--radius-3);
1442
+ background-color: var(--tl-color-panel);
1443
+ box-shadow: var(--tl-shadow-2);
1444
+ border-radius: var(--tl-radius-3);
1415
1445
  font-size: 12px;
1416
1446
  }
1417
1447
 
1418
1448
  .tlui-toast__container[data-severity='success'] .tlui-icon {
1419
- color: var(--color-success);
1449
+ color: var(--tl-color-success);
1420
1450
  }
1421
1451
 
1422
1452
  .tlui-toast__container[data-severity='info'] .tlui-icon {
1423
- color: var(--color-info);
1453
+ color: var(--tl-color-info);
1424
1454
  }
1425
1455
 
1426
1456
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
1427
- color: var(--color-warning);
1457
+ color: var(--tl-color-warning);
1428
1458
  }
1429
1459
 
1430
1460
  .tlui-toast__container[data-severity='error'] .tlui-icon {
1431
- color: var(--color-danger);
1461
+ color: var(--tl-color-danger);
1432
1462
  }
1433
1463
 
1434
1464
  .tlui-toast__main {
@@ -1437,27 +1467,27 @@
1437
1467
  }
1438
1468
 
1439
1469
  .tlui-toast__content {
1440
- padding: var(--space-4);
1470
+ padding: var(--tl-space-4);
1441
1471
  display: flex;
1442
1472
  line-height: 1.4;
1443
1473
  flex-direction: column;
1444
- gap: var(--space-3);
1474
+ gap: var(--tl-space-3);
1445
1475
  }
1446
1476
 
1447
1477
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
1448
- padding-bottom: var(--space-2);
1478
+ padding-bottom: var(--tl-space-2);
1449
1479
  }
1450
1480
 
1451
1481
  .tlui-toast__title {
1452
1482
  font-weight: bold;
1453
- color: var(--color-text-1);
1483
+ color: var(--tl-color-text-1);
1454
1484
  /* this makes the default toast look better */
1455
1485
  line-height: 16px;
1456
1486
  }
1457
1487
 
1458
1488
  .tlui-toast__description {
1459
- color: var(--color-text-1);
1460
- padding: var(--space-3);
1489
+ color: var(--tl-color-text-1);
1490
+ padding: var(--tl-space-3);
1461
1491
  margin: 0px;
1462
1492
  padding: 0px;
1463
1493
  }
@@ -1509,14 +1539,14 @@
1509
1539
  left: 0px;
1510
1540
  width: 100%;
1511
1541
  height: 100%;
1512
- z-index: var(--layer-canvas-overlays);
1513
- background-color: var(--color-overlay);
1542
+ z-index: var(--tl-layer-canvas-overlays);
1543
+ background-color: var(--tl-color-overlay);
1514
1544
  pointer-events: all;
1515
1545
  animation: tl-fade-in 0.12s ease-out;
1516
1546
  display: grid;
1517
1547
  place-items: center;
1518
1548
  overflow-y: auto;
1519
- padding: 0px var(--space-3);
1549
+ padding: 0px var(--tl-space-3);
1520
1550
  }
1521
1551
 
1522
1552
  .tlui-dialog__content {
@@ -1524,9 +1554,9 @@
1524
1554
  flex-direction: column;
1525
1555
  position: relative;
1526
1556
  cursor: default;
1527
- background-color: var(--color-panel);
1528
- box-shadow: var(--shadow-3);
1529
- border-radius: var(--radius-3);
1557
+ background-color: var(--tl-color-panel);
1558
+ box-shadow: var(--tl-shadow-3);
1559
+ border-radius: var(--tl-radius-3);
1530
1560
  font-size: 12px;
1531
1561
  overflow: hidden;
1532
1562
  min-width: 300px;
@@ -1539,9 +1569,9 @@
1539
1569
  display: flex;
1540
1570
  align-items: center;
1541
1571
  flex: 0;
1542
- z-index: var(--layer-header-footer);
1543
- padding-left: var(--space-4);
1544
- color: var(--color-text);
1572
+ z-index: var(--tl-layer-header-footer);
1573
+ padding-left: var(--tl-space-4);
1574
+ color: var(--tl-color-text);
1545
1575
  height: 40px;
1546
1576
  }
1547
1577
 
@@ -1550,7 +1580,7 @@
1550
1580
  font-weight: inherit;
1551
1581
  font-size: 12px;
1552
1582
  margin: 0px;
1553
- color: var(--color-text-1);
1583
+ color: var(--tl-color-text-1);
1554
1584
  }
1555
1585
 
1556
1586
  .tlui-dialog__header__close {
@@ -1558,16 +1588,16 @@
1558
1588
  }
1559
1589
 
1560
1590
  .tlui-dialog__body {
1561
- padding: var(--space-4) var(--space-4);
1591
+ padding: var(--tl-space-4) var(--tl-space-4);
1562
1592
  flex: 0 1;
1563
1593
  overflow-y: auto;
1564
1594
  overflow-x: hidden;
1565
- color: var(--color-text-1);
1595
+ color: var(--tl-color-text-1);
1566
1596
  user-select: all;
1567
1597
  -webkit-user-select: text;
1568
1598
  }
1569
1599
  .tlui-dialog__body a {
1570
- color: var(--color-selected);
1600
+ color: var(--tl-color-selected);
1571
1601
  }
1572
1602
 
1573
1603
  .tlui-dialog__body ul,
@@ -1575,13 +1605,13 @@
1575
1605
  padding-left: 16px;
1576
1606
  display: flex;
1577
1607
  flex-direction: column;
1578
- gap: var(--space-2);
1608
+ gap: var(--tl-space-2);
1579
1609
  }
1580
1610
 
1581
1611
  .tlui-dialog__footer {
1582
1612
  position: relative;
1583
1613
  min-height: 12px;
1584
- z-index: var(--layer-header-footer);
1614
+ z-index: var(--tl-layer-header-footer);
1585
1615
  }
1586
1616
 
1587
1617
  .tlui-dialog__footer__actions {
@@ -1601,15 +1631,15 @@
1601
1631
  .tlui-edit-link-dialog {
1602
1632
  display: flex;
1603
1633
  flex-direction: column;
1604
- gap: var(--space-4);
1605
- color: var(--color-text);
1634
+ gap: var(--tl-space-4);
1635
+ color: var(--tl-color-text);
1606
1636
  }
1607
1637
 
1608
1638
  .tlui-edit-link-dialog__input {
1609
- background-color: var(--color-muted-2);
1639
+ background-color: var(--tl-color-muted-2);
1610
1640
  flex-grow: 2;
1611
- border-radius: var(--radius-2);
1612
- padding: 0px var(--space-4);
1641
+ border-radius: var(--tl-radius-2);
1642
+ padding: 0px var(--tl-space-4);
1613
1643
  }
1614
1644
 
1615
1645
  /* Embed Dialog */
@@ -1617,15 +1647,15 @@
1617
1647
  .tlui-embed__spacer {
1618
1648
  flex-grow: 2;
1619
1649
  min-height: 0px;
1620
- margin-left: calc(-1 * var(--space-4));
1621
- margin-top: calc(-1 * var(--space-4));
1650
+ margin-left: calc(-1 * var(--tl-space-4));
1651
+ margin-top: calc(-1 * var(--tl-space-4));
1622
1652
  pointer-events: none;
1623
1653
  }
1624
1654
 
1625
1655
  .tlui-embed-dialog__list {
1626
1656
  display: flex;
1627
1657
  flex-direction: column;
1628
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
1658
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
1629
1659
  }
1630
1660
 
1631
1661
  .tlui-embed-dialog__item__image {
@@ -1637,49 +1667,49 @@
1637
1667
  background-size: contain;
1638
1668
  background-repeat: no-repeat;
1639
1669
  background-position: center center;
1640
- background-color: var(--color-selected-contrast);
1641
- border-radius: var(--radius-1);
1670
+ background-color: var(--tl-color-selected-contrast);
1671
+ border-radius: var(--tl-radius-1);
1642
1672
  }
1643
1673
 
1644
1674
  .tlui-embed-dialog__enter {
1645
1675
  display: flex;
1646
1676
  flex-direction: column;
1647
- gap: var(--space-4);
1648
- color: var(--color-text-1);
1677
+ gap: var(--tl-space-4);
1678
+ color: var(--tl-color-text-1);
1649
1679
  }
1650
1680
 
1651
1681
  .tlui-embed-dialog__input {
1652
- background-color: var(--color-muted-2);
1682
+ background-color: var(--tl-color-muted-2);
1653
1683
  flex-grow: 2;
1654
- border-radius: var(--radius-2);
1655
- padding: 0px var(--space-4);
1684
+ border-radius: var(--tl-radius-2);
1685
+ padding: 0px var(--tl-space-4);
1656
1686
  }
1657
1687
 
1658
1688
  .tlui-embed-dialog__warning {
1659
- color: var(--color-danger);
1689
+ color: var(--tl-color-danger);
1660
1690
  text-shadow: none;
1661
1691
  }
1662
1692
 
1663
1693
  .tlui-embed-dialog__instruction__link {
1664
1694
  display: flex;
1665
- gap: var(--space-1);
1666
- margin-top: var(--space-4);
1695
+ gap: var(--tl-space-1);
1696
+ margin-top: var(--tl-space-4);
1667
1697
  }
1668
1698
 
1669
1699
  .tlui-embed-dialog__enter a {
1670
- color: var(--color-text-1);
1700
+ color: var(--tl-color-text-1);
1671
1701
  }
1672
1702
 
1673
1703
  /* --------------- Keyboard shortcuts --------------- */
1674
1704
 
1675
1705
  .tlui-shortcuts-dialog__header {
1676
- border-bottom: 1px solid var(--color-divider);
1706
+ border-bottom: 1px solid var(--tl-color-divider);
1677
1707
  }
1678
1708
 
1679
1709
  .tlui-shortcuts-dialog__body {
1680
1710
  position: relative;
1681
1711
  columns: 3;
1682
- column-gap: var(--space-9);
1712
+ column-gap: var(--tl-space-9);
1683
1713
  pointer-events: all;
1684
1714
  touch-action: auto;
1685
1715
 
@@ -1697,14 +1727,14 @@
1697
1727
 
1698
1728
  .tlui-shortcuts-dialog__group {
1699
1729
  break-inside: avoid-column;
1700
- padding-bottom: var(--space-6);
1730
+ padding-bottom: var(--tl-space-6);
1701
1731
  }
1702
1732
 
1703
1733
  .tlui-shortcuts-dialog__group__title {
1704
1734
  font-size: inherit;
1705
1735
  font-weight: inherit;
1706
1736
  margin: 0px;
1707
- color: var(--color-text-3);
1737
+ color: var(--tl-color-text-3);
1708
1738
  height: 32px;
1709
1739
  display: flex;
1710
1740
  align-items: center;
@@ -1713,12 +1743,12 @@
1713
1743
  .tlui-shortcuts-dialog__group__content {
1714
1744
  display: flex;
1715
1745
  flex-direction: column;
1716
- color: var(--color-text-1);
1746
+ color: var(--tl-color-text-1);
1717
1747
  }
1718
1748
 
1719
1749
  .tlui-shortcuts-dialog__key-pair {
1720
1750
  display: flex;
1721
- gap: var(--space-4);
1751
+ gap: var(--tl-space-4);
1722
1752
  align-items: center;
1723
1753
  justify-content: space-between;
1724
1754
  height: 32px;
@@ -1745,12 +1775,12 @@
1745
1775
  height: 24px;
1746
1776
  background: linear-gradient(
1747
1777
  to bottom,
1748
- var(--color-panel-transparent) 0%,
1749
- var(--color-panel) 90%,
1750
- var(--color-panel) 100%
1778
+ var(--tl-color-panel-transparent) 0%,
1779
+ var(--tl-color-panel) 90%,
1780
+ var(--tl-color-panel) 100%
1751
1781
  );
1752
- border-bottom-left-radius: var(--radius-3);
1753
- border-bottom-right-radius: var(--radius-3);
1782
+ border-bottom-left-radius: var(--tl-radius-3);
1783
+ border-bottom-right-radius: var(--tl-radius-3);
1754
1784
  pointer-events: none;
1755
1785
  }
1756
1786
 
@@ -1765,10 +1795,10 @@
1765
1795
  .tlui-help-menu {
1766
1796
  pointer-events: all;
1767
1797
  position: absolute;
1768
- bottom: var(--space-2);
1769
- right: var(--space-2);
1770
- z-index: var(--layer-panels);
1771
- border: 2px solid var(--color-background);
1798
+ bottom: var(--tl-space-2);
1799
+ right: var(--tl-space-2);
1800
+ z-index: var(--tl-layer-panels);
1801
+ border: 2px solid var(--tl-color-background);
1772
1802
  border-radius: 100%;
1773
1803
  }
1774
1804
 
@@ -1779,7 +1809,7 @@
1779
1809
  display: flex;
1780
1810
  flex-direction: row;
1781
1811
  justify-content: flex-end;
1782
- z-index: var(--layer-panels);
1812
+ z-index: var(--tl-layer-panels);
1783
1813
  align-items: center;
1784
1814
  padding-top: 2px;
1785
1815
  padding-right: 4px;
@@ -1795,7 +1825,7 @@
1795
1825
  border: none;
1796
1826
  cursor: pointer;
1797
1827
  pointer-events: all;
1798
- border-radius: var(--radius-1);
1828
+ border-radius: var(--tl-radius-1);
1799
1829
  padding-right: 1px;
1800
1830
  height: 100%;
1801
1831
  }
@@ -1808,8 +1838,8 @@
1808
1838
  .tlui-people-menu__avatar {
1809
1839
  height: 24px;
1810
1840
  width: 24px;
1811
- border: 2px solid var(--color-background);
1812
- background-color: var(--color-low);
1841
+ border: 2px solid var(--tl-color-background);
1842
+ background-color: var(--tl-color-low);
1813
1843
  border-radius: 100%;
1814
1844
  display: flex;
1815
1845
  align-items: center;
@@ -1818,7 +1848,7 @@
1818
1848
  font-size: 10px;
1819
1849
  font-weight: bold;
1820
1850
  text-align: center;
1821
- color: var(--color-selected-contrast);
1851
+ color: var(--tl-color-selected-contrast);
1822
1852
  z-index: 2;
1823
1853
  }
1824
1854
 
@@ -1832,7 +1862,7 @@
1832
1862
 
1833
1863
  @media (hover: hover) {
1834
1864
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
1835
- border-color: var(--color-low);
1865
+ border-color: var(--tl-color-low);
1836
1866
  }
1837
1867
  }
1838
1868
 
@@ -1840,12 +1870,12 @@
1840
1870
  min-width: 0px;
1841
1871
  font-size: 11px;
1842
1872
  font-weight: 600;
1843
- color: var(--color-text-1);
1873
+ color: var(--tl-color-text-1);
1844
1874
  font-family: inherit;
1845
1875
  padding: 0px 4px;
1846
1876
  }
1847
1877
  .tlui-people-menu__more::after {
1848
- border-radius: var(--radius-2);
1878
+ border-radius: var(--tl-radius-2);
1849
1879
  inset: 0px;
1850
1880
  }
1851
1881
 
@@ -1874,7 +1904,7 @@
1874
1904
  }
1875
1905
 
1876
1906
  .tlui-people-menu__section:not(:last-child) {
1877
- border-bottom: 1px solid var(--color-divider);
1907
+ border-bottom: 1px solid var(--tl-color-divider);
1878
1908
  }
1879
1909
 
1880
1910
  .tlui-people-menu__user {
@@ -1893,7 +1923,7 @@
1893
1923
  text-overflow: ellipsis;
1894
1924
  white-space: nowrap;
1895
1925
  font-size: 12px;
1896
- color: var(--color-text-1);
1926
+ color: var(--tl-color-text-1);
1897
1927
  max-width: 100%;
1898
1928
  flex-grow: 1;
1899
1929
  flex-shrink: 100;
@@ -1905,7 +1935,7 @@
1905
1935
  text-overflow: ellipsis;
1906
1936
  white-space: nowrap;
1907
1937
  font-size: 12px;
1908
- color: var(--color-text-3);
1938
+ color: var(--tl-color-text-3);
1909
1939
  flex-grow: 100;
1910
1940
  flex-shrink: 0;
1911
1941
  margin-left: 4px;
@@ -1996,7 +2026,7 @@
1996
2026
  inset: 0px;
1997
2027
  border-width: 2px;
1998
2028
  border-style: solid;
1999
- z-index: var(--layer-following-indicator);
2029
+ z-index: var(--tl-layer-following-indicator);
2000
2030
  pointer-events: none;
2001
2031
  }
2002
2032
 
@@ -2015,7 +2045,7 @@
2015
2045
  }
2016
2046
 
2017
2047
  .tlui-contextual-toolbar [data-isactive='true']::after {
2018
- background-color: var(--color-muted-2);
2048
+ background-color: var(--tl-color-muted-2);
2019
2049
  opacity: 1;
2020
2050
  }
2021
2051
 
@@ -2031,7 +2061,7 @@
2031
2061
 
2032
2062
  .tlui-contextual-toolbar[data-visible='true'] {
2033
2063
  opacity: 1;
2034
- z-index: var(--layer-menus);
2064
+ z-index: var(--tl-layer-menus);
2035
2065
  }
2036
2066
 
2037
2067
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -2090,7 +2120,7 @@
2090
2120
 
2091
2121
  @keyframes tlui-slide-in {
2092
2122
  from {
2093
- transform: translateX(calc(100% + var(--space-3)));
2123
+ transform: translateX(calc(100% + var(--tl-space-3)));
2094
2124
  }
2095
2125
  to {
2096
2126
  transform: translateX(0px);
@@ -2102,6 +2132,6 @@
2102
2132
  transform: translateX(var(--radix-toast-swipe-end-x));
2103
2133
  }
2104
2134
  to {
2105
- transform: translateX(calc(100% + var(--space-3)));
2135
+ transform: translateX(calc(100% + var(--tl-space-3)));
2106
2136
  }
2107
2137
  }