tldraw 3.16.0-canary.efdec30fc411 → 3.16.0-canary.f55016ece635

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 (286) hide show
  1. package/dist-cjs/index.d.ts +133 -4
  2. package/dist-cjs/index.js +12 -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/elbow/ElbowArrowDebug.js +3 -3
  13. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  14. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  15. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  16. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  17. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  18. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -12
  19. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  21. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  22. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  23. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  25. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  26. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  27. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +3 -3
  29. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +1 -1
  30. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  31. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  33. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  35. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  36. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  37. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  38. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  40. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  41. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  42. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  43. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  44. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  45. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  46. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  47. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  48. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  49. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +10 -2
  50. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  51. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  52. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  53. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +1 -1
  54. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  55. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  56. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  57. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  58. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  59. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +1 -1
  60. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +2 -2
  61. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  62. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  63. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -22
  64. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  65. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +188 -78
  66. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  67. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +1 -1
  68. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +2 -2
  69. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +15 -3
  70. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +146 -168
  72. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/primitives/layout.js +30 -5
  74. package/dist-cjs/lib/ui/components/primitives/layout.js.map +2 -2
  75. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  76. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  77. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  78. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +3 -19
  79. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  80. package/dist-cjs/lib/ui/context/actions.js +16 -2
  81. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  82. package/dist-cjs/lib/ui/context/components.js +2 -0
  83. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  84. package/dist-cjs/lib/ui/hooks/useTools.js +21 -3
  85. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  86. package/dist-cjs/lib/ui/version.js +3 -3
  87. package/dist-cjs/lib/ui/version.js.map +1 -1
  88. package/dist-esm/index.d.mts +133 -4
  89. package/dist-esm/index.mjs +18 -3
  90. package/dist-esm/index.mjs.map +2 -2
  91. package/dist-esm/lib/Tldraw.mjs +14 -4
  92. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  93. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  94. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  95. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  96. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  97. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  98. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  99. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  100. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  101. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  102. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  103. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  104. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  105. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +13 -12
  106. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  107. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  108. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  109. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  110. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  111. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  112. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  113. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  114. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  115. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +3 -3
  116. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +1 -1
  117. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  118. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  119. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  120. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  121. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  122. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  123. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  124. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  125. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  126. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  127. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  128. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  129. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  130. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  131. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  132. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  133. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  134. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  135. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  136. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +10 -2
  137. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  138. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  139. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  140. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +1 -1
  141. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  142. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  143. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  144. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  145. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  146. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +1 -1
  147. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  148. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  149. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  150. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -22
  151. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  152. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -80
  153. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  154. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +2 -1
  155. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  156. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +16 -4
  157. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  158. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +155 -170
  159. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  160. package/dist-esm/lib/ui/components/primitives/layout.mjs +31 -6
  161. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +2 -2
  162. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  163. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  164. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  165. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +3 -19
  166. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  167. package/dist-esm/lib/ui/context/actions.mjs +16 -2
  168. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  169. package/dist-esm/lib/ui/context/components.mjs +2 -0
  170. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  171. package/dist-esm/lib/ui/hooks/useTools.mjs +22 -3
  172. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  173. package/dist-esm/lib/ui/version.mjs +3 -3
  174. package/dist-esm/lib/ui/version.mjs.map +1 -1
  175. package/package.json +11 -34
  176. package/src/index.ts +11 -1
  177. package/src/lib/Tldraw.tsx +15 -2
  178. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  179. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  180. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  181. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +4 -3
  182. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +7 -6
  183. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  184. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  185. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  186. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  187. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  188. package/src/lib/shapes/frame/FrameShapeUtil.tsx +21 -14
  189. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  190. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  191. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  192. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  193. package/src/lib/shapes/image/ImageShapeUtil.tsx +3 -3
  194. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  195. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  196. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  197. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  198. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  199. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  200. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  201. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  202. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  203. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  204. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  205. package/src/lib/ui/TldrawUi.tsx +33 -12
  206. package/src/lib/ui/assetUrls.ts +13 -10
  207. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +13 -2
  208. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  209. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +1 -1
  210. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  211. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  212. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +1 -1
  213. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  214. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -24
  215. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +208 -56
  216. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +3 -2
  217. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +22 -5
  218. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +184 -191
  219. package/src/lib/ui/components/primitives/layout.tsx +79 -5
  220. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  221. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  222. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +5 -18
  223. package/src/lib/ui/context/actions.tsx +16 -2
  224. package/src/lib/ui/context/components.tsx +3 -0
  225. package/src/lib/ui/hooks/useTools.tsx +25 -3
  226. package/src/lib/ui/version.ts +3 -3
  227. package/src/lib/ui.css +349 -243
  228. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  229. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  230. package/src/test/A11y.test.tsx +3 -2
  231. package/src/test/ClickManager.test.ts +7 -6
  232. package/src/test/Editor.test.tsx +20 -19
  233. package/src/test/EraserTool.test.ts +184 -13
  234. package/src/test/HandTool.test.ts +10 -9
  235. package/src/test/HighlightShape.test.ts +2 -1
  236. package/src/test/SelectTool.test.ts +3 -2
  237. package/src/test/TLUserPreferences.test.ts +4 -3
  238. package/src/test/TestEditor.ts +13 -15
  239. package/src/test/TldrawEditor.test.tsx +11 -10
  240. package/src/test/ZoomTool.test.ts +7 -6
  241. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  242. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  243. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  244. package/src/test/arrows-megabus.test.tsx +5 -4
  245. package/src/test/bindings.test.tsx +24 -37
  246. package/src/test/bookmark-shapes.test.ts +1 -8
  247. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  248. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  249. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  250. package/src/test/commands/alignShapes.test.tsx +25 -24
  251. package/src/test/commands/animationSpeed.test.ts +2 -1
  252. package/src/test/commands/centerOnPoint.test.ts +3 -2
  253. package/src/test/commands/clipboard.test.ts +3 -2
  254. package/src/test/commands/createShapes.test.ts +2 -1
  255. package/src/test/commands/deleteShapes.test.ts +2 -1
  256. package/src/test/commands/distributeShapes.test.tsx +11 -10
  257. package/src/test/commands/getSvgString.test.ts +2 -1
  258. package/src/test/commands/packShapes.test.ts +5 -4
  259. package/src/test/commands/resizeShape.test.ts +2 -1
  260. package/src/test/commands/rotateShapes.test.ts +7 -6
  261. package/src/test/commands/setCamera.test.ts +4 -3
  262. package/src/test/commands/setCurrentPage.test.ts +3 -2
  263. package/src/test/commands/stackShapes.test.ts +11 -10
  264. package/src/test/commands/stretch.test.tsx +13 -12
  265. package/src/test/createDeepLink.test.tsx +2 -1
  266. package/src/test/cropping.test.ts +3 -2
  267. package/src/test/drawing.test.ts +2 -1
  268. package/src/test/flipShapes.test.ts +4 -3
  269. package/src/test/frames.test.ts +25 -24
  270. package/src/test/getCulledShapes.test.tsx +3 -2
  271. package/src/test/groups.test.tsx +1 -1
  272. package/src/test/handleDeepLink.test.tsx +2 -1
  273. package/src/test/maxShapes.test.ts +3 -2
  274. package/src/test/modifiers.test.ts +5 -4
  275. package/src/test/navigation.test.ts +12 -11
  276. package/src/test/panning.test.ts +2 -1
  277. package/src/test/perf/perf.test.ts +2 -1
  278. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  279. package/src/test/resizing.test.ts +39 -38
  280. package/src/test/select.test.tsx +4 -3
  281. package/src/test/selection-omnibus.test.ts +11 -10
  282. package/src/test/shapeutils.test.ts +4 -3
  283. package/src/test/translating.test.ts +9 -8
  284. package/tldraw.css +650 -533
  285. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  286. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
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 {
@@ -203,13 +203,21 @@
203
203
 
204
204
  .tlui-main-toolbar__lock-button {
205
205
  position: absolute;
206
- top: 4px;
207
- right: 0px;
208
206
  pointer-events: all;
209
207
  height: 40px;
210
208
  width: 40px;
209
+ border-radius: var(--tl-radius-2);
210
+ }
211
+
212
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
213
+ top: 4px;
214
+ right: 0px;
211
215
  min-width: 0px;
212
- border-radius: var(--radius-2);
216
+ }
217
+
218
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__lock-button {
219
+ bottom: 0px;
220
+ min-height: 0px;
213
221
  }
214
222
 
215
223
  .tlui-main-toolbar__lock-button::after {
@@ -232,24 +240,24 @@
232
240
  }
233
241
 
234
242
  .tlui-button__tool[aria-pressed='true'] {
235
- color: var(--color-selected-contrast);
243
+ color: var(--tl-color-selected-contrast);
236
244
  }
237
245
 
238
246
  .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
239
- color: var(--color-selected-contrast);
247
+ color: var(--tl-color-selected-contrast);
240
248
  }
241
249
 
242
250
  .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
243
- background: var(--color-selected);
251
+ background: var(--tl-color-selected);
244
252
  opacity: 1;
245
253
  }
246
254
 
247
- .tlui-layout__mobile .tlui-button__tool {
255
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool {
248
256
  height: 48px;
249
257
  width: 43px;
250
258
  }
251
259
 
252
- .tlui-layout__mobile .tlui-button__tool > .tlui-icon {
260
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool > .tlui-icon {
253
261
  height: 16px;
254
262
  width: 16px;
255
263
  }
@@ -266,6 +274,18 @@
266
274
  margin-right: -2px;
267
275
  }
268
276
 
277
+ /* Column layout */
278
+
279
+ .tlui-column {
280
+ display: flex;
281
+ flex-direction: column;
282
+ padding: 2px 0;
283
+ }
284
+ .tlui-column > * {
285
+ margin-top: -2px;
286
+ margin-bottom: -2px;
287
+ }
288
+
269
289
  /* Grid layout */
270
290
 
271
291
  .tlui-grid {
@@ -301,9 +321,9 @@
301
321
  pointer-events: none;
302
322
  user-select: none;
303
323
  contain: strict;
304
- z-index: var(--layer-panels);
324
+ z-index: var(--tl-layer-panels);
305
325
  transform: translate3d(0, 0, 0);
306
- --sab: env(safe-area-inset-bottom);
326
+ --tl-sab: env(safe-area-inset-bottom);
307
327
  font-weight: 500;
308
328
  line-height: 1.6;
309
329
  -webkit-font-smoothing: antialiased;
@@ -356,11 +376,11 @@
356
376
  justify-content: flex-start;
357
377
  align-items: flex-start;
358
378
  width: min-content;
359
- gap: var(--space-3);
360
- margin: var(--space-2) var(--space-3);
379
+ gap: var(--tl-space-3);
380
+ margin: var(--tl-space-2) var(--tl-space-3);
361
381
  white-space: nowrap;
362
382
  pointer-events: none;
363
- z-index: var(--layer-panels);
383
+ z-index: var(--tl-layer-panels);
364
384
  }
365
385
 
366
386
  /* ---------------------- Icon ---------------------- */
@@ -388,7 +408,7 @@
388
408
 
389
409
  .tlui-slider__container {
390
410
  width: 100%;
391
- padding: 0px var(--space-4);
411
+ padding: 0px var(--tl-space-4);
392
412
  }
393
413
 
394
414
  .tlui-slider {
@@ -414,7 +434,7 @@
414
434
  content: '';
415
435
  height: 3px;
416
436
  width: 100%;
417
- background-color: var(--color-muted-1);
437
+ background-color: var(--tl-color-muted-1);
418
438
  border-radius: 14px;
419
439
  }
420
440
 
@@ -423,7 +443,7 @@
423
443
  top: calc(50% - 2px);
424
444
  left: 0px;
425
445
  height: 3px;
426
- background-color: var(--color-selected);
446
+ background-color: var(--tl-color-selected);
427
447
  border-radius: 14px;
428
448
  }
429
449
 
@@ -435,16 +455,16 @@
435
455
  height: 18px;
436
456
  position: relative;
437
457
  top: -1px;
438
- background-color: var(--color-panel);
458
+ background-color: var(--tl-color-panel);
439
459
  border-radius: 999px;
440
- box-shadow: inset 0px 0px 0px 2px var(--color-text-1);
460
+ box-shadow: inset 0px 0px 0px 2px var(--tl-color-text-1);
441
461
  }
442
462
 
443
463
  .tlui-slider__thumb:active {
444
464
  cursor: grabbing;
445
465
  box-shadow:
446
- inset 0px 0px 0px 2px var(--color-text-1),
447
- var(--shadow-1);
466
+ inset 0px 0px 0px 2px var(--tl-color-text-1),
467
+ var(--tl-shadow-1);
448
468
  }
449
469
 
450
470
  /* ---------------------- Input --------------------- */
@@ -453,7 +473,7 @@
453
473
  background: none;
454
474
  margin: 0px;
455
475
  position: relative;
456
- z-index: var(--layer-above);
476
+ z-index: var(--tl-layer-above);
457
477
  height: 40px;
458
478
  max-height: 40px;
459
479
  display: flex;
@@ -462,8 +482,8 @@
462
482
  font-family: inherit;
463
483
  font-size: 12px;
464
484
  font-weight: inherit;
465
- color: var(--color-text-1);
466
- padding: var(--space-4);
485
+ color: var(--tl-color-text-1);
486
+ padding: var(--tl-space-4);
467
487
  padding-left: 0px;
468
488
  border: none;
469
489
  outline: none;
@@ -479,8 +499,8 @@
479
499
  height: 44px;
480
500
  display: flex;
481
501
  align-items: center;
482
- gap: var(--space-4);
483
- color: var(--color-text);
502
+ gap: var(--tl-space-4);
503
+ color: var(--tl-color-text);
484
504
  }
485
505
 
486
506
  .tlui-input__wrapper > .tlui-icon {
@@ -512,7 +532,7 @@
512
532
  grid-auto-columns: minmax(1em, auto);
513
533
  align-self: bottom;
514
534
  color: currentColor;
515
- margin-left: var(--space-4);
535
+ margin-left: var(--tl-space-4);
516
536
  }
517
537
 
518
538
  .tlui-kbd > span {
@@ -529,13 +549,13 @@
529
549
  }
530
550
 
531
551
  .tlui-kbd:not(:last-child) {
532
- margin-right: var(--space-2);
552
+ margin-right: var(--tl-space-2);
533
553
  }
534
554
 
535
555
  /* Focus Mode Button */
536
556
 
537
557
  .tlui-focus-button {
538
- z-index: var(--layer-panels);
558
+ z-index: var(--tl-layer-panels);
539
559
  pointer-events: all;
540
560
  }
541
561
 
@@ -546,16 +566,16 @@
546
566
  }
547
567
 
548
568
  .tlui-menu {
549
- z-index: var(--layer-menus);
569
+ z-index: var(--tl-layer-menus);
550
570
  height: fit-content;
551
571
  width: fit-content;
552
- border-radius: var(--radius-3);
572
+ border-radius: var(--tl-radius-3);
553
573
  pointer-events: all;
554
574
  touch-action: auto;
555
575
  overflow-y: auto;
556
576
  overscroll-behavior: none;
557
- background-color: var(--color-panel);
558
- box-shadow: var(--shadow-3);
577
+ background-color: var(--tl-color-panel);
578
+ box-shadow: var(--tl-shadow-3);
559
579
  }
560
580
 
561
581
  .tlui-menu::-webkit-scrollbar {
@@ -573,7 +593,7 @@
573
593
  }
574
594
 
575
595
  .tlui-menu__group {
576
- border-bottom: 1px solid var(--color-divider);
596
+ border-bottom: 1px solid var(--tl-color-divider);
577
597
  }
578
598
  .tlui-menu__group:nth-last-of-type(1) {
579
599
  border-bottom: none;
@@ -583,23 +603,23 @@
583
603
 
584
604
  .tlui-menu__submenu__trigger[data-state='open']::after {
585
605
  opacity: 1;
586
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
606
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
587
607
  }
588
608
 
589
609
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
590
610
  opacity: 1;
591
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
611
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
592
612
  }
593
613
 
594
614
  @media (hover: hover) {
595
615
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
596
616
  opacity: 1;
597
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
617
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
598
618
  }
599
619
 
600
620
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
601
621
  opacity: 1;
602
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
622
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
603
623
  }
604
624
  }
605
625
 
@@ -624,7 +644,7 @@
624
644
  .tlui-menu-click-capture {
625
645
  position: fixed;
626
646
  inset: 0;
627
- z-index: var(--layer-menu-click-capture);
647
+ z-index: var(--tl-layer-menu-click-capture);
628
648
  }
629
649
 
630
650
  /* --------------------- Popover -------------------- */
@@ -640,10 +660,10 @@
640
660
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
641
661
  margin: 0px;
642
662
  border: none;
643
- border-radius: var(--radius-3);
644
- background-color: var(--color-panel);
645
- box-shadow: var(--shadow-3);
646
- z-index: var(--layer-menus);
663
+ border-radius: var(--tl-radius-3);
664
+ background-color: var(--tl-color-panel);
665
+ box-shadow: var(--tl-shadow-3);
666
+ z-index: var(--tl-layer-menus);
647
667
  overflow: hidden;
648
668
  overflow-y: auto;
649
669
  touch-action: auto;
@@ -656,22 +676,22 @@
656
676
 
657
677
  .tlui-menu-zone {
658
678
  position: relative;
659
- z-index: var(--layer-panels);
679
+ z-index: var(--tl-layer-panels);
660
680
  width: fit-content;
661
- border-right: 2px solid var(--color-background);
662
- border-bottom: 2px solid var(--color-background);
663
- border-bottom-right-radius: var(--radius-4);
664
- background-color: var(--color-low);
681
+ border-right: 2px solid var(--tl-color-background);
682
+ border-bottom: 2px solid var(--tl-color-background);
683
+ border-bottom-right-radius: var(--tl-radius-4);
684
+ background-color: var(--tl-color-low);
665
685
  }
666
686
 
667
687
  .tlui-menu-zone *[data-state='open']::after {
668
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
688
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
669
689
  opacity: 1;
670
690
  }
671
691
 
672
692
  @media (hover: hover) {
673
693
  .tlui-menu-zone *[data-state='open']:not(:hover)::after {
674
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
694
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
675
695
  opacity: 1;
676
696
  }
677
697
  }
@@ -697,8 +717,8 @@
697
717
  align-items: center;
698
718
  width: 100%;
699
719
  height: 40px;
700
- padding-left: var(--space-4);
701
- border-bottom: 1px solid var(--color-divider);
720
+ padding-left: var(--tl-space-4);
721
+ border-bottom: 1px solid var(--tl-color-divider);
702
722
  }
703
723
 
704
724
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -706,7 +726,7 @@
706
726
  }
707
727
 
708
728
  .tlui-page-menu__header__title {
709
- color: var(--color-text);
729
+ color: var(--tl-color-text);
710
730
  font-size: 12px;
711
731
  flex-grow: 2;
712
732
  }
@@ -791,7 +811,7 @@
791
811
  display: inline-flex;
792
812
  align-items: center;
793
813
  justify-content: center;
794
- color: var(--color-text);
814
+ color: var(--tl-color-text);
795
815
  }
796
816
 
797
817
  .tlui-page_menu__item__sortable {
@@ -804,7 +824,7 @@
804
824
  flex-direction: row;
805
825
  align-items: center;
806
826
  overflow: hidden;
807
- z-index: var(--layer-above);
827
+ z-index: var(--tl-layer-above);
808
828
  }
809
829
 
810
830
  .tlui-page_menu__item__sortable__title {
@@ -816,7 +836,7 @@
816
836
  }
817
837
 
818
838
  .tlui-page_menu__item__sortable:focus-visible {
819
- z-index: var(--layer-focused-input);
839
+ z-index: var(--tl-layer-focused-input);
820
840
  }
821
841
 
822
842
  .tlui-page_menu__item__sortable__handle {
@@ -825,7 +845,7 @@
825
845
  min-width: 0px;
826
846
  height: 40px;
827
847
  cursor: grab;
828
- color: var(--color-text-3);
848
+ color: var(--tl-color-text-3);
829
849
  flex-shrink: 0;
830
850
  margin-right: -9px;
831
851
  }
@@ -867,13 +887,13 @@
867
887
  }
868
888
 
869
889
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']::after {
870
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
890
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
871
891
  opacity: 1;
872
892
  }
873
893
 
874
894
  @media (hover: hover) {
875
895
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']:not(:hover)::after {
876
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
896
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
877
897
  opacity: 1;
878
898
  }
879
899
  }
@@ -909,7 +929,7 @@
909
929
  top: 48px;
910
930
  left: -9999px;
911
931
  padding: 8px 16px;
912
- z-index: var(--layer-toasts);
932
+ z-index: var(--tl-layer-toasts);
913
933
  }
914
934
 
915
935
  .tl-skip-to-main-content:focus {
@@ -921,11 +941,11 @@
921
941
  .tlui-offline-indicator {
922
942
  display: flex;
923
943
  flex-direction: row;
924
- gap: var(--space-3);
925
- color: var(--color-text);
926
- background-color: var(--color-low);
927
- border: 3px solid var(--color-background);
928
- padding: 0px var(--space-5);
944
+ gap: var(--tl-space-3);
945
+ color: var(--tl-color-text);
946
+ background-color: var(--tl-color-low);
947
+ border: 3px solid var(--tl-color-background);
948
+ padding: 0px var(--tl-space-5);
929
949
  height: 42px;
930
950
  align-items: center;
931
951
  justify-content: center;
@@ -940,10 +960,10 @@
940
960
  /* ------------------- Style panel ------------------ */
941
961
 
942
962
  .tlui-style-panel__wrapper {
943
- box-shadow: var(--shadow-2);
944
- border-radius: var(--radius-3);
963
+ box-shadow: var(--tl-shadow-2);
964
+ border-radius: var(--tl-radius-3);
945
965
  pointer-events: all;
946
- background-color: var(--color-panel);
966
+ background-color: var(--tl-color-panel);
947
967
  height: fit-content;
948
968
  max-height: 100%;
949
969
  margin: 8px;
@@ -952,7 +972,7 @@
952
972
  overscroll-behavior: none;
953
973
  overflow-y: auto;
954
974
  overflow-x: hidden;
955
- color: var(--color-text);
975
+ color: var(--tl-color-text);
956
976
  }
957
977
  /* if the style panel is the only child (ie no share menu), increase the margin */
958
978
  .tlui-style-panel__wrapper:only-child {
@@ -961,7 +981,7 @@
961
981
 
962
982
  .tlui-style-panel {
963
983
  position: relative;
964
- z-index: var(--layer-panels);
984
+ z-index: var(--tl-layer-panels);
965
985
  pointer-events: all;
966
986
  width: 148px;
967
987
  max-width: 148px;
@@ -969,7 +989,7 @@
969
989
 
970
990
  .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
971
991
  border-radius: 10px;
972
- outline: 2px solid var(--color-text);
992
+ outline: 2px solid var(--tl-color-text);
973
993
  outline-offset: -5px;
974
994
  }
975
995
 
@@ -988,7 +1008,7 @@
988
1008
  }
989
1009
 
990
1010
  .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
991
- border-bottom: 1px solid var(--color-divider);
1011
+ border-bottom: 1px solid var(--tl-color-divider);
992
1012
  }
993
1013
 
994
1014
  .tlui-style-panel__section:empty {
@@ -997,7 +1017,7 @@
997
1017
 
998
1018
  .tlui-style-panel__section__common:not(:only-child) {
999
1019
  margin-bottom: 7px;
1000
- border-bottom: 1px solid var(--color-divider);
1020
+ border-bottom: 1px solid var(--tl-color-divider);
1001
1021
  }
1002
1022
 
1003
1023
  .tlui-style-panel__dropdown-picker:only-child {
@@ -1008,8 +1028,8 @@
1008
1028
  display: flex;
1009
1029
  grid-template-columns: 1fr auto;
1010
1030
  align-items: center;
1011
- padding-left: var(--space-4);
1012
- color: var(--color-text-1);
1031
+ padding-left: var(--tl-space-4);
1032
+ color: var(--tl-color-text-1);
1013
1033
  font-size: 12px;
1014
1034
  }
1015
1035
 
@@ -1023,13 +1043,16 @@
1023
1043
 
1024
1044
  .tlui-style-panel .tlui-button[data-state='open']::after {
1025
1045
  opacity: 1;
1026
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1046
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1027
1047
  }
1028
1048
 
1029
1049
  @media (hover: hover) {
1050
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
1051
+ background: none;
1052
+ }
1030
1053
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
1031
1054
  opacity: 1;
1032
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1055
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1033
1056
  }
1034
1057
  }
1035
1058
 
@@ -1039,14 +1062,14 @@
1039
1062
  .tlui-style-panel__section__common .tlui-style-panel__subheading,
1040
1063
  .tlui-style-panel__subheading + .tlui-slider__container {
1041
1064
  margin: 0;
1042
- padding: var(--space-2) var(--space-3) 0px var(--space-4);
1065
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
1043
1066
  font-size: 12px;
1044
1067
  font-weight: inherit;
1045
1068
  line-height: inherit;
1046
1069
  }
1047
1070
 
1048
1071
  .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1049
- padding-top: var(--space-3);
1072
+ padding-top: var(--tl-space-3);
1050
1073
  }
1051
1074
 
1052
1075
  .tlui-style-panel__subheading + .tlui-slider__container {
@@ -1057,11 +1080,11 @@
1057
1080
 
1058
1081
  .tlui-layout__bottom {
1059
1082
  grid-row: 2;
1083
+ width: 100%;
1060
1084
  }
1061
1085
 
1062
1086
  .tlui-layout__bottom__main {
1063
1087
  width: 100%;
1064
- position: relative;
1065
1088
  display: flex;
1066
1089
  align-items: flex-end;
1067
1090
  justify-content: center;
@@ -1073,11 +1096,10 @@
1073
1096
  display: flex;
1074
1097
  width: min-content;
1075
1098
  flex-direction: column;
1076
- z-index: var(--layer-panels);
1099
+ z-index: var(--tl-layer-panels);
1077
1100
  pointer-events: all;
1078
1101
  position: absolute;
1079
1102
  left: 0px;
1080
- bottom: 0px;
1081
1103
  }
1082
1104
 
1083
1105
  .tlui-navigation-panel::before {
@@ -1087,10 +1109,10 @@
1087
1109
  z-index: -1;
1088
1110
  inset: -2px -2px 0px 0px;
1089
1111
  border-radius: 0;
1090
- border-top: 2px solid var(--color-background);
1091
- border-right: 2px solid var(--color-background);
1092
- border-top-right-radius: var(--radius-4);
1093
- background-color: var(--color-low);
1112
+ border-top: 2px solid var(--tl-color-background);
1113
+ border-right: 2px solid var(--tl-color-background);
1114
+ border-top-right-radius: var(--tl-radius-4);
1115
+ background-color: var(--tl-color-low);
1094
1116
  }
1095
1117
 
1096
1118
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -1104,7 +1126,7 @@
1104
1126
  height: 96px;
1105
1127
  min-height: 96px;
1106
1128
  overflow: hidden;
1107
- padding: var(--space-3);
1129
+ padding: var(--tl-space-3);
1108
1130
  padding-top: 0px;
1109
1131
  }
1110
1132
 
@@ -1124,7 +1146,23 @@
1124
1146
  align-items: center;
1125
1147
  justify-content: center;
1126
1148
  flex-grow: 2;
1127
- padding-bottom: calc(var(--space-3) + var(--sab));
1149
+ }
1150
+
1151
+ .tlui-main-toolbar--horizontal {
1152
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
1153
+ max-width: 100%;
1154
+ }
1155
+
1156
+ .tlui-main-toolbar--vertical {
1157
+ position: absolute;
1158
+ left: 0;
1159
+ top: 90px; /* height of page menu + 'back to content' button */
1160
+ bottom: 140px; /* height of expanded mini-map */
1161
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
1162
+ }
1163
+
1164
+ [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
1165
+ bottom: 90px; /* collapsed mini-map, but same as top to keep things looking even */
1128
1166
  }
1129
1167
 
1130
1168
  /* Centered Content */
@@ -1132,73 +1170,145 @@
1132
1170
  position: relative;
1133
1171
  width: fit-content;
1134
1172
  display: flex;
1135
- gap: var(--space-3);
1136
- align-items: flex-end;
1173
+ gap: var(--tl-space-3);
1174
+ align-items: flex-start;
1175
+ }
1176
+
1177
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__inner {
1178
+ flex-direction: column;
1137
1179
  }
1138
1180
 
1139
- .tlui-main-toolbar__left {
1181
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__left {
1140
1182
  width: fit-content;
1141
1183
  }
1184
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__left {
1185
+ display: flex;
1186
+ height: fit-content;
1187
+ }
1142
1188
 
1143
1189
  /* Row of controls + lock button */
1144
1190
  .tlui-main-toolbar__extras {
1145
1191
  position: relative;
1146
- z-index: var(--layer-above);
1147
- width: 100%;
1192
+ z-index: var(--tl-layer-above);
1148
1193
  pointer-events: none;
1149
- top: 6px;
1150
- height: 48px;
1194
+ align-self: stretch;
1151
1195
  }
1152
1196
 
1153
1197
  .tlui-main-toolbar__extras:empty {
1154
1198
  display: none;
1155
1199
  }
1156
1200
 
1201
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras {
1202
+ height: 48px;
1203
+ top: 6px;
1204
+ }
1205
+
1206
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras {
1207
+ width: 48px;
1208
+ order: 1;
1209
+ }
1210
+
1157
1211
  .tlui-main-toolbar__extras__controls {
1158
- display: flex;
1159
1212
  position: relative;
1160
- flex-direction: row;
1161
- z-index: var(--layer-above);
1162
- background-color: var(--color-low);
1163
- border-top-left-radius: var(--radius-4);
1164
- border-top-right-radius: var(--radius-4);
1165
- border: 2px solid var(--color-background);
1213
+ z-index: var(--tl-layer-above);
1214
+ background-color: var(--tl-color-low);
1215
+ border: 2px solid var(--tl-color-background);
1216
+ pointer-events: all;
1217
+ }
1218
+
1219
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
1220
+ border-top-left-radius: var(--tl-radius-4);
1221
+ border-top-right-radius: var(--tl-radius-4);
1166
1222
  margin-left: 8px;
1167
1223
  margin-right: 0px;
1168
- pointer-events: all;
1224
+ width: fit-content;
1225
+ }
1226
+
1227
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
1228
+ border-top-right-radius: var(--tl-radius-4);
1229
+ border-bottom-right-radius: var(--tl-radius-4);
1230
+ margin-top: 8px;
1231
+ margin-left: -2px;
1232
+ margin-bottom: 0px;
1169
1233
  width: fit-content;
1170
1234
  }
1171
1235
 
1172
1236
  .tlui-main-toolbar__tools {
1173
- display: flex;
1174
- flex-direction: row;
1175
- align-items: center;
1176
- border-radius: var(--radius-4);
1177
- z-index: var(--layer-panels);
1237
+ border-radius: var(--tl-radius-4);
1238
+ z-index: var(--tl-layer-panels);
1178
1239
  pointer-events: all;
1179
1240
  position: relative;
1180
- background: var(--color-panel);
1181
- box-shadow: var(--shadow-2);
1241
+ background: var(--tl-color-panel);
1242
+ box-shadow: var(--tl-shadow-2);
1243
+ }
1244
+
1245
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
1246
+ align-self: flex-end;
1247
+ }
1248
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__mobile-style-panel {
1249
+ align-self: flex-start;
1182
1250
  }
1183
1251
 
1184
- .tlui-main-toolbar__overflow {
1252
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
1185
1253
  width: 40px;
1186
1254
  margin-left: 2px;
1187
1255
  }
1256
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__overflow {
1257
+ height: 40px;
1258
+ margin-top: 2px;
1259
+ }
1188
1260
 
1189
- .tlui-layout__mobile .tlui-main-toolbar__overflow {
1261
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
1190
1262
  width: 32px;
1191
1263
  padding: 0px;
1192
1264
  }
1193
1265
 
1194
- .tlui-main-toolbar *[data-state='open']::after {
1195
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1266
+ .tlui-main-toolbar--horizontal *[data-state='open']::after {
1267
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1268
+ opacity: 1;
1269
+ }
1270
+ .tlui-main-toolbar--vertical *[data-state='open']::after {
1271
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1196
1272
  opacity: 1;
1197
1273
  }
1198
1274
 
1275
+ .tlui-main-toolbar__overflow-content {
1276
+ touch-action: none;
1277
+ }
1278
+
1279
+ .tlui-main-toolbar__tools [data-toolbar-visible='false'],
1280
+ .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
1281
+ display: none;
1282
+ }
1283
+
1284
+ .tlui-main-toolbar__group:empty {
1285
+ display: none;
1286
+ }
1287
+ .tlui-row.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
1288
+ border-right: 1px solid var(--color-divider);
1289
+ margin-right: 2px;
1290
+ }
1291
+ .tlui-column.tlui-main-toolbar__group:not(
1292
+ :nth-last-child(-n + 1 of [data-toolbar-visible='true'])
1293
+ ) {
1294
+ border-bottom: 1px solid var(--color-divider);
1295
+ margin-bottom: 2px;
1296
+ }
1297
+ .tlui-grid.tlui-main-toolbar__group {
1298
+ grid-column: 1 / span 4;
1299
+ }
1300
+ .tlui-grid.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
1301
+ border-bottom: 1px solid var(--color-divider);
1302
+ margin-bottom: 2px;
1303
+ }
1304
+
1199
1305
  @media (hover: hover) {
1200
- .tlui-main-toolbar *[data-state='open']:not(:hover)::after {
1201
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1306
+ .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
1307
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1308
+ opacity: 1;
1309
+ }
1310
+ .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
1311
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1202
1312
  opacity: 1;
1203
1313
  }
1204
1314
  }
@@ -1209,44 +1319,40 @@
1209
1319
  font-size: 12px;
1210
1320
  padding: 2px 8px;
1211
1321
  border-radius: 4px;
1212
- background-color: var(--color-tooltip);
1322
+ background-color: var(--tl-color-tooltip);
1213
1323
  box-shadow: none;
1214
- color: var(--color-text-shadow);
1324
+ color: var(--tl-color-text-shadow);
1215
1325
  max-width: 400px;
1216
1326
  width: fit-content;
1217
1327
  text-align: center;
1218
- pointer-events: none;
1219
1328
  will-change: transform, opacity;
1220
1329
  z-index: 2;
1221
1330
  }
1222
1331
 
1223
1332
  .tlui-tooltip__arrow {
1224
- fill: var(--color-tooltip);
1333
+ fill: var(--tl-color-tooltip);
1225
1334
  will-change: opacity;
1226
1335
  }
1227
1336
 
1228
1337
  [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
1229
- z-index: var(--layer-toasts) !important;
1230
- }
1231
-
1232
- [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
1233
- transition: all 0.1s ease-out;
1338
+ z-index: var(--tl-layer-toasts) !important;
1339
+ pointer-events: none;
1234
1340
  }
1235
1341
 
1236
1342
  /* ------------------- Debug panel ------------------ */
1237
1343
 
1238
1344
  .tlui-debug-panel {
1239
- background-color: var(--color-low);
1345
+ background-color: var(--tl-color-low);
1240
1346
  width: 100%;
1241
1347
  display: grid;
1242
1348
  align-items: center;
1243
1349
  grid-template-columns: 1fr auto auto auto;
1244
1350
  justify-content: space-between;
1245
- padding-left: var(--space-4);
1246
- border-top: 1px solid var(--color-background);
1351
+ padding-left: var(--tl-space-4);
1352
+ border-top: 1px solid var(--tl-color-background);
1247
1353
  font-size: 12px;
1248
- color: var(--color-text-1);
1249
- z-index: var(--layer-panels);
1354
+ color: var(--tl-color-text-1);
1355
+ z-index: var(--tl-layer-panels);
1250
1356
  pointer-events: all;
1251
1357
  }
1252
1358
 
@@ -1262,7 +1368,7 @@
1262
1368
 
1263
1369
  .tlui-debug-panel__fps__slow {
1264
1370
  font-weight: bold;
1265
- color: var(--color-danger);
1371
+ color: var(--tl-color-danger);
1266
1372
  }
1267
1373
 
1268
1374
  .tlui-a11y-audit {
@@ -1272,7 +1378,7 @@
1272
1378
  .tlui-a11y-audit th,
1273
1379
  .tlui-a11y-audit td {
1274
1380
  padding: 8px;
1275
- border: 1px solid var(--color-low-border);
1381
+ border: 1px solid var(--tl-color-low-border);
1276
1382
  }
1277
1383
 
1278
1384
  /* --------------------- Toasts --------------------- */
@@ -1285,10 +1391,10 @@
1285
1391
  align-items: flex-end;
1286
1392
  justify-content: flex-end;
1287
1393
  flex-direction: column;
1288
- gap: var(--space-3);
1394
+ gap: var(--tl-space-3);
1289
1395
  pointer-events: none;
1290
- padding: 0px var(--space-3) 64px 0px;
1291
- z-index: var(--layer-toasts);
1396
+ padding: 0px var(--tl-space-3) 64px 0px;
1397
+ z-index: var(--tl-layer-toasts);
1292
1398
  }
1293
1399
 
1294
1400
  .tlui-toast__viewport > * {
@@ -1297,34 +1403,34 @@
1297
1403
 
1298
1404
  .tlui-toast__icon {
1299
1405
  padding-top: 11px;
1300
- padding-left: var(--space-4);
1301
- color: var(--color-text-1);
1406
+ padding-left: var(--tl-space-4);
1407
+ color: var(--tl-color-text-1);
1302
1408
  }
1303
1409
 
1304
1410
  .tlui-toast__container {
1305
1411
  min-width: 200px;
1306
1412
  display: flex;
1307
1413
  flex-direction: row;
1308
- background-color: var(--color-panel);
1309
- box-shadow: var(--shadow-2);
1310
- border-radius: var(--radius-3);
1414
+ background-color: var(--tl-color-panel);
1415
+ box-shadow: var(--tl-shadow-2);
1416
+ border-radius: var(--tl-radius-3);
1311
1417
  font-size: 12px;
1312
1418
  }
1313
1419
 
1314
1420
  .tlui-toast__container[data-severity='success'] .tlui-icon {
1315
- color: var(--color-success);
1421
+ color: var(--tl-color-success);
1316
1422
  }
1317
1423
 
1318
1424
  .tlui-toast__container[data-severity='info'] .tlui-icon {
1319
- color: var(--color-info);
1425
+ color: var(--tl-color-info);
1320
1426
  }
1321
1427
 
1322
1428
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
1323
- color: var(--color-warning);
1429
+ color: var(--tl-color-warning);
1324
1430
  }
1325
1431
 
1326
1432
  .tlui-toast__container[data-severity='error'] .tlui-icon {
1327
- color: var(--color-danger);
1433
+ color: var(--tl-color-danger);
1328
1434
  }
1329
1435
 
1330
1436
  .tlui-toast__main {
@@ -1333,27 +1439,27 @@
1333
1439
  }
1334
1440
 
1335
1441
  .tlui-toast__content {
1336
- padding: var(--space-4);
1442
+ padding: var(--tl-space-4);
1337
1443
  display: flex;
1338
1444
  line-height: 1.4;
1339
1445
  flex-direction: column;
1340
- gap: var(--space-3);
1446
+ gap: var(--tl-space-3);
1341
1447
  }
1342
1448
 
1343
1449
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
1344
- padding-bottom: var(--space-2);
1450
+ padding-bottom: var(--tl-space-2);
1345
1451
  }
1346
1452
 
1347
1453
  .tlui-toast__title {
1348
1454
  font-weight: bold;
1349
- color: var(--color-text-1);
1455
+ color: var(--tl-color-text-1);
1350
1456
  /* this makes the default toast look better */
1351
1457
  line-height: 16px;
1352
1458
  }
1353
1459
 
1354
1460
  .tlui-toast__description {
1355
- color: var(--color-text-1);
1356
- padding: var(--space-3);
1461
+ color: var(--tl-color-text-1);
1462
+ padding: var(--tl-space-3);
1357
1463
  margin: 0px;
1358
1464
  padding: 0px;
1359
1465
  }
@@ -1405,14 +1511,14 @@
1405
1511
  left: 0px;
1406
1512
  width: 100%;
1407
1513
  height: 100%;
1408
- z-index: var(--layer-canvas-overlays);
1409
- background-color: var(--color-overlay);
1514
+ z-index: var(--tl-layer-canvas-overlays);
1515
+ background-color: var(--tl-color-overlay);
1410
1516
  pointer-events: all;
1411
1517
  animation: tl-fade-in 0.12s ease-out;
1412
1518
  display: grid;
1413
1519
  place-items: center;
1414
1520
  overflow-y: auto;
1415
- padding: 0px var(--space-3);
1521
+ padding: 0px var(--tl-space-3);
1416
1522
  }
1417
1523
 
1418
1524
  .tlui-dialog__content {
@@ -1420,9 +1526,9 @@
1420
1526
  flex-direction: column;
1421
1527
  position: relative;
1422
1528
  cursor: default;
1423
- background-color: var(--color-panel);
1424
- box-shadow: var(--shadow-3);
1425
- border-radius: var(--radius-3);
1529
+ background-color: var(--tl-color-panel);
1530
+ box-shadow: var(--tl-shadow-3);
1531
+ border-radius: var(--tl-radius-3);
1426
1532
  font-size: 12px;
1427
1533
  overflow: hidden;
1428
1534
  min-width: 300px;
@@ -1435,9 +1541,9 @@
1435
1541
  display: flex;
1436
1542
  align-items: center;
1437
1543
  flex: 0;
1438
- z-index: var(--layer-header-footer);
1439
- padding-left: var(--space-4);
1440
- color: var(--color-text);
1544
+ z-index: var(--tl-layer-header-footer);
1545
+ padding-left: var(--tl-space-4);
1546
+ color: var(--tl-color-text);
1441
1547
  height: 40px;
1442
1548
  }
1443
1549
 
@@ -1446,7 +1552,7 @@
1446
1552
  font-weight: inherit;
1447
1553
  font-size: 12px;
1448
1554
  margin: 0px;
1449
- color: var(--color-text-1);
1555
+ color: var(--tl-color-text-1);
1450
1556
  }
1451
1557
 
1452
1558
  .tlui-dialog__header__close {
@@ -1454,16 +1560,16 @@
1454
1560
  }
1455
1561
 
1456
1562
  .tlui-dialog__body {
1457
- padding: var(--space-4) var(--space-4);
1563
+ padding: var(--tl-space-4) var(--tl-space-4);
1458
1564
  flex: 0 1;
1459
1565
  overflow-y: auto;
1460
1566
  overflow-x: hidden;
1461
- color: var(--color-text-1);
1567
+ color: var(--tl-color-text-1);
1462
1568
  user-select: all;
1463
1569
  -webkit-user-select: text;
1464
1570
  }
1465
1571
  .tlui-dialog__body a {
1466
- color: var(--color-selected);
1572
+ color: var(--tl-color-selected);
1467
1573
  }
1468
1574
 
1469
1575
  .tlui-dialog__body ul,
@@ -1471,13 +1577,13 @@
1471
1577
  padding-left: 16px;
1472
1578
  display: flex;
1473
1579
  flex-direction: column;
1474
- gap: var(--space-2);
1580
+ gap: var(--tl-space-2);
1475
1581
  }
1476
1582
 
1477
1583
  .tlui-dialog__footer {
1478
1584
  position: relative;
1479
1585
  min-height: 12px;
1480
- z-index: var(--layer-header-footer);
1586
+ z-index: var(--tl-layer-header-footer);
1481
1587
  }
1482
1588
 
1483
1589
  .tlui-dialog__footer__actions {
@@ -1497,15 +1603,15 @@
1497
1603
  .tlui-edit-link-dialog {
1498
1604
  display: flex;
1499
1605
  flex-direction: column;
1500
- gap: var(--space-4);
1501
- color: var(--color-text);
1606
+ gap: var(--tl-space-4);
1607
+ color: var(--tl-color-text);
1502
1608
  }
1503
1609
 
1504
1610
  .tlui-edit-link-dialog__input {
1505
- background-color: var(--color-muted-2);
1611
+ background-color: var(--tl-color-muted-2);
1506
1612
  flex-grow: 2;
1507
- border-radius: var(--radius-2);
1508
- padding: 0px var(--space-4);
1613
+ border-radius: var(--tl-radius-2);
1614
+ padding: 0px var(--tl-space-4);
1509
1615
  }
1510
1616
 
1511
1617
  /* Embed Dialog */
@@ -1513,15 +1619,15 @@
1513
1619
  .tlui-embed__spacer {
1514
1620
  flex-grow: 2;
1515
1621
  min-height: 0px;
1516
- margin-left: calc(-1 * var(--space-4));
1517
- margin-top: calc(-1 * var(--space-4));
1622
+ margin-left: calc(-1 * var(--tl-space-4));
1623
+ margin-top: calc(-1 * var(--tl-space-4));
1518
1624
  pointer-events: none;
1519
1625
  }
1520
1626
 
1521
1627
  .tlui-embed-dialog__list {
1522
1628
  display: flex;
1523
1629
  flex-direction: column;
1524
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
1630
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
1525
1631
  }
1526
1632
 
1527
1633
  .tlui-embed-dialog__item__image {
@@ -1533,49 +1639,49 @@
1533
1639
  background-size: contain;
1534
1640
  background-repeat: no-repeat;
1535
1641
  background-position: center center;
1536
- background-color: var(--color-selected-contrast);
1537
- border-radius: var(--radius-1);
1642
+ background-color: var(--tl-color-selected-contrast);
1643
+ border-radius: var(--tl-radius-1);
1538
1644
  }
1539
1645
 
1540
1646
  .tlui-embed-dialog__enter {
1541
1647
  display: flex;
1542
1648
  flex-direction: column;
1543
- gap: var(--space-4);
1544
- color: var(--color-text-1);
1649
+ gap: var(--tl-space-4);
1650
+ color: var(--tl-color-text-1);
1545
1651
  }
1546
1652
 
1547
1653
  .tlui-embed-dialog__input {
1548
- background-color: var(--color-muted-2);
1654
+ background-color: var(--tl-color-muted-2);
1549
1655
  flex-grow: 2;
1550
- border-radius: var(--radius-2);
1551
- padding: 0px var(--space-4);
1656
+ border-radius: var(--tl-radius-2);
1657
+ padding: 0px var(--tl-space-4);
1552
1658
  }
1553
1659
 
1554
1660
  .tlui-embed-dialog__warning {
1555
- color: var(--color-danger);
1661
+ color: var(--tl-color-danger);
1556
1662
  text-shadow: none;
1557
1663
  }
1558
1664
 
1559
1665
  .tlui-embed-dialog__instruction__link {
1560
1666
  display: flex;
1561
- gap: var(--space-1);
1562
- margin-top: var(--space-4);
1667
+ gap: var(--tl-space-1);
1668
+ margin-top: var(--tl-space-4);
1563
1669
  }
1564
1670
 
1565
1671
  .tlui-embed-dialog__enter a {
1566
- color: var(--color-text-1);
1672
+ color: var(--tl-color-text-1);
1567
1673
  }
1568
1674
 
1569
1675
  /* --------------- Keyboard shortcuts --------------- */
1570
1676
 
1571
1677
  .tlui-shortcuts-dialog__header {
1572
- border-bottom: 1px solid var(--color-divider);
1678
+ border-bottom: 1px solid var(--tl-color-divider);
1573
1679
  }
1574
1680
 
1575
1681
  .tlui-shortcuts-dialog__body {
1576
1682
  position: relative;
1577
1683
  columns: 3;
1578
- column-gap: var(--space-9);
1684
+ column-gap: var(--tl-space-9);
1579
1685
  pointer-events: all;
1580
1686
  touch-action: auto;
1581
1687
 
@@ -1593,14 +1699,14 @@
1593
1699
 
1594
1700
  .tlui-shortcuts-dialog__group {
1595
1701
  break-inside: avoid-column;
1596
- padding-bottom: var(--space-6);
1702
+ padding-bottom: var(--tl-space-6);
1597
1703
  }
1598
1704
 
1599
1705
  .tlui-shortcuts-dialog__group__title {
1600
1706
  font-size: inherit;
1601
1707
  font-weight: inherit;
1602
1708
  margin: 0px;
1603
- color: var(--color-text-3);
1709
+ color: var(--tl-color-text-3);
1604
1710
  height: 32px;
1605
1711
  display: flex;
1606
1712
  align-items: center;
@@ -1609,12 +1715,12 @@
1609
1715
  .tlui-shortcuts-dialog__group__content {
1610
1716
  display: flex;
1611
1717
  flex-direction: column;
1612
- color: var(--color-text-1);
1718
+ color: var(--tl-color-text-1);
1613
1719
  }
1614
1720
 
1615
1721
  .tlui-shortcuts-dialog__key-pair {
1616
1722
  display: flex;
1617
- gap: var(--space-4);
1723
+ gap: var(--tl-space-4);
1618
1724
  align-items: center;
1619
1725
  justify-content: space-between;
1620
1726
  height: 32px;
@@ -1641,12 +1747,12 @@
1641
1747
  height: 24px;
1642
1748
  background: linear-gradient(
1643
1749
  to bottom,
1644
- var(--color-panel-transparent) 0%,
1645
- var(--color-panel) 90%,
1646
- var(--color-panel) 100%
1750
+ var(--tl-color-panel-transparent) 0%,
1751
+ var(--tl-color-panel) 90%,
1752
+ var(--tl-color-panel) 100%
1647
1753
  );
1648
- border-bottom-left-radius: var(--radius-3);
1649
- border-bottom-right-radius: var(--radius-3);
1754
+ border-bottom-left-radius: var(--tl-radius-3);
1755
+ border-bottom-right-radius: var(--tl-radius-3);
1650
1756
  pointer-events: none;
1651
1757
  }
1652
1758
 
@@ -1661,10 +1767,10 @@
1661
1767
  .tlui-help-menu {
1662
1768
  pointer-events: all;
1663
1769
  position: absolute;
1664
- bottom: var(--space-2);
1665
- right: var(--space-2);
1666
- z-index: var(--layer-panels);
1667
- border: 2px solid var(--color-background);
1770
+ bottom: var(--tl-space-2);
1771
+ right: var(--tl-space-2);
1772
+ z-index: var(--tl-layer-panels);
1773
+ border: 2px solid var(--tl-color-background);
1668
1774
  border-radius: 100%;
1669
1775
  }
1670
1776
 
@@ -1675,7 +1781,7 @@
1675
1781
  display: flex;
1676
1782
  flex-direction: row;
1677
1783
  justify-content: flex-end;
1678
- z-index: var(--layer-panels);
1784
+ z-index: var(--tl-layer-panels);
1679
1785
  align-items: center;
1680
1786
  padding-top: 2px;
1681
1787
  padding-right: 4px;
@@ -1691,7 +1797,7 @@
1691
1797
  border: none;
1692
1798
  cursor: pointer;
1693
1799
  pointer-events: all;
1694
- border-radius: var(--radius-1);
1800
+ border-radius: var(--tl-radius-1);
1695
1801
  padding-right: 1px;
1696
1802
  height: 100%;
1697
1803
  }
@@ -1704,8 +1810,8 @@
1704
1810
  .tlui-people-menu__avatar {
1705
1811
  height: 24px;
1706
1812
  width: 24px;
1707
- border: 2px solid var(--color-background);
1708
- background-color: var(--color-low);
1813
+ border: 2px solid var(--tl-color-background);
1814
+ background-color: var(--tl-color-low);
1709
1815
  border-radius: 100%;
1710
1816
  display: flex;
1711
1817
  align-items: center;
@@ -1714,7 +1820,7 @@
1714
1820
  font-size: 10px;
1715
1821
  font-weight: bold;
1716
1822
  text-align: center;
1717
- color: var(--color-selected-contrast);
1823
+ color: var(--tl-color-selected-contrast);
1718
1824
  z-index: 2;
1719
1825
  }
1720
1826
 
@@ -1728,7 +1834,7 @@
1728
1834
 
1729
1835
  @media (hover: hover) {
1730
1836
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
1731
- border-color: var(--color-low);
1837
+ border-color: var(--tl-color-low);
1732
1838
  }
1733
1839
  }
1734
1840
 
@@ -1736,12 +1842,12 @@
1736
1842
  min-width: 0px;
1737
1843
  font-size: 11px;
1738
1844
  font-weight: 600;
1739
- color: var(--color-text-1);
1845
+ color: var(--tl-color-text-1);
1740
1846
  font-family: inherit;
1741
1847
  padding: 0px 4px;
1742
1848
  }
1743
1849
  .tlui-people-menu__more::after {
1744
- border-radius: var(--radius-2);
1850
+ border-radius: var(--tl-radius-2);
1745
1851
  inset: 0px;
1746
1852
  }
1747
1853
 
@@ -1770,7 +1876,7 @@
1770
1876
  }
1771
1877
 
1772
1878
  .tlui-people-menu__section:not(:last-child) {
1773
- border-bottom: 1px solid var(--color-divider);
1879
+ border-bottom: 1px solid var(--tl-color-divider);
1774
1880
  }
1775
1881
 
1776
1882
  .tlui-people-menu__user {
@@ -1789,7 +1895,7 @@
1789
1895
  text-overflow: ellipsis;
1790
1896
  white-space: nowrap;
1791
1897
  font-size: 12px;
1792
- color: var(--color-text-1);
1898
+ color: var(--tl-color-text-1);
1793
1899
  max-width: 100%;
1794
1900
  flex-grow: 1;
1795
1901
  flex-shrink: 100;
@@ -1801,7 +1907,7 @@
1801
1907
  text-overflow: ellipsis;
1802
1908
  white-space: nowrap;
1803
1909
  font-size: 12px;
1804
- color: var(--color-text-3);
1910
+ color: var(--tl-color-text-3);
1805
1911
  flex-grow: 100;
1806
1912
  flex-shrink: 0;
1807
1913
  margin-left: 4px;
@@ -1892,7 +1998,7 @@
1892
1998
  inset: 0px;
1893
1999
  border-width: 2px;
1894
2000
  border-style: solid;
1895
- z-index: var(--layer-following-indicator);
2001
+ z-index: var(--tl-layer-following-indicator);
1896
2002
  pointer-events: none;
1897
2003
  }
1898
2004
 
@@ -1911,7 +2017,7 @@
1911
2017
  }
1912
2018
 
1913
2019
  .tlui-contextual-toolbar [data-isactive='true']::after {
1914
- background-color: var(--color-muted-2);
2020
+ background-color: var(--tl-color-muted-2);
1915
2021
  opacity: 1;
1916
2022
  }
1917
2023
 
@@ -1927,7 +2033,7 @@
1927
2033
 
1928
2034
  .tlui-contextual-toolbar[data-visible='true'] {
1929
2035
  opacity: 1;
1930
- z-index: var(--layer-menus);
2036
+ z-index: var(--tl-layer-menus);
1931
2037
  }
1932
2038
 
1933
2039
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -1986,7 +2092,7 @@
1986
2092
 
1987
2093
  @keyframes tlui-slide-in {
1988
2094
  from {
1989
- transform: translateX(calc(100% + var(--space-3)));
2095
+ transform: translateX(calc(100% + var(--tl-space-3)));
1990
2096
  }
1991
2097
  to {
1992
2098
  transform: translateX(0px);
@@ -1998,6 +2104,6 @@
1998
2104
  transform: translateX(var(--radix-toast-swipe-end-x));
1999
2105
  }
2000
2106
  to {
2001
- transform: translateX(calc(100% + var(--space-3)));
2107
+ transform: translateX(calc(100% + var(--tl-space-3)));
2002
2108
  }
2003
2109
  }