tldraw 3.16.0-canary.ffdf566dd0a8 → 3.16.0-internal.71f83a8a571b

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 (515) hide show
  1. package/dist-cjs/index.d.ts +348 -113
  2. package/dist-cjs/index.js +40 -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 +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/arrowLabel.js +6 -0
  13. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
  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/elbow/elbowArrowSnapLines.js.map +1 -1
  18. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +4 -4
  19. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  21. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  22. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  23. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  24. package/dist-cjs/lib/shapes/frame/FrameShapeTool.js.map +1 -1
  25. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +20 -13
  26. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  27. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  28. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  29. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +2 -2
  30. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +2 -2
  31. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +3 -2
  32. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  33. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  34. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  35. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  36. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  37. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  38. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  40. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  41. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -5
  42. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  43. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +4 -4
  44. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  45. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  46. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  47. package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +2 -2
  48. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  49. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  50. package/dist-cjs/lib/shapes/shared/crop.js +1 -0
  51. package/dist-cjs/lib/shapes/shared/crop.js.map +2 -2
  52. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  53. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +3 -4
  54. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  55. package/dist-cjs/lib/shapes/shared/useEditableRichText.js.map +2 -2
  56. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  57. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  58. package/dist-cjs/lib/shapes/text/PlainTextArea.js +2 -2
  59. package/dist-cjs/lib/shapes/text/PlainTextArea.js.map +2 -2
  60. package/dist-cjs/lib/shapes/text/RichTextArea.js +3 -3
  61. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  62. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  63. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  64. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  65. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  66. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  67. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  68. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  69. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  70. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +1 -1
  71. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  72. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  73. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  74. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  75. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  76. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  77. package/dist-cjs/lib/ui/components/A11y.js +1 -1
  78. package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  80. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  81. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  82. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  83. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  84. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  85. package/dist-cjs/lib/ui/components/EditLinkDialog.js +11 -1
  86. package/dist-cjs/lib/ui/components/EditLinkDialog.js.map +2 -2
  87. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  88. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  89. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  90. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  91. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  92. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  93. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  94. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  95. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +3 -2
  96. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  97. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  98. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  99. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  100. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  101. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +9 -4
  102. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  103. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
  104. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  105. package/dist-cjs/lib/ui/components/{primitives/TldrawUiButtonPicker.js → StylePanel/StylePanelButtonPicker.js} +52 -56
  106. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  107. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  108. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  109. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +26 -25
  110. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  111. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +47 -43
  112. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  113. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  114. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  115. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +3 -2
  116. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  117. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  118. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  119. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  120. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  121. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  122. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  123. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +3 -3
  124. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  125. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  126. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  127. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +2 -2
  128. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  129. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +11 -2
  130. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  131. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +2 -2
  132. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
  133. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  134. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  135. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +18 -5
  136. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  137. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +21 -4
  138. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  139. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +185 -158
  140. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  141. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  142. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  143. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  144. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  145. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  146. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +154 -20
  147. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  148. package/dist-cjs/lib/ui/context/actions.js +23 -10
  149. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  150. package/dist-cjs/lib/ui/context/components.js +2 -0
  151. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  152. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  153. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  154. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  155. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  156. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  157. package/dist-cjs/lib/ui/hooks/useTools.js +94 -9
  158. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  159. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  160. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +4 -2
  161. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  162. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  163. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  164. package/dist-cjs/lib/ui/version.js +3 -3
  165. package/dist-cjs/lib/ui/version.js.map +1 -1
  166. package/dist-cjs/lib/utils/excalidraw/putExcalidrawContent.js.map +1 -1
  167. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  168. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  169. package/dist-cjs/lib/utils/export/export.js +0 -20
  170. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  171. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  172. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  173. package/dist-esm/index.d.mts +348 -113
  174. package/dist-esm/index.mjs +75 -29
  175. package/dist-esm/index.mjs.map +2 -2
  176. package/dist-esm/lib/Tldraw.mjs +14 -4
  177. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  178. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  179. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  180. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  181. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  182. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  183. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  184. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  185. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  186. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  187. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  188. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  189. package/dist-esm/lib/shapes/arrow/elbow/elbowArrowSnapLines.mjs.map +1 -1
  190. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +5 -5
  191. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  192. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  193. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  194. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  195. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  196. package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs.map +1 -1
  197. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +21 -13
  198. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  199. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  200. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  201. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +3 -3
  202. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +2 -2
  203. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +4 -2
  204. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  205. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  206. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  207. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  208. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  209. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  210. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  211. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  212. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  213. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -5
  214. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  215. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +5 -5
  216. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  217. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  218. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  219. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
  220. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  221. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  222. package/dist-esm/lib/shapes/shared/crop.mjs +1 -0
  223. package/dist-esm/lib/shapes/shared/crop.mjs.map +2 -2
  224. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  225. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +4 -5
  226. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  227. package/dist-esm/lib/shapes/shared/useEditableRichText.mjs.map +2 -2
  228. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  229. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  230. package/dist-esm/lib/shapes/text/PlainTextArea.mjs +3 -3
  231. package/dist-esm/lib/shapes/text/PlainTextArea.mjs.map +2 -2
  232. package/dist-esm/lib/shapes/text/RichTextArea.mjs +3 -4
  233. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  234. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  235. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  236. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  237. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  238. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  239. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  240. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  241. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  242. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +1 -1
  243. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  244. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  245. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  246. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  247. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  248. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  249. package/dist-esm/lib/ui/components/A11y.mjs +2 -2
  250. package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
  251. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  252. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  253. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  254. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  255. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  256. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  257. package/dist-esm/lib/ui/components/EditLinkDialog.mjs +11 -1
  258. package/dist-esm/lib/ui/components/EditLinkDialog.mjs.map +2 -2
  259. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  260. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  261. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  262. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  263. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  264. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  265. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  266. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  267. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +4 -3
  268. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  269. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  270. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  271. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  272. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  273. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +14 -5
  274. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  275. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
  276. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  277. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +126 -0
  278. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  279. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  280. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  281. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +23 -22
  282. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  283. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +44 -40
  284. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  285. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  286. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  287. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +3 -2
  288. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  289. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  290. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  291. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  292. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  293. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  294. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  295. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +3 -3
  296. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  297. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  298. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  299. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +2 -2
  300. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  301. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +12 -3
  302. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  303. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +3 -3
  304. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
  305. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  306. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  307. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +18 -5
  308. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  309. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +21 -4
  310. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  311. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +195 -160
  312. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  313. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  314. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  315. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  316. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  317. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  318. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +162 -22
  319. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  320. package/dist-esm/lib/ui/context/actions.mjs +23 -10
  321. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  322. package/dist-esm/lib/ui/context/components.mjs +2 -0
  323. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  324. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  325. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
  326. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  327. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  328. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  329. package/dist-esm/lib/ui/hooks/useTools.mjs +102 -10
  330. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  331. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +4 -2
  332. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  333. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  334. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  335. package/dist-esm/lib/ui/version.mjs +3 -3
  336. package/dist-esm/lib/ui/version.mjs.map +1 -1
  337. package/dist-esm/lib/utils/excalidraw/putExcalidrawContent.mjs.map +1 -1
  338. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  339. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  340. package/dist-esm/lib/utils/export/export.mjs +0 -20
  341. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  342. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  343. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  344. package/package.json +11 -34
  345. package/src/index.ts +56 -22
  346. package/src/lib/Tldraw.tsx +15 -2
  347. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  348. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  349. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  350. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +6 -5
  351. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +48 -6
  352. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  353. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  354. package/src/lib/shapes/arrow/arrowTargetState.ts +1 -1
  355. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  356. package/src/lib/shapes/arrow/elbow/elbowArrowSnapLines.tsx +2 -2
  357. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +5 -5
  358. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  359. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  360. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  361. package/src/lib/shapes/frame/FrameShapeTool.ts +1 -1
  362. package/src/lib/shapes/frame/FrameShapeUtil.tsx +30 -14
  363. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  364. package/src/lib/shapes/frame/components/FrameLabelInput.tsx +3 -3
  365. package/src/lib/shapes/geo/GeoShapeUtil.tsx +4 -2
  366. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  367. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  368. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  369. package/src/lib/shapes/line/LineShapeUtil.test.tsx +8 -7
  370. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  371. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  372. package/src/lib/shapes/note/NoteShapeTool.test.ts +2 -1
  373. package/src/lib/shapes/note/NoteShapeUtil.tsx +10 -4
  374. package/src/lib/shapes/shared/HyperlinkButton.tsx +5 -5
  375. package/src/lib/shapes/shared/PlainTextLabel.tsx +2 -7
  376. package/src/lib/shapes/shared/RichTextLabel.tsx +2 -1
  377. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  378. package/src/lib/shapes/shared/crop.ts +1 -0
  379. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  380. package/src/lib/shapes/shared/useEditablePlainText.ts +12 -12
  381. package/src/lib/shapes/shared/useEditableRichText.ts +7 -3
  382. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  383. package/src/lib/shapes/text/PlainTextArea.tsx +3 -3
  384. package/src/lib/shapes/text/RichTextArea.tsx +3 -4
  385. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  386. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  387. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  388. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  389. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  390. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +1 -1
  391. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  392. package/src/lib/ui/TldrawUi.tsx +33 -12
  393. package/src/lib/ui/assetUrls.ts +13 -10
  394. package/src/lib/ui/components/A11y.tsx +2 -2
  395. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  396. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  397. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  398. package/src/lib/ui/components/EditLinkDialog.tsx +16 -6
  399. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  400. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  401. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  402. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  403. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +5 -4
  404. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  405. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  406. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +27 -13
  407. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -385
  408. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +66 -50
  409. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  410. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +31 -22
  411. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  412. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  413. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +5 -4
  414. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  415. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  416. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  417. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +5 -5
  418. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  419. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +2 -2
  420. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +8 -3
  421. package/src/lib/ui/components/primitives/TldrawUiInput.tsx +3 -3
  422. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  423. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +52 -32
  424. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +35 -9
  425. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +232 -180
  426. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  427. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  428. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  429. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +221 -19
  430. package/src/lib/ui/context/actions.tsx +23 -10
  431. package/src/lib/ui/context/components.tsx +3 -0
  432. package/src/lib/ui/context/events.tsx +2 -1
  433. package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
  434. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  435. package/src/lib/ui/hooks/useTools.tsx +140 -10
  436. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +2 -0
  437. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +4 -2
  438. package/src/lib/ui/kbd-utils.ts +10 -3
  439. package/src/lib/ui/version.ts +3 -3
  440. package/src/lib/ui.css +381 -306
  441. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  442. package/src/lib/utils/excalidraw/putExcalidrawContent.ts +6 -6
  443. package/src/lib/utils/export/copyAs.ts +1 -24
  444. package/src/lib/utils/export/export.ts +0 -36
  445. package/src/lib/utils/export/exportAs.ts +1 -32
  446. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  447. package/src/test/A11y.test.tsx +3 -2
  448. package/src/test/ClickManager.test.ts +7 -6
  449. package/src/test/Editor.test.tsx +55 -27
  450. package/src/test/EraserTool.test.ts +184 -13
  451. package/src/test/HandTool.test.ts +10 -9
  452. package/src/test/HighlightShape.test.ts +2 -1
  453. package/src/test/SelectTool.test.ts +3 -2
  454. package/src/test/TLUserPreferences.test.ts +4 -3
  455. package/src/test/TestEditor.ts +13 -15
  456. package/src/test/TldrawEditor.test.tsx +26 -19
  457. package/src/test/ZoomTool.test.ts +7 -6
  458. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  459. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  460. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  461. package/src/test/arrows-megabus.test.tsx +5 -4
  462. package/src/test/bindings.test.tsx +24 -37
  463. package/src/test/bookmark-shapes.test.ts +1 -8
  464. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  465. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  466. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  467. package/src/test/commands/alignShapes.test.tsx +25 -24
  468. package/src/test/commands/animationSpeed.test.ts +2 -1
  469. package/src/test/commands/centerOnPoint.test.ts +3 -2
  470. package/src/test/commands/clipboard.test.ts +3 -2
  471. package/src/test/commands/createShapes.test.ts +2 -1
  472. package/src/test/commands/deleteShapes.test.ts +2 -1
  473. package/src/test/commands/distributeShapes.test.tsx +11 -10
  474. package/src/test/commands/getSvgString.test.ts +2 -1
  475. package/src/test/commands/packShapes.test.ts +5 -4
  476. package/src/test/commands/putContent.test.ts +1 -0
  477. package/src/test/commands/resizeShape.test.ts +2 -1
  478. package/src/test/commands/rotateShapes.test.ts +7 -6
  479. package/src/test/commands/setCamera.test.ts +4 -3
  480. package/src/test/commands/setCurrentPage.test.ts +3 -2
  481. package/src/test/commands/stackShapes.test.ts +11 -10
  482. package/src/test/commands/stretch.test.tsx +13 -12
  483. package/src/test/commands/updateShapes.test.ts +9 -5
  484. package/src/test/createDeepLink.test.tsx +2 -1
  485. package/src/test/cropping.test.ts +3 -2
  486. package/src/test/custom-clipping.test.ts +442 -0
  487. package/src/test/customSnapping.test.tsx +55 -41
  488. package/src/test/drawing.test.ts +2 -1
  489. package/src/test/flipShapes.test.ts +4 -3
  490. package/src/test/frames.test.ts +25 -24
  491. package/src/test/getCulledShapes.test.tsx +80 -4
  492. package/src/test/groups.test.tsx +5 -3
  493. package/src/test/handleDeepLink.test.tsx +2 -1
  494. package/src/test/maxShapes.test.ts +3 -2
  495. package/src/test/modifiers.test.ts +5 -4
  496. package/src/test/navigation.test.ts +12 -11
  497. package/src/test/panning.test.ts +2 -1
  498. package/src/test/perf/perf.test.ts +2 -1
  499. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  500. package/src/test/resizing.test.ts +39 -38
  501. package/src/test/select.test.tsx +4 -3
  502. package/src/test/selection-omnibus.test.ts +11 -10
  503. package/src/test/shapeutils.test.ts +4 -3
  504. package/src/test/translating.test.ts +11 -10
  505. package/tldraw.css +689 -598
  506. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  507. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  508. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  509. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  510. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  511. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  512. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  513. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +0 -115
  514. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  515. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +0 -109
package/tldraw.css CHANGED
@@ -9,57 +9,58 @@
9
9
  height: 100%;
10
10
  font-size: 12px;
11
11
  /* Spacing */
12
- --space-1: 2px;
13
- --space-2: 4px;
14
- --space-3: 8px;
15
- --space-4: 12px;
16
- --space-5: 16px;
17
- --space-6: 20px;
18
- --space-7: 28px;
19
- --space-8: 32px;
20
- --space-9: 64px;
21
- --space-10: 72px;
12
+ --tl-space-1: 2px;
13
+ --tl-space-2: 4px;
14
+ --tl-space-3: 8px;
15
+ --tl-space-4: 12px;
16
+ --tl-space-5: 16px;
17
+ --tl-space-6: 20px;
18
+ --tl-space-7: 28px;
19
+ --tl-space-8: 32px;
20
+ --tl-space-9: 64px;
21
+ --tl-space-10: 72px;
22
22
  /* Radius */
23
- --radius-0: 2px;
24
- --radius-1: 4px;
25
- --radius-2: 6px;
26
- --radius-3: 9px;
27
- --radius-4: 11px;
23
+ --tl-radius-0: 2px;
24
+ --tl-radius-1: 4px;
25
+ --tl-radius-2: 6px;
26
+ --tl-radius-3: 9px;
27
+ --tl-radius-4: 11px;
28
28
 
29
29
  /* Canvas z-index */
30
- --layer-canvas-hidden: -999999;
31
- --layer-canvas-background: 100;
32
- --layer-canvas-grid: 150;
33
- --layer-watermark: 200;
34
- --layer-canvas-shapes: 300;
35
- --layer-canvas-overlays: 500;
36
- --layer-canvas-blocker: 10000;
30
+ --tl-layer-canvas-hidden: -999999;
31
+ --tl-layer-canvas-background: 100;
32
+ --tl-layer-canvas-grid: 150;
33
+ --tl-layer-watermark: 200;
34
+ --tl-layer-canvas-shapes: 300;
35
+ --tl-layer-canvas-overlays: 500;
36
+ --tl-layer-canvas-in-front: 600;
37
+ --tl-layer-canvas-blocker: 10000;
37
38
 
38
39
  /* Canvas overlays z-index */
39
- --layer-overlays-collaborator-scribble: 10;
40
- --layer-overlays-collaborator-brush: 20;
41
- --layer-overlays-collaborator-shape-indicator: 30;
42
- --layer-overlays-user-scribble: 40;
43
- --layer-overlays-user-brush: 50;
44
- --layer-overlays-user-snapline: 90;
45
- --layer-overlays-selection-fg: 100;
40
+ --tl-layer-overlays-collaborator-scribble: 10;
41
+ --tl-layer-overlays-collaborator-brush: 20;
42
+ --tl-layer-overlays-collaborator-shape-indicator: 30;
43
+ --tl-layer-overlays-user-scribble: 40;
44
+ --tl-layer-overlays-user-brush: 50;
45
+ --tl-layer-overlays-user-snapline: 90;
46
+ --tl-layer-overlays-selection-fg: 100;
46
47
  /* User handles need to be above selection edges / corners, matters for sticky note clone handles */
47
- --layer-overlays-user-handles: 105;
48
- --layer-overlays-user-indicator-hint: 110;
49
- --layer-overlays-custom: 115;
50
- --layer-overlays-collaborator-cursor-hint: 120;
51
- --layer-overlays-collaborator-cursor: 130;
48
+ --tl-layer-overlays-user-handles: 105;
49
+ --tl-layer-overlays-user-indicator-hint: 110;
50
+ --tl-layer-overlays-custom: 115;
51
+ --tl-layer-overlays-collaborator-cursor-hint: 120;
52
+ --tl-layer-overlays-collaborator-cursor: 130;
52
53
 
53
54
  /* Text editor z-index */
54
- --layer-text-container: 1;
55
- --layer-text-content: 3;
56
- --layer-text-editor: 4;
55
+ --tl-layer-text-container: 1;
56
+ --tl-layer-text-content: 3;
57
+ --tl-layer-text-editor: 4;
57
58
 
58
59
  /* Error fallback z-index */
59
- --layer-error-overlay: 1;
60
- --layer-error-canvas: 2;
61
- --layer-error-canvas-after: 3;
62
- --layer-error-content: 4;
60
+ --tl-layer-error-overlay: 1;
61
+ --tl-layer-error-canvas: 2;
62
+ --tl-layer-error-canvas-after: 3;
63
+ --tl-layer-error-content: 4;
63
64
 
64
65
  /* Misc */
65
66
  --tl-zoom: 1;
@@ -124,12 +125,15 @@
124
125
  --tl-font-serif: 'tldraw_serif', serif;
125
126
  --tl-font-mono: 'tldraw_mono', monospace;
126
127
  /* text outline */
127
- --a: calc(min(0.5, 1 / var(--tl-zoom)) * 2px);
128
- --b: calc(min(0.5, 1 / var(--tl-zoom)) * -2px);
128
+ --tl-text-outline-a: calc(min(0.5, 1 / var(--tl-zoom)) * 2px);
129
+ --tl-text-outline-b: calc(min(0.5, 1 / var(--tl-zoom)) * -2px);
129
130
  --tl-text-outline-reference:
130
- 0 var(--b) 0 var(--color-background), 0 var(--a) 0 var(--color-background),
131
- var(--b) var(--b) 0 var(--color-background), var(--a) var(--b) 0 var(--color-background),
132
- var(--a) var(--a) 0 var(--color-background), var(--b) var(--a) 0 var(--color-background);
131
+ 0 var(--tl-text-outline-b) 0 var(--tl-color-background),
132
+ 0 var(--tl-text-outline-a) 0 var(--tl-color-background),
133
+ var(--tl-text-outline-b) var(--tl-text-outline-b) 0 var(--tl-color-background),
134
+ var(--tl-text-outline-a) var(--tl-text-outline-b) 0 var(--tl-color-background),
135
+ var(--tl-text-outline-a) var(--tl-text-outline-a) 0 var(--tl-color-background),
136
+ var(--tl-text-outline-b) var(--tl-text-outline-a) 0 var(--tl-color-background);
133
137
  --tl-text-outline: var(--tl-text-outline-reference);
134
138
  /* own properties */
135
139
  position: relative;
@@ -137,118 +141,118 @@
137
141
  height: 100%;
138
142
  width: 100%;
139
143
  overflow: clip;
140
- color: var(--color-text);
144
+ color: var(--tl-color-text);
141
145
  }
142
146
 
143
147
  .tl-theme__light {
144
148
  /* Canvas */
145
- --color-snap: hsl(0, 76%, 60%);
146
- --color-selection-fill: hsl(210, 100%, 56%, 24%);
147
- --color-selection-stroke: hsl(214, 84%, 56%);
148
- --color-background: hsl(210, 20%, 98%);
149
- --color-brush-fill: hsl(0, 0%, 56%, 10.2%);
150
- --color-brush-stroke: hsl(0, 0%, 56%, 25.1%);
151
- --color-grid: hsl(0, 0%, 43%);
149
+ --tl-color-snap: hsl(0, 76%, 60%);
150
+ --tl-color-selection-fill: hsl(210, 100%, 56%, 24%);
151
+ --tl-color-selection-stroke: hsl(214, 84%, 56%);
152
+ --tl-color-background: hsl(210, 20%, 98%);
153
+ --tl-color-brush-fill: hsl(0, 0%, 56%, 10.2%);
154
+ --tl-color-brush-stroke: hsl(0, 0%, 56%, 25.1%);
155
+ --tl-color-grid: hsl(0, 0%, 43%);
152
156
  /* UI */
153
- --color-low: hsl(204, 16%, 94%);
154
- --color-low-border: hsl(204, 16%, 92%);
155
- --color-culled: hsl(204, 14%, 93%);
156
- --color-muted-none: hsl(0, 0%, 0%, 0%);
157
- --color-muted-0: hsl(0, 0%, 0%, 2%);
158
- --color-muted-1: hsl(0, 0%, 0%, 10%);
159
- --color-muted-2: hsl(0, 0%, 0%, 4.3%);
160
- --color-hint: hsl(0, 0%, 0%, 5.5%);
161
- --color-overlay: hsl(0, 0%, 0%, 20%);
162
- --color-divider: hsl(0, 0%, 91%);
163
- --color-panel: hsl(0, 0%, 99%);
164
- --color-panel-contrast: hsl(0, 0%, 100%);
165
- --color-panel-overlay: hsl(0, 0%, 100%, 82%);
166
- --color-panel-transparent: hsla(0, 0%, 99%, 0%);
167
- --color-selected: hsl(214, 84%, 56%);
168
- --color-selected-contrast: hsl(0, 0%, 100%);
169
- --color-focus: hsl(219, 65%, 50%);
170
- --color-tooltip: hsla(200, 14%, 4%, 1);
157
+ --tl-color-low: hsl(204, 16%, 94%);
158
+ --tl-color-low-border: hsl(204, 16%, 92%);
159
+ --tl-color-culled: hsl(204, 14%, 93%);
160
+ --tl-color-muted-none: hsl(0, 0%, 0%, 0%);
161
+ --tl-color-muted-0: hsl(0, 0%, 0%, 2%);
162
+ --tl-color-muted-1: hsl(0, 0%, 0%, 10%);
163
+ --tl-color-muted-2: hsl(0, 0%, 0%, 4.3%);
164
+ --tl-color-hint: hsl(0, 0%, 0%, 5.5%);
165
+ --tl-color-overlay: hsl(0, 0%, 0%, 20%);
166
+ --tl-color-divider: hsl(0, 0%, 91%);
167
+ --tl-color-panel: hsl(0, 0%, 99%);
168
+ --tl-color-panel-contrast: hsl(0, 0%, 100%);
169
+ --tl-color-panel-overlay: hsl(0, 0%, 100%, 82%);
170
+ --tl-color-panel-transparent: hsla(0, 0%, 99%, 0%);
171
+ --tl-color-selected: hsl(214, 84%, 56%);
172
+ --tl-color-selected-contrast: hsl(0, 0%, 100%);
173
+ --tl-color-focus: hsl(219, 65%, 50%);
174
+ --tl-color-tooltip: hsla(200, 14%, 4%, 1);
171
175
  /* Text */
172
- --color-text: hsl(0, 0%, 0%);
173
- --color-text-0: hsl(0, 0%, 11%);
174
- --color-text-1: hsl(0, 0%, 18%);
175
- --color-text-3: hsl(204, 4%, 45%);
176
- --color-text-shadow: hsl(0, 0%, 100%);
177
- --color-text-highlight: hsl(52, 100%, 50%);
178
- --color-text-highlight-p3: color(display-p3 0.972 0.8205 0.05);
176
+ --tl-color-text: hsl(0, 0%, 0%);
177
+ --tl-color-text-0: hsl(0, 0%, 11%);
178
+ --tl-color-text-1: hsl(0, 0%, 18%);
179
+ --tl-color-text-3: hsl(204, 4%, 45%);
180
+ --tl-color-text-shadow: hsl(0, 0%, 100%);
181
+ --tl-color-text-highlight: hsl(52, 100%, 50%);
182
+ --tl-color-text-highlight-p3: color(display-p3 0.972 0.8205 0.05);
179
183
  /* Named */
180
- --color-primary: hsl(214, 84%, 56%);
181
- --color-success: hsl(123, 46%, 34%);
182
- --color-info: hsl(201, 98%, 41%);
183
- --color-warning: hsl(27, 98%, 47%);
184
- --color-danger: hsl(0, 90%, 43%);
185
- --color-laser: hsl(0, 100%, 50%);
184
+ --tl-color-primary: hsl(214, 84%, 56%);
185
+ --tl-color-success: hsl(123, 46%, 34%);
186
+ --tl-color-info: hsl(201, 98%, 41%);
187
+ --tl-color-warning: hsl(27, 98%, 47%);
188
+ --tl-color-danger: hsl(0, 90%, 43%);
189
+ --tl-color-laser: hsl(0, 100%, 50%);
186
190
  /* Shadows */
187
- --shadow-1: 0px 1px 2px hsl(0, 0%, 0%, 25%), 0px 1px 3px hsl(0, 0%, 0%, 9%);
188
- --shadow-2:
191
+ --tl-shadow-1: 0px 1px 2px hsl(0, 0%, 0%, 25%), 0px 1px 3px hsl(0, 0%, 0%, 9%);
192
+ --tl-shadow-2:
189
193
  0px 0px 2px hsl(0, 0%, 0%, 16%), 0px 2px 3px hsl(0, 0%, 0%, 24%),
190
- 0px 2px 6px hsl(0, 0%, 0%, 0.1), inset 0px 0px 0px 1px var(--color-panel-contrast);
191
- --shadow-3:
194
+ 0px 2px 6px hsl(0, 0%, 0%, 0.1), inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
195
+ --tl-shadow-3:
192
196
  0px 1px 2px hsl(0, 0%, 0%, 28%), 0px 2px 6px hsl(0, 0%, 0%, 14%),
193
- inset 0px 0px 0px 1px var(--color-panel-contrast);
194
- --shadow-4:
197
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
198
+ --tl-shadow-4:
195
199
  0px 0px 3px hsl(0, 0%, 0%, 19%), 0px 5px 4px hsl(0, 0%, 0%, 16%),
196
- 0px 2px 16px hsl(0, 0%, 0%, 6%), inset 0px 0px 0px 1px var(--color-panel-contrast);
200
+ 0px 2px 16px hsl(0, 0%, 0%, 6%), inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
197
201
  }
198
202
 
199
203
  .tl-theme__dark {
200
204
  /* Canvas */
201
- --color-snap: hsl(0, 76%, 60%);
202
- --color-selection-fill: hsl(209, 100%, 57%, 20%);
203
- --color-selection-stroke: hsl(214, 84%, 56%);
204
- --color-background: hsl(240, 5%, 6.5%);
205
- --color-brush-fill: hsl(0, 0%, 71%, 5.1%);
206
- --color-brush-stroke: hsl(0, 0%, 71%, 25.1%);
207
- --color-grid: hsl(0, 0%, 40%);
205
+ --tl-color-snap: hsl(0, 76%, 60%);
206
+ --tl-color-selection-fill: hsl(209, 100%, 57%, 20%);
207
+ --tl-color-selection-stroke: hsl(214, 84%, 56%);
208
+ --tl-color-background: hsl(240, 5%, 6.5%);
209
+ --tl-color-brush-fill: hsl(0, 0%, 71%, 5.1%);
210
+ --tl-color-brush-stroke: hsl(0, 0%, 71%, 25.1%);
211
+ --tl-color-grid: hsl(0, 0%, 40%);
208
212
  /* UI */
209
- --color-low: hsl(260, 4.5%, 10.5%);
210
- --color-low-border: hsl(207, 10%, 10%);
211
- --color-culled: hsl(210, 11%, 19%);
212
- --color-muted-none: hsl(0, 0%, 100%, 0%);
213
- --color-muted-0: hsl(0, 0%, 100%, 2%);
214
- --color-muted-1: hsl(0, 0%, 100%, 10%);
215
- --color-muted-2: hsl(0, 0%, 100%, 5%);
216
- --color-hint: hsl(0, 0%, 100%, 7%);
217
- --color-overlay: hsl(0, 0%, 0%, 50%);
218
- --color-divider: hsl(240, 9%, 22%);
219
- --color-panel: hsl(235, 6.8%, 13.5%);
220
- --color-panel-contrast: hsl(245, 12%, 23%);
221
- --color-panel-overlay: hsl(210, 10%, 24%, 82%);
222
- --color-panel-transparent: hsla(235, 6.8%, 13.5%, 0%);
223
- --color-selected: hsl(217, 89%, 61%);
224
- --color-selected-contrast: hsl(0, 0%, 100%);
225
- --color-focus: hsl(217, 76%, 80%);
226
- --color-tooltip: hsla(0, 0%, 100%, 1);
213
+ --tl-color-low: hsl(260, 4.5%, 10.5%);
214
+ --tl-color-low-border: hsl(207, 10%, 10%);
215
+ --tl-color-culled: hsl(210, 11%, 19%);
216
+ --tl-color-muted-none: hsl(0, 0%, 100%, 0%);
217
+ --tl-color-muted-0: hsl(0, 0%, 100%, 2%);
218
+ --tl-color-muted-1: hsl(0, 0%, 100%, 10%);
219
+ --tl-color-muted-2: hsl(0, 0%, 100%, 5%);
220
+ --tl-color-hint: hsl(0, 0%, 100%, 7%);
221
+ --tl-color-overlay: hsl(0, 0%, 0%, 50%);
222
+ --tl-color-divider: hsl(240, 9%, 22%);
223
+ --tl-color-panel: hsl(235, 6.8%, 13.5%);
224
+ --tl-color-panel-contrast: hsl(245, 12%, 23%);
225
+ --tl-color-panel-overlay: hsl(210, 10%, 24%, 82%);
226
+ --tl-color-panel-transparent: hsla(235, 6.8%, 13.5%, 0%);
227
+ --tl-color-selected: hsl(217, 89%, 61%);
228
+ --tl-color-selected-contrast: hsl(0, 0%, 100%);
229
+ --tl-color-focus: hsl(217, 76%, 80%);
230
+ --tl-color-tooltip: hsla(0, 0%, 100%, 1);
227
231
  /* Text */
228
- --color-text: hsl(210, 17%, 98%);
229
- --color-text-0: hsl(0, 9%, 94%);
230
- --color-text-1: hsl(0, 0%, 85%);
231
- --color-text-3: hsl(204, 4%, 75%);
232
- --color-text-shadow: hsl(210, 13%, 18%);
233
- --color-text-highlight: hsl(52, 100%, 41%);
234
- --color-text-highlight-p3: color(display-p3 0.8078 0.6225 0.0312);
232
+ --tl-color-text: hsl(210, 17%, 98%);
233
+ --tl-color-text-0: hsl(0, 9%, 94%);
234
+ --tl-color-text-1: hsl(0, 0%, 85%);
235
+ --tl-color-text-3: hsl(204, 4%, 75%);
236
+ --tl-color-text-shadow: hsl(210, 13%, 18%);
237
+ --tl-color-text-highlight: hsl(52, 100%, 41%);
238
+ --tl-color-text-highlight-p3: color(display-p3 0.8078 0.6225 0.0312);
235
239
  /* Named */
236
- --color-primary: hsl(214, 84%, 56%);
237
- --color-success: hsl(123, 38%, 57%);
238
- --color-info: hsl(199, 92%, 56%);
239
- --color-warning: hsl(36, 100%, 57%);
240
- --color-danger: hsl(0, 82%, 66%);
241
- --color-laser: hsl(0, 100%, 50%);
240
+ --tl-color-primary: hsl(214, 84%, 56%);
241
+ --tl-color-success: hsl(123, 38%, 57%);
242
+ --tl-color-info: hsl(199, 92%, 56%);
243
+ --tl-color-warning: hsl(36, 100%, 57%);
244
+ --tl-color-danger: hsl(0, 82%, 66%);
245
+ --tl-color-laser: hsl(0, 100%, 50%);
242
246
  /* Shadows */
243
- --shadow-1:
247
+ --tl-shadow-1:
244
248
  0px 1px 2px hsl(0, 0%, 0%, 16.1%), 0px 1px 3px hsl(0, 0%, 0%, 22%),
245
- inset 0px 0px 0px 1px var(--color-panel-contrast);
246
- --shadow-2:
249
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
250
+ --tl-shadow-2:
247
251
  0px 1px 3px hsl(0, 0%, 0%, 66.6%), 0px 2px 6px hsl(0, 0%, 0%, 33%),
248
- inset 0px 0px 0px 1px var(--color-panel-contrast);
249
- --shadow-3:
252
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
253
+ --tl-shadow-3:
250
254
  0px 1px 3px hsl(0, 0%, 0%, 50%), 0px 2px 12px hsl(0, 0%, 0%, 50%),
251
- inset 0px 0px 0px 1px var(--color-panel-contrast);
255
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
252
256
  }
253
257
 
254
258
  .tl-counter-scaled {
@@ -274,7 +278,7 @@
274
278
  }
275
279
 
276
280
  .tl-container__focused {
277
- outline: 1px solid var(--color-low);
281
+ outline: 1px solid var(--tl-color-low);
278
282
  }
279
283
 
280
284
  input,
@@ -290,7 +294,7 @@ input,
290
294
  inset: 0px;
291
295
  height: 100%;
292
296
  width: 100%;
293
- color: var(--color-text);
297
+ color: var(--tl-color-text);
294
298
  cursor: var(--tl-cursor);
295
299
  overflow: clip;
296
300
  content-visibility: auto;
@@ -298,9 +302,16 @@ input,
298
302
  contain: strict;
299
303
  }
300
304
 
305
+ .tl-canvas__in-front {
306
+ position: absolute;
307
+ inset: 0;
308
+ pointer-events: none;
309
+ z-index: var(--tl-layer-canvas-in-front);
310
+ }
311
+
301
312
  .tl-shapes {
302
313
  position: relative;
303
- z-index: var(--layer-canvas-shapes);
314
+ z-index: var(--tl-layer-canvas-shapes);
304
315
  }
305
316
 
306
317
  .tl-overlays {
@@ -311,7 +322,7 @@ input,
311
322
  width: 100%;
312
323
  contain: strict;
313
324
  pointer-events: none;
314
- z-index: var(--layer-canvas-overlays);
325
+ z-index: var(--tl-layer-canvas-overlays);
315
326
  }
316
327
 
317
328
  .tl-overlays__item {
@@ -335,7 +346,7 @@ input,
335
346
  /* ------------------- Background ------------------- */
336
347
 
337
348
  .tl-background__wrapper {
338
- z-index: var(--layer-canvas-background);
349
+ z-index: var(--tl-layer-canvas-background);
339
350
  position: absolute;
340
351
  inset: 0px;
341
352
  height: 100%;
@@ -343,7 +354,7 @@ input,
343
354
  }
344
355
 
345
356
  .tl-background {
346
- background-color: var(--color-background);
357
+ background-color: var(--tl-color-background);
347
358
  width: 100%;
348
359
  height: 100%;
349
360
  }
@@ -357,12 +368,12 @@ input,
357
368
  height: 100%;
358
369
  touch-action: none;
359
370
  pointer-events: none;
360
- z-index: var(--layer-canvas-grid);
371
+ z-index: var(--tl-layer-canvas-grid);
361
372
  contain: strict;
362
373
  }
363
374
 
364
375
  .tl-grid-dot {
365
- fill: var(--color-grid);
376
+ fill: var(--tl-color-grid);
366
377
  }
367
378
 
368
379
  /* --------------------- Layers --------------------- */
@@ -380,54 +391,54 @@ input,
380
391
 
381
392
  /* back of the stack, behind user's stuff */
382
393
  .tl-collaborator__scribble {
383
- z-index: var(--layer-overlays-collaborator-scribble);
394
+ z-index: var(--tl-layer-overlays-collaborator-scribble);
384
395
  }
385
396
 
386
397
  .tl-collaborator__brush {
387
- z-index: var(--layer-overlays-collaborator-brush);
398
+ z-index: var(--tl-layer-overlays-collaborator-brush);
388
399
  }
389
400
 
390
401
  .tl-collaborator__shape-indicator {
391
- z-index: var(--layer-overlays-collaborator-shape-indicator);
402
+ z-index: var(--tl-layer-overlays-collaborator-shape-indicator);
392
403
  }
393
404
 
394
405
  .tl-user-scribble {
395
- z-index: var(--layer-overlays-user-scribble);
406
+ z-index: var(--tl-layer-overlays-user-scribble);
396
407
  }
397
408
 
398
409
  .tl-user-brush {
399
- z-index: var(--layer-overlays-user-brush);
410
+ z-index: var(--tl-layer-overlays-user-brush);
400
411
  }
401
412
 
402
413
  .tl-user-handles {
403
- z-index: var(--layer-overlays-user-handles);
414
+ z-index: var(--tl-layer-overlays-user-handles);
404
415
  }
405
416
 
406
417
  .tl-user-snapline {
407
- z-index: var(--layer-overlays-user-snapline);
418
+ z-index: var(--tl-layer-overlays-user-snapline);
408
419
  }
409
420
 
410
421
  .tl-selection__fg {
411
422
  pointer-events: none;
412
- z-index: var(--layer-overlays-selection-fg);
423
+ z-index: var(--tl-layer-overlays-selection-fg);
413
424
  }
414
425
 
415
426
  .tl-user-indicator__hint {
416
- z-index: var(--layer-overlays-user-indicator-hint);
427
+ z-index: var(--tl-layer-overlays-user-indicator-hint);
417
428
  stroke-width: calc(2.5px * var(--tl-scale));
418
429
  }
419
430
 
420
431
  .tl-custom-overlays {
421
- z-index: var(--layer-overlays-custom);
432
+ z-index: var(--tl-layer-overlays-custom);
422
433
  }
423
434
 
424
435
  /* behind collaborator cursor */
425
436
  .tl-collaborator__cursor-hint {
426
- z-index: var(--layer-overlays-collaborator-cursor-hint);
437
+ z-index: var(--tl-layer-overlays-collaborator-cursor-hint);
427
438
  }
428
439
 
429
440
  .tl-collaborator__cursor {
430
- z-index: var(--layer-overlays-collaborator-cursor);
441
+ z-index: var(--tl-layer-overlays-collaborator-cursor);
431
442
  }
432
443
 
433
444
  .tl-cursor {
@@ -448,32 +459,32 @@ input,
448
459
  .tl-selection__fg__outline {
449
460
  fill: none;
450
461
  pointer-events: none;
451
- stroke: var(--color-selection-stroke);
462
+ stroke: var(--tl-color-selection-stroke);
452
463
  stroke-width: calc(1.5px * var(--tl-scale));
453
464
  }
454
465
 
455
466
  .tl-corner-handle {
456
467
  pointer-events: none;
457
- stroke: var(--color-selection-stroke);
458
- fill: var(--color-background);
468
+ stroke: var(--tl-color-selection-stroke);
469
+ fill: var(--tl-color-background);
459
470
  stroke-width: calc(1.5px * var(--tl-scale));
460
471
  }
461
472
 
462
473
  .tl-text-handle {
463
474
  pointer-events: none;
464
- fill: var(--color-selection-stroke);
475
+ fill: var(--tl-color-selection-stroke);
465
476
  }
466
477
 
467
478
  .tl-corner-crop-handle {
468
479
  pointer-events: none;
469
480
  fill: none;
470
- stroke: var(--color-selection-stroke);
481
+ stroke: var(--tl-color-selection-stroke);
471
482
  }
472
483
 
473
484
  .tl-corner-crop-edge-handle {
474
485
  pointer-events: none;
475
486
  fill: none;
476
- stroke: var(--color-selection-stroke);
487
+ stroke: var(--tl-color-selection-stroke);
477
488
  }
478
489
 
479
490
  .tl-mobile-rotate__bg {
@@ -483,8 +494,8 @@ input,
483
494
 
484
495
  .tl-mobile-rotate__fg {
485
496
  pointer-events: none;
486
- stroke: var(--color-selection-stroke);
487
- fill: var(--color-background);
497
+ stroke: var(--tl-color-selection-stroke);
498
+ fill: var(--tl-color-background);
488
499
  stroke-width: calc(1.5px * var(--tl-scale));
489
500
  }
490
501
 
@@ -514,8 +525,8 @@ input,
514
525
  text-overflow: ellipsis;
515
526
  font-size: 12px;
516
527
  font-family: var(--font-body);
517
- border-radius: var(--radius-2);
518
- color: var(--color-selected-contrast);
528
+ border-radius: var(--tl-radius-2);
529
+ color: var(--tl-color-selected-contrast);
519
530
  }
520
531
 
521
532
  .tl-nametag-title {
@@ -533,7 +544,7 @@ input,
533
544
  font-size: 12px;
534
545
  font-family: var(--font-body);
535
546
  text-shadow: var(--tl-text-outline);
536
- color: var(--color-selected-contrast);
547
+ color: var(--tl-color-selected-contrast);
537
548
  }
538
549
 
539
550
  .tl-nametag-chat {
@@ -542,31 +553,31 @@ input,
542
553
  left: 13px;
543
554
  width: fit-content;
544
555
  height: fit-content;
545
- color: var(--color-selected-contrast);
556
+ color: var(--tl-color-selected-contrast);
546
557
  white-space: nowrap;
547
558
  position: absolute;
548
559
  padding: 3px 6px;
549
560
  font-size: 12px;
550
561
  font-family: var(--font-body);
551
562
  opacity: 1;
552
- border-radius: var(--radius-2);
563
+ border-radius: var(--tl-radius-2);
553
564
  }
554
565
 
555
566
  .tl-cursor-chat {
556
567
  position: absolute;
557
- color: var(--color-selected-contrast);
568
+ color: var(--tl-color-selected-contrast);
558
569
  white-space: nowrap;
559
570
  padding: 3px 6px;
560
571
  font-size: 12px;
561
572
  font-family: var(--font-body);
562
573
  pointer-events: none;
563
- z-index: var(--layer-cursor);
574
+ z-index: var(--tl-layer-cursor);
564
575
  margin-top: 16px;
565
576
  margin-left: 13px;
566
577
  opacity: 1;
567
578
  border: none;
568
579
  user-select: text;
569
- border-radius: var(--radius-2);
580
+ border-radius: var(--tl-radius-2);
570
581
  }
571
582
 
572
583
  .tl-cursor-chat .tl-cursor-chat__bubble {
@@ -574,13 +585,13 @@ input,
574
585
  }
575
586
 
576
587
  .tl-cursor-chat::selection {
577
- background: var(--color-selected);
578
- color: var(--color-selected-contrast);
588
+ background: var(--tl-color-selected);
589
+ color: var(--tl-color-selected-contrast);
579
590
  text-shadow: none;
580
591
  }
581
592
 
582
593
  .tl-cursor-chat::placeholder {
583
- color: var(--color-selected-contrast);
594
+ color: var(--tl-color-selected-contrast);
584
595
  opacity: 0.7;
585
596
  }
586
597
 
@@ -651,7 +662,7 @@ input,
651
662
  background: none;
652
663
  border-image: none;
653
664
  border: 0px;
654
- caret-color: var(--color-text);
665
+ caret-color: var(--tl-color-text);
655
666
  color: inherit;
656
667
  column-count: initial !important;
657
668
  display: inline-block;
@@ -682,11 +693,17 @@ input,
682
693
  }
683
694
 
684
695
  .tl-text-measure {
696
+ z-index: var(--tl-layer-canvas-hidden);
697
+ opacity: 0;
698
+ visibility: hidden;
699
+
700
+ /* pointer-events: all; */
701
+ /* opacity: 1; */
702
+ /* z-index: 99999; */
703
+
685
704
  position: absolute;
686
- z-index: var(--layer-canvas-hidden);
687
705
  top: 0px;
688
706
  left: 0px;
689
- opacity: 0;
690
707
  width: max-content;
691
708
  box-sizing: border-box;
692
709
  pointer-events: none;
@@ -697,7 +714,6 @@ input,
697
714
  border: none;
698
715
  user-select: none;
699
716
  contain: style paint;
700
- visibility: hidden;
701
717
  /* N.B. This property, while discouraged ("intended for Document Type Definition (DTD) designers") is necessary for ensuring correct mixed RTL/LTR behavior when exporting SVGs. */
702
718
  unicode-bidi: plaintext;
703
719
  -webkit-user-select: none;
@@ -746,8 +762,8 @@ input,
746
762
  }
747
763
 
748
764
  .tl-text-input::selection {
749
- background: var(--color-selected);
750
- color: var(--color-selected-contrast);
765
+ background: var(--tl-color-selected);
766
+ color: var(--tl-color-selected-contrast);
751
767
  text-shadow: none;
752
768
  }
753
769
 
@@ -757,7 +773,7 @@ input,
757
773
  display: flex;
758
774
  justify-content: center;
759
775
  align-items: center;
760
- color: var(--color-text);
776
+ color: var(--tl-color-text);
761
777
  text-shadow: var(--tl-text-outline);
762
778
  line-height: inherit;
763
779
  position: absolute;
@@ -801,7 +817,7 @@ input,
801
817
 
802
818
  .tl-text-wrapper .tl-text-content {
803
819
  pointer-events: all;
804
- z-index: var(--layer-text-content);
820
+ z-index: var(--tl-layer-text-content);
805
821
  }
806
822
 
807
823
  .tl-text-label__inner > .tl-text-content {
@@ -811,7 +827,7 @@ input,
811
827
  padding: inherit;
812
828
  height: fit-content;
813
829
  width: fit-content;
814
- border-radius: var(--radius-1);
830
+ border-radius: var(--tl-radius-1);
815
831
  max-width: 100%;
816
832
  }
817
833
 
@@ -824,7 +840,7 @@ input,
824
840
  }
825
841
 
826
842
  .tl-text-wrapper[data-isselected='true'] .tl-text-input {
827
- z-index: var(--layer-text-editor);
843
+ z-index: var(--tl-layer-text-editor);
828
844
  pointer-events: all;
829
845
  }
830
846
 
@@ -919,7 +935,7 @@ input,
919
935
  }
920
936
 
921
937
  .tl-rich-text a {
922
- color: var(--color-primary);
938
+ color: var(--tl-color-primary);
923
939
  text-decoration: underline;
924
940
  }
925
941
 
@@ -942,14 +958,14 @@ input,
942
958
  }
943
959
 
944
960
  .tl-theme__dark .tl-rich-text mark {
945
- background-color: var(--color-text-highlight);
961
+ background-color: var(--tl-color-text-highlight);
946
962
  color: currentColor;
947
963
  }
948
964
 
949
965
  @supports (color: color(display-p3 1 1 1)) {
950
966
  @media (color-gamut: p3) {
951
967
  .tl-container:not(.tl-theme__force-sRGB) .tl-rich-text mark {
952
- background-color: var(--color-text-highlight-p3);
968
+ background-color: var(--tl-color-text-highlight-p3);
953
969
  }
954
970
  }
955
971
  }
@@ -961,15 +977,15 @@ input,
961
977
  /* --------------------- Loading -------------------- */
962
978
 
963
979
  .tl-loading {
964
- background-color: var(--color-background);
965
- color: var(--color-text-1);
980
+ background-color: var(--tl-color-background);
981
+ color: var(--tl-color-text-1);
966
982
  height: 100%;
967
983
  width: 100%;
968
984
  display: flex;
969
985
  flex-direction: column;
970
986
  justify-content: center;
971
987
  align-items: center;
972
- gap: var(--space-2);
988
+ gap: var(--tl-space-2);
973
989
  font-size: 14px;
974
990
  font-weight: 500;
975
991
  opacity: 0;
@@ -977,7 +993,7 @@ input,
977
993
  animation-delay: 0.2s;
978
994
  position: absolute;
979
995
  inset: 0px;
980
- z-index: var(--layer-canvas-blocker);
996
+ z-index: var(--tl-layer-canvas-blocker);
981
997
  }
982
998
 
983
999
  @keyframes tl-fade-in {
@@ -1010,8 +1026,8 @@ input,
1010
1026
  }
1011
1027
 
1012
1028
  .tl-brush__default {
1013
- stroke: var(--color-brush-stroke);
1014
- fill: var(--color-brush-fill);
1029
+ stroke: var(--tl-color-brush-stroke);
1030
+ fill: var(--tl-color-brush-fill);
1015
1031
  }
1016
1032
 
1017
1033
  /* -------------------- Scribble -------------------- */
@@ -1026,13 +1042,13 @@ input,
1026
1042
  /* ---------------------- Snaps --------------------- */
1027
1043
 
1028
1044
  .tl-snap-indicator {
1029
- stroke: var(--color-snap);
1045
+ stroke: var(--tl-color-snap);
1030
1046
  stroke-width: calc(1px * var(--tl-scale));
1031
1047
  fill: none;
1032
1048
  }
1033
1049
 
1034
1050
  .tl-snap-point {
1035
- stroke: var(--color-snap);
1051
+ stroke: var(--tl-color-snap);
1036
1052
  stroke-width: calc(1px * var(--tl-scale));
1037
1053
  fill: none;
1038
1054
  }
@@ -1052,7 +1068,7 @@ input,
1052
1068
  justify-content: center;
1053
1069
  font-size: 12px;
1054
1070
  font-weight: 400;
1055
- color: var(--color-text-1);
1071
+ color: var(--tl-color-text-1);
1056
1072
  padding: 13px;
1057
1073
  cursor: var(--tl-cursor-pointer);
1058
1074
  border: none;
@@ -1070,13 +1086,13 @@ input,
1070
1086
  display: block;
1071
1087
  width: calc(100% - 12px);
1072
1088
  height: calc(100% - 12px);
1073
- border-radius: var(--radius-1);
1074
- background-color: var(--color-background);
1089
+ border-radius: var(--tl-radius-1);
1090
+ background-color: var(--tl-color-background);
1075
1091
  pointer-events: none;
1076
1092
  }
1077
1093
 
1078
1094
  .tl-hyperlink-button:focus-visible {
1079
- color: var(--color-selected);
1095
+ color: var(--tl-color-selected);
1080
1096
  }
1081
1097
 
1082
1098
  .tl-hyperlink__icon {
@@ -1103,8 +1119,8 @@ input,
1103
1119
  }
1104
1120
 
1105
1121
  .tl-handle__fg {
1106
- fill: var(--color-selected-contrast);
1107
- stroke: var(--color-selection-stroke);
1122
+ fill: var(--tl-color-selected-contrast);
1123
+ stroke: var(--tl-color-selection-stroke);
1108
1124
  stroke-width: calc(1.5px * var(--tl-scale));
1109
1125
  pointer-events: none;
1110
1126
  }
@@ -1114,7 +1130,7 @@ input,
1114
1130
  }
1115
1131
 
1116
1132
  .tl-handle__clone > .tl-handle__fg {
1117
- fill: var(--color-selection-stroke);
1133
+ fill: var(--tl-color-selection-stroke);
1118
1134
  stroke: none;
1119
1135
  }
1120
1136
 
@@ -1124,7 +1140,7 @@ input,
1124
1140
 
1125
1141
  @media (pointer: coarse) {
1126
1142
  .tl-handle__bg:active {
1127
- fill: var(--color-selection-fill);
1143
+ fill: var(--tl-color-selection-fill);
1128
1144
  }
1129
1145
 
1130
1146
  .tl-handle__create {
@@ -1180,13 +1196,13 @@ input,
1180
1196
  stroke-linejoin: round;
1181
1197
  /* content-visibility: auto; */
1182
1198
  transform-origin: top left;
1183
- color: var(--color-text-1);
1199
+ color: var(--tl-color-text-1);
1184
1200
  }
1185
1201
 
1186
1202
  /* -------------------- Group shape ------------------ */
1187
1203
 
1188
1204
  .tl-group {
1189
- stroke: var(--color-text);
1205
+ stroke: var(--tl-color-text);
1190
1206
  stroke-width: calc(1px * var(--tl-scale));
1191
1207
  opacity: 0.5;
1192
1208
  }
@@ -1204,12 +1220,12 @@ input,
1204
1220
  justify-content: center;
1205
1221
  align-items: center;
1206
1222
  text-align: center;
1207
- color: var(--color-text);
1223
+ color: var(--tl-color-text);
1208
1224
  text-shadow: var(--tl-text-outline);
1209
1225
  }
1210
1226
 
1211
1227
  .tl-shape[data-shape-type='arrow'] .tl-text-label__inner {
1212
- border-radius: var(--radius-1);
1228
+ border-radius: var(--tl-radius-1);
1213
1229
  box-sizing: content-box;
1214
1230
  height: max-content;
1215
1231
  width: max-content;
@@ -1220,22 +1236,22 @@ input,
1220
1236
  }
1221
1237
 
1222
1238
  .tl-arrow-hint {
1223
- stroke: var(--color-text-1);
1239
+ stroke: var(--tl-color-text-1);
1224
1240
  fill: none;
1225
1241
  stroke-linecap: round;
1226
1242
  overflow: visible;
1227
1243
  }
1228
1244
 
1229
1245
  .tl-arrow-hint-handle {
1230
- fill: var(--color-selected-contrast);
1231
- stroke: var(--color-selection-stroke);
1246
+ fill: var(--tl-color-selected-contrast);
1247
+ stroke: var(--tl-color-selection-stroke);
1232
1248
  stroke-width: calc(1.5px * var(--tl-scale));
1233
1249
  r: calc(4px * var(--tl-scale));
1234
1250
  }
1235
1251
 
1236
1252
  .tl-arrow-hint-snap {
1237
1253
  stroke: transparent;
1238
- fill: var(--color-selection-fill);
1254
+ fill: var(--tl-color-selection-fill);
1239
1255
  r: calc(12px * var(--tl-scale));
1240
1256
  }
1241
1257
 
@@ -1255,40 +1271,40 @@ input,
1255
1271
  width: 100%;
1256
1272
  height: 100%;
1257
1273
  position: relative;
1258
- border: 1px solid var(--color-panel-contrast);
1259
- background-color: var(--color-panel);
1260
- border-radius: var(--radius-2);
1274
+ border: 1px solid var(--tl-color-panel-contrast);
1275
+ background-color: var(--tl-color-panel);
1276
+ border-radius: var(--tl-radius-2);
1261
1277
  display: flex;
1262
1278
  flex-direction: column;
1263
1279
  overflow: hidden;
1264
1280
  }
1265
1281
 
1266
1282
  .tl-bookmark__container--safariExport {
1267
- border: 1px solid var(--color-divider);
1283
+ border: 1px solid var(--tl-color-divider);
1268
1284
  }
1269
1285
 
1270
1286
  .tl-bookmark__image_container {
1271
1287
  flex: 1 1 100%;
1272
1288
  overflow: hidden;
1273
- border-top-left-radius: var(--radius-1);
1274
- border-top-right-radius: var(--radius-1);
1289
+ border-top-left-radius: var(--tl-radius-1);
1290
+ border-top-right-radius: var(--tl-radius-1);
1275
1291
  width: 100%;
1276
1292
  height: 100%;
1277
1293
  display: flex;
1278
1294
  justify-content: flex-end;
1279
1295
  align-items: flex-start;
1280
- box-shadow: inset 0px 0px 0px 1px var(--color-divider);
1296
+ box-shadow: inset 0px 0px 0px 1px var(--tl-color-divider);
1281
1297
  }
1282
1298
 
1283
1299
  .tl-bookmark__image_container > .tl-hyperlink-button::after {
1284
- background-color: var(--color-panel);
1300
+ background-color: var(--tl-color-panel);
1285
1301
  }
1286
1302
 
1287
1303
  .tl-bookmark__placeholder {
1288
1304
  width: 100%;
1289
1305
  height: 100%;
1290
- background-color: var(--color-muted-2);
1291
- border-bottom: 1px solid var(--color-muted-2);
1306
+ background-color: var(--tl-color-muted-2);
1307
+ border-bottom: 1px solid var(--tl-color-muted-2);
1292
1308
  }
1293
1309
 
1294
1310
  .tl-bookmark__image {
@@ -1296,12 +1312,12 @@ input,
1296
1312
  height: 100%;
1297
1313
  object-fit: cover;
1298
1314
  object-position: center;
1299
- border-bottom: 1px solid var(--color-muted-2);
1315
+ border-bottom: 1px solid var(--tl-color-muted-2);
1300
1316
  }
1301
1317
 
1302
1318
  .tl-bookmark__copy_container {
1303
- background-color: var(--color-muted-0);
1304
- padding: var(--space-4);
1319
+ background-color: var(--tl-color-muted-0);
1320
+ padding: var(--tl-space-4);
1305
1321
  pointer-events: all;
1306
1322
  display: flex;
1307
1323
  flex-direction: column;
@@ -1321,7 +1337,7 @@ input,
1321
1337
  font-size: 16px;
1322
1338
  line-height: 1.6;
1323
1339
  font-weight: bold;
1324
- padding-bottom: var(--space-2);
1340
+ padding-bottom: var(--tl-space-2);
1325
1341
  overflow: hidden;
1326
1342
  max-height: calc((16px * 1.6) * 2);
1327
1343
  -webkit-box-orient: vertical;
@@ -1341,19 +1357,19 @@ input,
1341
1357
  line-clamp: 3;
1342
1358
  text-overflow: ellipsis;
1343
1359
  display: -webkit-box;
1344
- color: var(--color-text-2);
1345
- margin: var(--space-2) 0px;
1360
+ color: var(--tl-color-text-2);
1361
+ margin: var(--tl-space-2) 0px;
1346
1362
  }
1347
1363
 
1348
1364
  .tl-bookmark__heading + .tl-bookmark__link,
1349
1365
  .tl-bookmark__description + .tl-bookmark__link {
1350
- margin-top: var(--space-3);
1366
+ margin-top: var(--tl-space-3);
1351
1367
  }
1352
1368
  .tl-bookmark__link {
1353
1369
  font-size: 12px;
1354
1370
  pointer-events: all;
1355
1371
  display: flex;
1356
- color: var(--color-text-2);
1372
+ color: var(--tl-color-text-2);
1357
1373
  align-items: center;
1358
1374
  cursor: var(--tl-cursor-pointer);
1359
1375
  width: fit-content;
@@ -1395,7 +1411,7 @@ input,
1395
1411
  width: 100%;
1396
1412
  height: 100%;
1397
1413
  pointer-events: all;
1398
- /* background-color: var(--color-background); */
1414
+ /* background-color: var(--tl-color-background); */
1399
1415
 
1400
1416
  display: flex;
1401
1417
  justify-content: center;
@@ -1424,7 +1440,7 @@ input,
1424
1440
  height: 100%;
1425
1441
  pointer-events: all;
1426
1442
  opacity: 1;
1427
- z-index: var(--layer-text-container);
1443
+ z-index: var(--tl-layer-text-container);
1428
1444
  border-radius: 1px;
1429
1445
  }
1430
1446
 
@@ -1440,22 +1456,22 @@ input,
1440
1456
  }
1441
1457
 
1442
1458
  .tl-frame__creating {
1443
- stroke: var(--color-selected);
1459
+ stroke: var(--tl-color-selected);
1444
1460
  fill: none;
1445
1461
  }
1446
1462
 
1447
1463
  .tl-frame-heading {
1448
- --frame-padding-x: 6px;
1449
- --frame-height: 24px;
1450
- --frame-minimum-width: 32px;
1451
- --frame-offset-width: 16px;
1464
+ --tl-frame-padding-x: 6px;
1465
+ --tl-frame-height: 24px;
1466
+ --tl-frame-minimum-width: 32px;
1467
+ --tl-frame-offset-width: 16px;
1452
1468
  display: flex;
1453
1469
  align-items: center;
1454
1470
  position: absolute;
1455
1471
  transform-origin: 0% 100%;
1456
1472
  overflow: hidden;
1457
1473
  max-width: 100%;
1458
- min-width: var(--frame-minimum-width);
1474
+ min-width: var(--tl-frame-minimum-width);
1459
1475
  height: auto;
1460
1476
  font-size: 12px;
1461
1477
  padding-bottom: 4px;
@@ -1467,18 +1483,18 @@ input,
1467
1483
  /* scale from bottom left corner so we can pin it to the top left corner of the frame */
1468
1484
  transform-origin: 0% 100%;
1469
1485
  display: flex;
1470
- height: var(--frame-height);
1486
+ height: var(--tl-frame-height);
1471
1487
  width: 100%;
1472
1488
  align-items: center;
1473
- border-radius: var(--radius-1);
1489
+ border-radius: var(--tl-radius-1);
1474
1490
  }
1475
1491
 
1476
1492
  .tl-frame-label {
1477
1493
  pointer-events: all;
1478
1494
  overflow: hidden;
1479
1495
  text-overflow: ellipsis;
1480
- padding: 0px var(--frame-padding-x);
1481
- border-radius: var(--radius-1);
1496
+ padding: 0px var(--tl-frame-padding-x);
1497
+ border-radius: var(--tl-radius-1);
1482
1498
  position: relative;
1483
1499
  font-size: inherit;
1484
1500
  white-space: pre;
@@ -1488,12 +1504,12 @@ input,
1488
1504
  color: transparent;
1489
1505
  white-space: pre;
1490
1506
  width: auto;
1491
- min-width: var(--frame-minimum-width);
1507
+ min-width: var(--tl-frame-minimum-width);
1492
1508
  height: 100%;
1493
1509
  overflow: visible;
1494
- background-color: var(--color-panel);
1495
- border-color: var(--color-selected);
1496
- box-shadow: inset 0px 0px 0px 1.5px var(--color-selected);
1510
+ background-color: var(--tl-color-panel);
1511
+ border-color: var(--tl-color-selected);
1512
+ box-shadow: inset 0px 0px 0px 1.5px var(--tl-color-selected);
1497
1513
  }
1498
1514
 
1499
1515
  .tl-frame-name-input {
@@ -1501,7 +1517,7 @@ input,
1501
1517
  border: none;
1502
1518
  background: none;
1503
1519
  outline: none;
1504
- padding: 0px var(--frame-padding-x);
1520
+ padding: 0px var(--tl-frame-padding-x);
1505
1521
  inset: 0px;
1506
1522
  height: 100%;
1507
1523
  width: 100%;
@@ -1509,8 +1525,8 @@ input,
1509
1525
  font-family: inherit;
1510
1526
  font-weight: inherit;
1511
1527
  width: 100%;
1512
- color: var(--color-text-1);
1513
- border-radius: var(--radius-1);
1528
+ color: var(--tl-color-text-1);
1529
+ border-radius: var(--tl-radius-1);
1514
1530
  user-select: all;
1515
1531
  -webkit-user-select: text;
1516
1532
  white-space: pre;
@@ -1530,7 +1546,7 @@ input,
1530
1546
 
1531
1547
  .tl-embed {
1532
1548
  border: none;
1533
- border-radius: var(--radius-2);
1549
+ border-radius: var(--tl-radius-2);
1534
1550
  }
1535
1551
 
1536
1552
  /* -------------- Shape error boundary -------------- */
@@ -1538,11 +1554,11 @@ input,
1538
1554
  .tl-shape-error-boundary {
1539
1555
  width: 100%;
1540
1556
  height: 100%;
1541
- background-color: var(--color-muted-1);
1557
+ background-color: var(--tl-color-muted-1);
1542
1558
  border-width: calc(1px * var(--tl-scale));
1543
- border-color: var(--color-muted-1);
1559
+ border-color: var(--tl-color-muted-1);
1544
1560
  border-style: solid;
1545
- border-radius: calc(var(--radius-1) * var(--tl-scale));
1561
+ border-radius: calc(var(--tl-radius-1) * var(--tl-scale));
1546
1562
  display: flex;
1547
1563
  flex-direction: column;
1548
1564
  align-items: center;
@@ -1551,7 +1567,7 @@ input,
1551
1567
  position: relative;
1552
1568
  pointer-events: all;
1553
1569
  overflow: hidden;
1554
- padding: var(--space-2);
1570
+ padding: var(--tl-space-2);
1555
1571
  }
1556
1572
 
1557
1573
  .tl-shape-error-boundary::before {
@@ -1559,7 +1575,7 @@ input,
1559
1575
  content: 'Error';
1560
1576
  font-size: 12px;
1561
1577
  font-family: inherit;
1562
- color: var(--color-text-0);
1578
+ color: var(--tl-color-text-0);
1563
1579
  }
1564
1580
 
1565
1581
  /* ----------------- Error boundary ----------------- */
@@ -1570,9 +1586,9 @@ input,
1570
1586
  display: flex;
1571
1587
  align-items: center;
1572
1588
  justify-content: center;
1573
- padding: var(--space-4);
1574
- background-color: var(--color-background);
1575
- color: var(--color-text-1);
1589
+ padding: var(--tl-space-4);
1590
+ background-color: var(--tl-color-background);
1591
+ color: var(--tl-color-text-1);
1576
1592
  position: absolute;
1577
1593
  }
1578
1594
 
@@ -1581,8 +1597,8 @@ input,
1581
1597
  inset: 0px;
1582
1598
  height: 100%;
1583
1599
  width: 100%;
1584
- z-index: var(--layer-error-overlay);
1585
- background-color: var(--color-overlay);
1600
+ z-index: var(--tl-layer-error-overlay);
1601
+ background-color: var(--tl-color-overlay);
1586
1602
  }
1587
1603
 
1588
1604
  .tl-error-boundary__content * {
@@ -1597,7 +1613,7 @@ input,
1597
1613
  inset: 0px;
1598
1614
  height: 100%;
1599
1615
  width: 100%;
1600
- z-index: var(--layer-error-canvas);
1616
+ z-index: var(--tl-layer-error-canvas);
1601
1617
  }
1602
1618
 
1603
1619
  /* some browsers seem to have some weird interactions between stacking contexts
@@ -1610,7 +1626,7 @@ it from receiving any pointer events or affecting the cursor. */
1610
1626
  inset: 0px;
1611
1627
  height: 100%;
1612
1628
  width: 100%;
1613
- z-index: var(--layer-error-canvas-after);
1629
+ z-index: var(--tl-layer-error-canvas-after);
1614
1630
  pointer-events: all;
1615
1631
  }
1616
1632
 
@@ -1620,16 +1636,16 @@ it from receiving any pointer events or affecting the cursor. */
1620
1636
  max-width: 100%;
1621
1637
  width: 400px;
1622
1638
  max-height: 100%;
1623
- background-color: var(--color-panel);
1639
+ background-color: var(--tl-color-panel);
1624
1640
  padding: 16px;
1625
1641
  border-radius: 16px;
1626
- box-shadow: var(--shadow-2);
1642
+ box-shadow: var(--tl-shadow-2);
1627
1643
  font-size: 14px;
1628
1644
  font-weight: 400;
1629
1645
  display: flex;
1630
1646
  flex-direction: column;
1631
1647
  overflow: auto;
1632
- z-index: var(--layer-error-content);
1648
+ z-index: var(--tl-layer-error-content);
1633
1649
  gap: 12px;
1634
1650
  }
1635
1651
 
@@ -1644,10 +1660,10 @@ it from receiving any pointer events or affecting the cursor. */
1644
1660
  }
1645
1661
 
1646
1662
  .tl-error-boundary__content h4 {
1647
- border: 1px solid var(--color-low-border);
1663
+ border: 1px solid var(--tl-color-low-border);
1648
1664
  margin: -6px 0 0 0;
1649
- padding: var(--space-5);
1650
- border-radius: var(--radius-2);
1665
+ padding: var(--tl-space-5);
1666
+ border-radius: var(--tl-radius-2);
1651
1667
  font-weight: normal;
1652
1668
  }
1653
1669
 
@@ -1657,10 +1673,10 @@ it from receiving any pointer events or affecting the cursor. */
1657
1673
  }
1658
1674
 
1659
1675
  .tl-error-boundary__content pre {
1660
- background-color: var(--color-muted-2);
1676
+ background-color: var(--tl-color-muted-2);
1661
1677
  margin-top: 0;
1662
- padding: var(--space-5);
1663
- border-radius: var(--radius-2);
1678
+ padding: var(--tl-space-5);
1679
+ border-radius: var(--tl-radius-2);
1664
1680
  overflow: auto;
1665
1681
  font-size: 12px;
1666
1682
  max-height: 320px;
@@ -1672,15 +1688,15 @@ it from receiving any pointer events or affecting the cursor. */
1672
1688
  font-family: inherit;
1673
1689
  font-size: 14px;
1674
1690
  font-weight: 500;
1675
- padding: var(--space-4);
1676
- border-radius: var(--radius-3);
1691
+ padding: var(--tl-space-4);
1692
+ border-radius: var(--tl-radius-3);
1677
1693
  cursor: var(--tl-cursor-pointer);
1678
1694
  color: inherit;
1679
1695
  background-color: transparent;
1680
1696
  }
1681
1697
 
1682
1698
  .tl-error-boundary__content a {
1683
- color: var(--color-selected);
1699
+ color: var(--tl-color-selected);
1684
1700
  font-weight: 500;
1685
1701
  text-decoration: none;
1686
1702
  }
@@ -1692,31 +1708,31 @@ it from receiving any pointer events or affecting the cursor. */
1692
1708
 
1693
1709
  .tl-error-boundary__content__error button {
1694
1710
  position: absolute;
1695
- top: var(--space-2);
1696
- right: var(--space-2);
1711
+ top: var(--tl-space-2);
1712
+ right: var(--tl-space-2);
1697
1713
  font-size: 12px;
1698
- padding: var(--space-2) var(--space-3);
1699
- background-color: var(--color-panel);
1700
- border-radius: var(--radius-1);
1714
+ padding: var(--tl-space-2) var(--tl-space-3);
1715
+ background-color: var(--tl-color-panel);
1716
+ border-radius: var(--tl-radius-1);
1701
1717
  }
1702
1718
 
1703
1719
  .tl-error-boundary__content__actions {
1704
1720
  display: flex;
1705
1721
  justify-content: space-between;
1706
- gap: var(--space-4);
1722
+ gap: var(--tl-space-4);
1707
1723
  margin: 0px;
1708
1724
  margin-left: -4px;
1709
1725
  }
1710
1726
  .tl-error-boundary__content__actions__group {
1711
1727
  display: flex;
1712
- gap: var(--space-4);
1728
+ gap: var(--tl-space-4);
1713
1729
  }
1714
1730
  .tl-error-boundary__content .tl-error-boundary__reset {
1715
- color: var(--color-danger);
1731
+ color: var(--tl-color-danger);
1716
1732
  }
1717
1733
  .tl-error-boundary__content .tl-error-boundary__refresh {
1718
- background-color: var(--color-primary);
1719
- color: var(--color-selected-contrast);
1734
+ background-color: var(--tl-color-primary);
1735
+ color: var(--tl-color-selected-contrast);
1720
1736
  }
1721
1737
  .tl-container__focused:not(.tl-container__no-focus-ring)
1722
1738
  .tlui-button.tl-error-boundary__refresh:focus-visible {
@@ -1728,7 +1744,7 @@ it from receiving any pointer events or affecting the cursor. */
1728
1744
 
1729
1745
  .tl-hit-test-blocker {
1730
1746
  position: absolute;
1731
- z-index: var(--layer-canvas-blocker);
1747
+ z-index: var(--tl-layer-canvas-blocker);
1732
1748
  inset: 0px;
1733
1749
  width: 100%;
1734
1750
  height: 100%;
@@ -1748,32 +1764,32 @@ it from receiving any pointer events or affecting the cursor. */
1748
1764
 
1749
1765
  .tl-handle__bg:hover {
1750
1766
  cursor: var(--tl-cursor-grab);
1751
- fill: var(--color-selection-fill);
1767
+ fill: var(--tl-color-selection-fill);
1752
1768
  }
1753
1769
 
1754
1770
  .tl-bookmark__link:hover {
1755
- color: var(--color-selected);
1771
+ color: var(--tl-color-selected);
1756
1772
  }
1757
1773
 
1758
1774
  .tl-hyperlink-button:hover {
1759
- color: var(--color-selected);
1775
+ color: var(--tl-color-selected);
1760
1776
  }
1761
1777
 
1762
1778
  .tl-error-boundary__content button:hover {
1763
- background-color: var(--color-low);
1779
+ background-color: var(--tl-color-low);
1764
1780
  }
1765
1781
  .tl-error-boundary__content a:hover {
1766
- color: var(--color-text-1);
1782
+ color: var(--tl-color-text-1);
1767
1783
  }
1768
1784
  .tl-error-boundary__content .tl-error-boundary__refresh:hover {
1769
- background-color: var(--color-primary);
1785
+ background-color: var(--tl-color-primary);
1770
1786
  opacity: 0.9;
1771
1787
  }
1772
1788
 
1773
1789
  /* These three rules help preserve clicking into specific points in text areas *while*
1774
1790
  * already in edit mode when jumping from shape to shape. */
1775
1791
  .tl-canvas[data-iseditinganything='true'] .tl-text-wrapper:hover .tl-text-input {
1776
- z-index: var(--layer-text-editor);
1792
+ z-index: var(--tl-layer-text-editor);
1777
1793
  pointer-events: all;
1778
1794
  }
1779
1795
  }
@@ -1781,15 +1797,15 @@ it from receiving any pointer events or affecting the cursor. */
1781
1797
  /* @tldraw/ui */
1782
1798
 
1783
1799
  .tl-container {
1784
- --layer-above: 1;
1785
- --layer-focused-input: 10;
1786
- --layer-menu-click-capture: 250;
1787
- --layer-panels: 300;
1788
- --layer-menus: 400;
1789
- --layer-toasts: 650;
1790
- --layer-cursor: 700;
1791
- --layer-header-footer: 999;
1792
- --layer-following-indicator: 1000;
1800
+ --tl-layer-above: 1;
1801
+ --tl-layer-focused-input: 10;
1802
+ --tl-layer-menu-click-capture: 250;
1803
+ --tl-layer-panels: 300;
1804
+ --tl-layer-menus: 400;
1805
+ --tl-layer-toasts: 650;
1806
+ --tl-layer-cursor: 700;
1807
+ --tl-layer-header-footer: 999;
1808
+ --tl-layer-following-indicator: 1000;
1793
1809
  }
1794
1810
 
1795
1811
  /* Button */
@@ -1813,23 +1829,23 @@ it from receiving any pointer events or affecting the cursor. */
1813
1829
  text-rendering: optimizeLegibility;
1814
1830
  font-size: 12px;
1815
1831
  gap: 0px;
1816
- color: var(--color-text-1);
1832
+ color: var(--tl-color-text-1);
1817
1833
  z-index: 0;
1818
1834
  }
1819
1835
 
1820
1836
  .tlui-button:disabled {
1821
- color: var(--color-text-3);
1837
+ color: var(--tl-color-text-3);
1822
1838
  text-shadow: none;
1823
1839
  cursor: default;
1824
1840
  }
1825
1841
 
1826
1842
  .tlui-button:disabled .tlui-kbd {
1827
- color: var(--color-text-3);
1843
+ color: var(--tl-color-text-3);
1828
1844
  }
1829
1845
 
1830
1846
  .tlui-button > * {
1831
1847
  position: relative;
1832
- z-index: var(--layer-above);
1848
+ z-index: var(--tl-layer-above);
1833
1849
  }
1834
1850
 
1835
1851
  .tlui-button__label {
@@ -1845,7 +1861,7 @@ it from receiving any pointer events or affecting the cursor. */
1845
1861
  */
1846
1862
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button:focus-visible {
1847
1863
  border-radius: 10px;
1848
- outline: 2px solid var(--color-focus);
1864
+ outline: 2px solid var(--tl-color-focus);
1849
1865
  outline-offset: -5px;
1850
1866
  }
1851
1867
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button__tool:focus-visible {
@@ -1853,7 +1869,7 @@ it from receiving any pointer events or affecting the cursor. */
1853
1869
  }
1854
1870
  .tlui-slider__container:has(.tlui-slider__thumb:focus-visible) {
1855
1871
  border-radius: 10px;
1856
- outline: 2px solid var(--color-focus);
1872
+ outline: 2px solid var(--tl-color-focus);
1857
1873
  outline-offset: -5px;
1858
1874
  }
1859
1875
 
@@ -1862,8 +1878,8 @@ it from receiving any pointer events or affecting the cursor. */
1862
1878
  content: '';
1863
1879
  position: absolute;
1864
1880
  inset: 4px;
1865
- border-radius: var(--radius-2);
1866
- background: var(--color-muted-2);
1881
+ border-radius: var(--tl-radius-2);
1882
+ background: var(--tl-color-muted-2);
1867
1883
  opacity: 0;
1868
1884
  }
1869
1885
 
@@ -1873,18 +1889,18 @@ it from receiving any pointer events or affecting the cursor. */
1873
1889
 
1874
1890
  .tlui-button[data-isactive='true']::after,
1875
1891
  .tlui-button[data-isactive='true']:not(:disabled, :focus-visible):active:after {
1876
- background: var(--color-hint);
1892
+ background: var(--tl-color-hint);
1877
1893
  opacity: 1;
1878
1894
  }
1879
1895
 
1880
1896
  .tlui-button[aria-expanded='true'][data-direction='left'] {
1881
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1897
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1882
1898
  opacity: 1;
1883
1899
  }
1884
1900
 
1885
1901
  @media (hover: hover) {
1886
1902
  .tlui-button[aria-expanded='true'][data-direction='left']:not(:hover)::after {
1887
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1903
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1888
1904
  opacity: 1;
1889
1905
  }
1890
1906
 
@@ -1898,18 +1914,18 @@ it from receiving any pointer events or affecting the cursor. */
1898
1914
  }
1899
1915
 
1900
1916
  .tlui-button__icon + .tlui-button__label {
1901
- margin-left: var(--space-2);
1917
+ margin-left: var(--tl-space-2);
1902
1918
  }
1903
1919
 
1904
1920
  /* Low button */
1905
1921
 
1906
1922
  .tlui-button__low {
1907
- border-radius: var(--radius-3);
1908
- background-color: var(--color-low);
1923
+ border-radius: var(--tl-radius-3);
1924
+ background-color: var(--tl-color-low);
1909
1925
  }
1910
1926
 
1911
1927
  .tlui-button__low::after {
1912
- background-color: var(--color-muted-2);
1928
+ background-color: var(--tl-color-muted-2);
1913
1929
  opacity: 0;
1914
1930
  }
1915
1931
 
@@ -1922,31 +1938,25 @@ it from receiving any pointer events or affecting the cursor. */
1922
1938
  /* Primary / danger buttons */
1923
1939
 
1924
1940
  .tlui-button__primary {
1925
- color: var(--color-primary);
1941
+ color: var(--tl-color-primary);
1926
1942
  }
1927
1943
 
1928
1944
  .tlui-button__danger {
1929
- color: var(--color-danger);
1945
+ color: var(--tl-color-danger);
1930
1946
  text-shadow: none;
1931
1947
  }
1932
1948
 
1933
1949
  @media (hover: hover) {
1934
1950
  .tlui-button__primary:not(:disabled, :focus-visible):hover {
1935
- color: var(--color-primary);
1951
+ color: var(--tl-color-primary);
1936
1952
  }
1937
1953
 
1938
1954
  .tlui-button__danger:not(:disabled, :focus-visible):hover {
1939
- color: var(--color-danger);
1955
+ color: var(--tl-color-danger);
1940
1956
  text-shadow: none;
1941
1957
  }
1942
1958
  }
1943
1959
 
1944
- /* Panel button */
1945
-
1946
- .tlui-button__panel {
1947
- position: relative;
1948
- }
1949
-
1950
1960
  /* Menu button */
1951
1961
 
1952
1962
  .tlui-button__menu {
@@ -1959,7 +1969,7 @@ it from receiving any pointer events or affecting the cursor. */
1959
1969
 
1960
1970
  .tlui-button__menu::after {
1961
1971
  inset: 4px;
1962
- border-radius: var(--radius-2);
1972
+ border-radius: var(--tl-radius-2);
1963
1973
  }
1964
1974
 
1965
1975
  .tlui-button__menu > .tlui-icon + .tlui-button__label {
@@ -1987,18 +1997,26 @@ it from receiving any pointer events or affecting the cursor. */
1987
1997
 
1988
1998
  /* Tool lock button */
1989
1999
 
1990
- .tlui-toolbar__lock-button {
2000
+ .tlui-main-toolbar__lock-button {
1991
2001
  position: absolute;
1992
- top: 4px;
1993
- right: 0px;
1994
2002
  pointer-events: all;
1995
2003
  height: 40px;
1996
2004
  width: 40px;
2005
+ border-radius: var(--tl-radius-2);
2006
+ }
2007
+
2008
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
2009
+ top: 4px;
2010
+ right: 0px;
1997
2011
  min-width: 0px;
1998
- border-radius: var(--radius-2);
1999
2012
  }
2000
2013
 
2001
- .tlui-toolbar__lock-button::after {
2014
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__lock-button {
2015
+ bottom: 0px;
2016
+ min-height: 0px;
2017
+ }
2018
+
2019
+ .tlui-main-toolbar__lock-button::after {
2002
2020
  top: 4px;
2003
2021
  left: 8px;
2004
2022
  inset: 4px;
@@ -2010,16 +2028,6 @@ it from receiving any pointer events or affecting the cursor. */
2010
2028
  position: relative;
2011
2029
  height: 48px;
2012
2030
  width: 48px;
2013
- margin-left: -2px;
2014
- margin-right: -2px;
2015
- }
2016
-
2017
- .tlui-button__tool:nth-of-type(1) {
2018
- margin-left: 0px;
2019
- }
2020
-
2021
- .tlui-button__tool:nth-last-of-type(1) {
2022
- margin-right: 0px;
2023
2031
  }
2024
2032
 
2025
2033
  .tlui-button__tool::after {
@@ -2028,69 +2036,64 @@ it from receiving any pointer events or affecting the cursor. */
2028
2036
  }
2029
2037
 
2030
2038
  .tlui-button__tool[aria-pressed='true'] {
2031
- color: var(--color-selected-contrast);
2039
+ color: var(--tl-color-selected-contrast);
2032
2040
  }
2033
2041
 
2034
2042
  .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
2035
- color: var(--color-selected-contrast);
2043
+ color: var(--tl-color-selected-contrast);
2036
2044
  }
2037
2045
 
2038
2046
  .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
2039
- background: var(--color-selected);
2047
+ background: var(--tl-color-selected);
2040
2048
  opacity: 1;
2041
2049
  }
2042
2050
 
2043
- .tlui-layout__mobile .tlui-button__tool {
2051
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool {
2044
2052
  height: 48px;
2045
2053
  width: 43px;
2046
2054
  }
2047
2055
 
2048
- .tlui-layout__mobile .tlui-button__tool > .tlui-icon {
2056
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool > .tlui-icon {
2049
2057
  height: 16px;
2050
2058
  width: 16px;
2051
2059
  }
2052
2060
 
2053
- /* Button Row */
2061
+ /* Row layout */
2054
2062
 
2055
- .tlui-buttons__horizontal {
2063
+ .tlui-row {
2056
2064
  display: flex;
2057
2065
  flex-direction: row;
2066
+ padding: 0 2px;
2058
2067
  }
2059
- .tlui-buttons__horizontal > * {
2068
+ .tlui-row > * {
2060
2069
  margin-left: -2px;
2061
2070
  margin-right: -2px;
2062
2071
  }
2063
- .tlui-buttons__horizontal > *:nth-child(1) {
2064
- margin-left: 0px;
2072
+
2073
+ /* Column layout */
2074
+
2075
+ .tlui-column {
2076
+ display: flex;
2077
+ flex-direction: column;
2078
+ padding: 2px 0;
2065
2079
  }
2066
- .tlui-buttons__horizontal > *:nth-last-child(1) {
2067
- margin-right: 0px;
2080
+ .tlui-column > * {
2081
+ margin-top: -2px;
2082
+ margin-bottom: -2px;
2068
2083
  }
2069
2084
 
2070
- /* Button Grid */
2085
+ /* Grid layout */
2071
2086
 
2072
- .tlui-buttons__grid {
2087
+ .tlui-grid {
2073
2088
  display: grid;
2074
- grid-template-columns: repeat(4, auto);
2089
+ grid-template-columns: repeat(4, 1fr);
2075
2090
  grid-auto-flow: row;
2076
2091
  overflow: hidden;
2092
+ padding: 2px;
2077
2093
  }
2078
- .tlui-buttons__grid > .tlui-button {
2094
+ .tlui-grid > * {
2079
2095
  margin: -2px;
2080
2096
  }
2081
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n),
2082
- .tlui-buttons__vertical-align > .tlui-button:nth-of-type(3n) {
2083
- margin-right: 0px;
2084
- }
2085
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n - 3) {
2086
- margin-left: 0px;
2087
- }
2088
- .tlui-buttons__grid > .tlui-button:nth-of-type(-n + 4) {
2089
- margin-top: 0px;
2090
- }
2091
- .tlui-buttons__grid > .tlui-button:nth-last-of-type(-n + 4) {
2092
- margin-bottom: 0px;
2093
- }
2094
2097
 
2095
2098
  /* Zoom button */
2096
2099
 
@@ -2114,9 +2117,9 @@ it from receiving any pointer events or affecting the cursor. */
2114
2117
  pointer-events: none;
2115
2118
  user-select: none;
2116
2119
  contain: strict;
2117
- z-index: var(--layer-panels);
2120
+ z-index: var(--tl-layer-panels);
2118
2121
  transform: translate3d(0, 0, 0);
2119
- --sab: env(safe-area-inset-bottom);
2122
+ --tl-sab: env(safe-area-inset-bottom);
2120
2123
  font-weight: 500;
2121
2124
  line-height: 1.6;
2122
2125
  -webkit-font-smoothing: antialiased;
@@ -2169,11 +2172,11 @@ it from receiving any pointer events or affecting the cursor. */
2169
2172
  justify-content: flex-start;
2170
2173
  align-items: flex-start;
2171
2174
  width: min-content;
2172
- gap: var(--space-3);
2173
- margin: var(--space-2) var(--space-3);
2175
+ gap: var(--tl-space-3);
2176
+ margin: var(--tl-space-2) var(--tl-space-3);
2174
2177
  white-space: nowrap;
2175
2178
  pointer-events: none;
2176
- z-index: var(--layer-panels);
2179
+ z-index: var(--tl-layer-panels);
2177
2180
  }
2178
2181
 
2179
2182
  /* ---------------------- Icon ---------------------- */
@@ -2201,7 +2204,7 @@ it from receiving any pointer events or affecting the cursor. */
2201
2204
 
2202
2205
  .tlui-slider__container {
2203
2206
  width: 100%;
2204
- padding: 0px var(--space-4);
2207
+ padding: 0px var(--tl-space-4);
2205
2208
  }
2206
2209
 
2207
2210
  .tlui-slider {
@@ -2227,7 +2230,7 @@ it from receiving any pointer events or affecting the cursor. */
2227
2230
  content: '';
2228
2231
  height: 3px;
2229
2232
  width: 100%;
2230
- background-color: var(--color-muted-1);
2233
+ background-color: var(--tl-color-muted-1);
2231
2234
  border-radius: 14px;
2232
2235
  }
2233
2236
 
@@ -2236,7 +2239,7 @@ it from receiving any pointer events or affecting the cursor. */
2236
2239
  top: calc(50% - 2px);
2237
2240
  left: 0px;
2238
2241
  height: 3px;
2239
- background-color: var(--color-selected);
2242
+ background-color: var(--tl-color-selected);
2240
2243
  border-radius: 14px;
2241
2244
  }
2242
2245
 
@@ -2248,16 +2251,16 @@ it from receiving any pointer events or affecting the cursor. */
2248
2251
  height: 18px;
2249
2252
  position: relative;
2250
2253
  top: -1px;
2251
- background-color: var(--color-panel);
2254
+ background-color: var(--tl-color-panel);
2252
2255
  border-radius: 999px;
2253
- box-shadow: inset 0px 0px 0px 2px var(--color-text-1);
2256
+ box-shadow: inset 0px 0px 0px 2px var(--tl-color-text-1);
2254
2257
  }
2255
2258
 
2256
2259
  .tlui-slider__thumb:active {
2257
2260
  cursor: grabbing;
2258
2261
  box-shadow:
2259
- inset 0px 0px 0px 2px var(--color-text-1),
2260
- var(--shadow-1);
2262
+ inset 0px 0px 0px 2px var(--tl-color-text-1),
2263
+ var(--tl-shadow-1);
2261
2264
  }
2262
2265
 
2263
2266
  /* ---------------------- Input --------------------- */
@@ -2266,7 +2269,7 @@ it from receiving any pointer events or affecting the cursor. */
2266
2269
  background: none;
2267
2270
  margin: 0px;
2268
2271
  position: relative;
2269
- z-index: var(--layer-above);
2272
+ z-index: var(--tl-layer-above);
2270
2273
  height: 40px;
2271
2274
  max-height: 40px;
2272
2275
  display: flex;
@@ -2275,8 +2278,8 @@ it from receiving any pointer events or affecting the cursor. */
2275
2278
  font-family: inherit;
2276
2279
  font-size: 12px;
2277
2280
  font-weight: inherit;
2278
- color: var(--color-text-1);
2279
- padding: var(--space-4);
2281
+ color: var(--tl-color-text-1);
2282
+ padding: var(--tl-space-4);
2280
2283
  padding-left: 0px;
2281
2284
  border: none;
2282
2285
  outline: none;
@@ -2292,8 +2295,8 @@ it from receiving any pointer events or affecting the cursor. */
2292
2295
  height: 44px;
2293
2296
  display: flex;
2294
2297
  align-items: center;
2295
- gap: var(--space-4);
2296
- color: var(--color-text);
2298
+ gap: var(--tl-space-4);
2299
+ color: var(--tl-color-text);
2297
2300
  }
2298
2301
 
2299
2302
  .tlui-input__wrapper > .tlui-icon {
@@ -2325,7 +2328,7 @@ it from receiving any pointer events or affecting the cursor. */
2325
2328
  grid-auto-columns: minmax(1em, auto);
2326
2329
  align-self: bottom;
2327
2330
  color: currentColor;
2328
- margin-left: var(--space-4);
2331
+ margin-left: var(--tl-space-4);
2329
2332
  }
2330
2333
 
2331
2334
  .tlui-kbd > span {
@@ -2342,13 +2345,13 @@ it from receiving any pointer events or affecting the cursor. */
2342
2345
  }
2343
2346
 
2344
2347
  .tlui-kbd:not(:last-child) {
2345
- margin-right: var(--space-2);
2348
+ margin-right: var(--tl-space-2);
2346
2349
  }
2347
2350
 
2348
2351
  /* Focus Mode Button */
2349
2352
 
2350
2353
  .tlui-focus-button {
2351
- z-index: var(--layer-panels);
2354
+ z-index: var(--tl-layer-panels);
2352
2355
  pointer-events: all;
2353
2356
  }
2354
2357
 
@@ -2359,16 +2362,16 @@ it from receiving any pointer events or affecting the cursor. */
2359
2362
  }
2360
2363
 
2361
2364
  .tlui-menu {
2362
- z-index: var(--layer-menus);
2365
+ z-index: var(--tl-layer-menus);
2363
2366
  height: fit-content;
2364
2367
  width: fit-content;
2365
- border-radius: var(--radius-3);
2368
+ border-radius: var(--tl-radius-3);
2366
2369
  pointer-events: all;
2367
2370
  touch-action: auto;
2368
2371
  overflow-y: auto;
2369
2372
  overscroll-behavior: none;
2370
- background-color: var(--color-panel);
2371
- box-shadow: var(--shadow-3);
2373
+ background-color: var(--tl-color-panel);
2374
+ box-shadow: var(--tl-shadow-3);
2372
2375
  }
2373
2376
 
2374
2377
  .tlui-menu::-webkit-scrollbar {
@@ -2386,7 +2389,7 @@ it from receiving any pointer events or affecting the cursor. */
2386
2389
  }
2387
2390
 
2388
2391
  .tlui-menu__group {
2389
- border-bottom: 1px solid var(--color-divider);
2392
+ border-bottom: 1px solid var(--tl-color-divider);
2390
2393
  }
2391
2394
  .tlui-menu__group:nth-last-of-type(1) {
2392
2395
  border-bottom: none;
@@ -2396,23 +2399,23 @@ it from receiving any pointer events or affecting the cursor. */
2396
2399
 
2397
2400
  .tlui-menu__submenu__trigger[data-state='open']::after {
2398
2401
  opacity: 1;
2399
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2402
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2400
2403
  }
2401
2404
 
2402
2405
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
2403
2406
  opacity: 1;
2404
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2407
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2405
2408
  }
2406
2409
 
2407
2410
  @media (hover: hover) {
2408
2411
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
2409
2412
  opacity: 1;
2410
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2413
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2411
2414
  }
2412
2415
 
2413
2416
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
2414
2417
  opacity: 1;
2415
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2418
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2416
2419
  }
2417
2420
  }
2418
2421
 
@@ -2437,7 +2440,7 @@ it from receiving any pointer events or affecting the cursor. */
2437
2440
  .tlui-menu-click-capture {
2438
2441
  position: fixed;
2439
2442
  inset: 0;
2440
- z-index: var(--layer-menu-click-capture);
2443
+ z-index: var(--tl-layer-menu-click-capture);
2441
2444
  }
2442
2445
 
2443
2446
  /* --------------------- Popover -------------------- */
@@ -2453,10 +2456,10 @@ it from receiving any pointer events or affecting the cursor. */
2453
2456
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
2454
2457
  margin: 0px;
2455
2458
  border: none;
2456
- border-radius: var(--radius-3);
2457
- background-color: var(--color-panel);
2458
- box-shadow: var(--shadow-3);
2459
- z-index: var(--layer-menus);
2459
+ border-radius: var(--tl-radius-3);
2460
+ background-color: var(--tl-color-panel);
2461
+ box-shadow: var(--tl-shadow-3);
2462
+ z-index: var(--tl-layer-menus);
2460
2463
  overflow: hidden;
2461
2464
  overflow-y: auto;
2462
2465
  touch-action: auto;
@@ -2469,22 +2472,22 @@ it from receiving any pointer events or affecting the cursor. */
2469
2472
 
2470
2473
  .tlui-menu-zone {
2471
2474
  position: relative;
2472
- z-index: var(--layer-panels);
2475
+ z-index: var(--tl-layer-panels);
2473
2476
  width: fit-content;
2474
- border-right: 2px solid var(--color-background);
2475
- border-bottom: 2px solid var(--color-background);
2476
- border-bottom-right-radius: var(--radius-4);
2477
- background-color: var(--color-low);
2477
+ border-right: 2px solid var(--tl-color-background);
2478
+ border-bottom: 2px solid var(--tl-color-background);
2479
+ border-bottom-right-radius: var(--tl-radius-4);
2480
+ background-color: var(--tl-color-low);
2478
2481
  }
2479
2482
 
2480
2483
  .tlui-menu-zone *[data-state='open']::after {
2481
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2484
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2482
2485
  opacity: 1;
2483
2486
  }
2484
2487
 
2485
2488
  @media (hover: hover) {
2486
2489
  .tlui-menu-zone *[data-state='open']:not(:hover)::after {
2487
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2490
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2488
2491
  opacity: 1;
2489
2492
  }
2490
2493
  }
@@ -2510,8 +2513,8 @@ it from receiving any pointer events or affecting the cursor. */
2510
2513
  align-items: center;
2511
2514
  width: 100%;
2512
2515
  height: 40px;
2513
- padding-left: var(--space-4);
2514
- border-bottom: 1px solid var(--color-divider);
2516
+ padding-left: var(--tl-space-4);
2517
+ border-bottom: 1px solid var(--tl-color-divider);
2515
2518
  }
2516
2519
 
2517
2520
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -2519,7 +2522,7 @@ it from receiving any pointer events or affecting the cursor. */
2519
2522
  }
2520
2523
 
2521
2524
  .tlui-page-menu__header__title {
2522
- color: var(--color-text);
2525
+ color: var(--tl-color-text);
2523
2526
  font-size: 12px;
2524
2527
  flex-grow: 2;
2525
2528
  }
@@ -2604,7 +2607,7 @@ it from receiving any pointer events or affecting the cursor. */
2604
2607
  display: inline-flex;
2605
2608
  align-items: center;
2606
2609
  justify-content: center;
2607
- color: var(--color-text);
2610
+ color: var(--tl-color-text);
2608
2611
  }
2609
2612
 
2610
2613
  .tlui-page_menu__item__sortable {
@@ -2617,7 +2620,7 @@ it from receiving any pointer events or affecting the cursor. */
2617
2620
  flex-direction: row;
2618
2621
  align-items: center;
2619
2622
  overflow: hidden;
2620
- z-index: var(--layer-above);
2623
+ z-index: var(--tl-layer-above);
2621
2624
  }
2622
2625
 
2623
2626
  .tlui-page_menu__item__sortable__title {
@@ -2629,7 +2632,7 @@ it from receiving any pointer events or affecting the cursor. */
2629
2632
  }
2630
2633
 
2631
2634
  .tlui-page_menu__item__sortable:focus-visible {
2632
- z-index: var(--layer-focused-input);
2635
+ z-index: var(--tl-layer-focused-input);
2633
2636
  }
2634
2637
 
2635
2638
  .tlui-page_menu__item__sortable__handle {
@@ -2638,7 +2641,7 @@ it from receiving any pointer events or affecting the cursor. */
2638
2641
  min-width: 0px;
2639
2642
  height: 40px;
2640
2643
  cursor: grab;
2641
- color: var(--color-text-3);
2644
+ color: var(--tl-color-text-3);
2642
2645
  flex-shrink: 0;
2643
2646
  margin-right: -9px;
2644
2647
  }
@@ -2680,13 +2683,13 @@ it from receiving any pointer events or affecting the cursor. */
2680
2683
  }
2681
2684
 
2682
2685
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']::after {
2683
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2686
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2684
2687
  opacity: 1;
2685
2688
  }
2686
2689
 
2687
2690
  @media (hover: hover) {
2688
2691
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']:not(:hover)::after {
2689
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2692
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2690
2693
  opacity: 1;
2691
2694
  }
2692
2695
  }
@@ -2722,7 +2725,7 @@ it from receiving any pointer events or affecting the cursor. */
2722
2725
  top: 48px;
2723
2726
  left: -9999px;
2724
2727
  padding: 8px 16px;
2725
- z-index: var(--layer-toasts);
2728
+ z-index: var(--tl-layer-toasts);
2726
2729
  }
2727
2730
 
2728
2731
  .tl-skip-to-main-content:focus {
@@ -2734,11 +2737,11 @@ it from receiving any pointer events or affecting the cursor. */
2734
2737
  .tlui-offline-indicator {
2735
2738
  display: flex;
2736
2739
  flex-direction: row;
2737
- gap: var(--space-3);
2738
- color: var(--color-text);
2739
- background-color: var(--color-low);
2740
- border: 3px solid var(--color-background);
2741
- padding: 0px var(--space-5);
2740
+ gap: var(--tl-space-3);
2741
+ color: var(--tl-color-text);
2742
+ background-color: var(--tl-color-low);
2743
+ border: 3px solid var(--tl-color-background);
2744
+ padding: 0px var(--tl-space-5);
2742
2745
  height: 42px;
2743
2746
  align-items: center;
2744
2747
  justify-content: center;
@@ -2753,10 +2756,10 @@ it from receiving any pointer events or affecting the cursor. */
2753
2756
  /* ------------------- Style panel ------------------ */
2754
2757
 
2755
2758
  .tlui-style-panel__wrapper {
2756
- box-shadow: var(--shadow-2);
2757
- border-radius: var(--radius-3);
2759
+ box-shadow: var(--tl-shadow-2);
2760
+ border-radius: var(--tl-radius-3);
2758
2761
  pointer-events: all;
2759
- background-color: var(--color-panel);
2762
+ background-color: var(--tl-color-panel);
2760
2763
  height: fit-content;
2761
2764
  max-height: 100%;
2762
2765
  margin: 8px;
@@ -2765,7 +2768,7 @@ it from receiving any pointer events or affecting the cursor. */
2765
2768
  overscroll-behavior: none;
2766
2769
  overflow-y: auto;
2767
2770
  overflow-x: hidden;
2768
- color: var(--color-text);
2771
+ color: var(--tl-color-text);
2769
2772
  }
2770
2773
  /* if the style panel is the only child (ie no share menu), increase the margin */
2771
2774
  .tlui-style-panel__wrapper:only-child {
@@ -2774,7 +2777,7 @@ it from receiving any pointer events or affecting the cursor. */
2774
2777
 
2775
2778
  .tlui-style-panel {
2776
2779
  position: relative;
2777
- z-index: var(--layer-panels);
2780
+ z-index: var(--tl-layer-panels);
2778
2781
  pointer-events: all;
2779
2782
  width: 148px;
2780
2783
  max-width: 148px;
@@ -2782,7 +2785,7 @@ it from receiving any pointer events or affecting the cursor. */
2782
2785
 
2783
2786
  .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
2784
2787
  border-radius: 10px;
2785
- outline: 2px solid var(--color-text);
2788
+ outline: 2px solid var(--tl-color-text);
2786
2789
  outline-offset: -5px;
2787
2790
  }
2788
2791
 
@@ -2800,8 +2803,22 @@ it from receiving any pointer events or affecting the cursor. */
2800
2803
  flex-direction: column;
2801
2804
  }
2802
2805
 
2803
- .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
2804
- border-bottom: 1px solid var(--color-divider);
2806
+ /*
2807
+ add a border to the bottom of all but the last section. we have to handle empty sections too, which
2808
+ are hidden and shouldn't be counted
2809
+ */
2810
+ .tlui-style-panel__section:not(:nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))) {
2811
+ border-bottom: 1px solid var(--tl-color-divider);
2812
+ }
2813
+ /*
2814
+ if a section ends with a slider and we're adding a border, we need some extra space for visual
2815
+ balance. we need to handle empty sections as above. is this the most complex css selector in all of
2816
+ tldraw? probably.
2817
+ */
2818
+ .tlui-style-panel__section:has(.tlui-slider__container:last-child):not(
2819
+ :nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))
2820
+ ) {
2821
+ margin-bottom: 7px;
2805
2822
  }
2806
2823
 
2807
2824
  .tlui-style-panel__section:empty {
@@ -2810,23 +2827,19 @@ it from receiving any pointer events or affecting the cursor. */
2810
2827
 
2811
2828
  .tlui-style-panel__section__common:not(:only-child) {
2812
2829
  margin-bottom: 7px;
2813
- border-bottom: 1px solid var(--color-divider);
2830
+ border-bottom: 1px solid var(--tl-color-divider);
2814
2831
  }
2815
2832
 
2816
- .tlui-style-panel__row {
2817
- display: flex;
2818
- }
2819
- /* Only really used for the alignment picker */
2820
- .tlui-style-panel__row__extra-button {
2821
- margin-left: -2px;
2833
+ .tlui-style-panel__dropdown-picker:only-child {
2834
+ flex: 1;
2822
2835
  }
2823
2836
 
2824
2837
  .tlui-style-panel__double-select-picker {
2825
2838
  display: flex;
2826
2839
  grid-template-columns: 1fr auto;
2827
2840
  align-items: center;
2828
- padding-left: var(--space-4);
2829
- color: var(--color-text-1);
2841
+ padding-left: var(--tl-space-4);
2842
+ color: var(--tl-color-text-1);
2830
2843
  font-size: 12px;
2831
2844
  }
2832
2845
 
@@ -2840,13 +2853,16 @@ it from receiving any pointer events or affecting the cursor. */
2840
2853
 
2841
2854
  .tlui-style-panel .tlui-button[data-state='open']::after {
2842
2855
  opacity: 1;
2843
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2856
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2844
2857
  }
2845
2858
 
2846
2859
  @media (hover: hover) {
2860
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
2861
+ background: none;
2862
+ }
2847
2863
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
2848
2864
  opacity: 1;
2849
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2865
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2850
2866
  }
2851
2867
  }
2852
2868
 
@@ -2856,14 +2872,14 @@ it from receiving any pointer events or affecting the cursor. */
2856
2872
  .tlui-style-panel__section__common .tlui-style-panel__subheading,
2857
2873
  .tlui-style-panel__subheading + .tlui-slider__container {
2858
2874
  margin: 0;
2859
- padding: var(--space-2) var(--space-3) 0px var(--space-4);
2875
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
2860
2876
  font-size: 12px;
2861
2877
  font-weight: inherit;
2862
2878
  line-height: inherit;
2863
2879
  }
2864
2880
 
2865
2881
  .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
2866
- padding-top: var(--space-3);
2882
+ padding-top: var(--tl-space-3);
2867
2883
  }
2868
2884
 
2869
2885
  .tlui-style-panel__subheading + .tlui-slider__container {
@@ -2874,11 +2890,11 @@ it from receiving any pointer events or affecting the cursor. */
2874
2890
 
2875
2891
  .tlui-layout__bottom {
2876
2892
  grid-row: 2;
2893
+ width: 100%;
2877
2894
  }
2878
2895
 
2879
2896
  .tlui-layout__bottom__main {
2880
2897
  width: 100%;
2881
- position: relative;
2882
2898
  display: flex;
2883
2899
  align-items: flex-end;
2884
2900
  justify-content: center;
@@ -2890,11 +2906,10 @@ it from receiving any pointer events or affecting the cursor. */
2890
2906
  display: flex;
2891
2907
  width: min-content;
2892
2908
  flex-direction: column;
2893
- z-index: var(--layer-panels);
2909
+ z-index: var(--tl-layer-panels);
2894
2910
  pointer-events: all;
2895
2911
  position: absolute;
2896
2912
  left: 0px;
2897
- bottom: 0px;
2898
2913
  }
2899
2914
 
2900
2915
  .tlui-navigation-panel::before {
@@ -2904,10 +2919,10 @@ it from receiving any pointer events or affecting the cursor. */
2904
2919
  z-index: -1;
2905
2920
  inset: -2px -2px 0px 0px;
2906
2921
  border-radius: 0;
2907
- border-top: 2px solid var(--color-background);
2908
- border-right: 2px solid var(--color-background);
2909
- border-top-right-radius: var(--radius-4);
2910
- background-color: var(--color-low);
2922
+ border-top: 2px solid var(--tl-color-background);
2923
+ border-right: 2px solid var(--tl-color-background);
2924
+ border-top-right-radius: var(--tl-radius-4);
2925
+ background-color: var(--tl-color-low);
2911
2926
  }
2912
2927
 
2913
2928
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -2921,7 +2936,7 @@ it from receiving any pointer events or affecting the cursor. */
2921
2936
  height: 96px;
2922
2937
  min-height: 96px;
2923
2938
  overflow: hidden;
2924
- padding: var(--space-3);
2939
+ padding: var(--tl-space-3);
2925
2940
  padding-top: 0px;
2926
2941
  }
2927
2942
 
@@ -2934,98 +2949,178 @@ it from receiving any pointer events or affecting the cursor. */
2934
2949
  /* --------------------- Toolbar -------------------- */
2935
2950
 
2936
2951
  /* Wide container */
2937
- .tlui-toolbar {
2952
+ .tlui-main-toolbar {
2938
2953
  grid-column: 1 / span 3;
2939
2954
  grid-row: 1;
2940
2955
  display: flex;
2941
2956
  align-items: center;
2942
2957
  justify-content: center;
2943
2958
  flex-grow: 2;
2944
- padding-bottom: calc(var(--space-3) + var(--sab));
2959
+ }
2960
+
2961
+ .tlui-main-toolbar--horizontal {
2962
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
2963
+ max-width: 100%;
2964
+ }
2965
+
2966
+ .tlui-main-toolbar--vertical {
2967
+ position: absolute;
2968
+ left: 0;
2969
+ top: 90px; /* height of page menu + 'back to content' button */
2970
+ bottom: 140px; /* height of expanded mini-map */
2971
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
2972
+ }
2973
+
2974
+ [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
2975
+ bottom: 90px; /* collapsed mini-map, but same as top to keep things looking even */
2945
2976
  }
2946
2977
 
2947
2978
  /* Centered Content */
2948
- .tlui-toolbar__inner {
2979
+ .tlui-main-toolbar__inner {
2949
2980
  position: relative;
2950
2981
  width: fit-content;
2951
2982
  display: flex;
2952
- gap: var(--space-3);
2953
- align-items: flex-end;
2983
+ gap: var(--tl-space-3);
2984
+ align-items: flex-start;
2954
2985
  }
2955
2986
 
2956
- .tlui-toolbar__left {
2987
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__inner {
2988
+ flex-direction: column;
2989
+ }
2990
+
2991
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__left {
2957
2992
  width: fit-content;
2958
2993
  }
2994
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__left {
2995
+ display: flex;
2996
+ height: fit-content;
2997
+ }
2959
2998
 
2960
2999
  /* Row of controls + lock button */
2961
- .tlui-toolbar__extras {
3000
+ .tlui-main-toolbar__extras {
2962
3001
  position: relative;
2963
- z-index: var(--layer-above);
2964
- width: 100%;
3002
+ z-index: var(--tl-layer-above);
2965
3003
  pointer-events: none;
2966
- top: 6px;
2967
- height: 48px;
3004
+ align-self: stretch;
2968
3005
  }
2969
3006
 
2970
- .tlui-toolbar__extras:empty {
3007
+ .tlui-main-toolbar__extras:empty {
2971
3008
  display: none;
2972
3009
  }
2973
3010
 
2974
- .tlui-toolbar__extras__controls {
2975
- display: flex;
3011
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras {
3012
+ height: 48px;
3013
+ top: 6px;
3014
+ }
3015
+
3016
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras {
3017
+ width: 48px;
3018
+ order: 1;
3019
+ }
3020
+
3021
+ .tlui-main-toolbar__extras__controls {
2976
3022
  position: relative;
2977
- flex-direction: row;
2978
- z-index: var(--layer-above);
2979
- background-color: var(--color-low);
2980
- border-top-left-radius: var(--radius-4);
2981
- border-top-right-radius: var(--radius-4);
2982
- border: 2px solid var(--color-background);
3023
+ z-index: var(--tl-layer-above);
3024
+ background-color: var(--tl-color-low);
3025
+ border: 2px solid var(--tl-color-background);
3026
+ pointer-events: all;
3027
+ }
3028
+
3029
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
3030
+ border-top-left-radius: var(--tl-radius-4);
3031
+ border-top-right-radius: var(--tl-radius-4);
2983
3032
  margin-left: 8px;
2984
3033
  margin-right: 0px;
2985
- pointer-events: all;
2986
3034
  width: fit-content;
2987
3035
  }
2988
3036
 
2989
- .tlui-toolbar__tools {
2990
- display: flex;
2991
- flex-direction: row;
2992
- align-items: center;
2993
- border-radius: var(--radius-4);
2994
- z-index: var(--layer-panels);
3037
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
3038
+ border-top-right-radius: var(--tl-radius-4);
3039
+ border-bottom-right-radius: var(--tl-radius-4);
3040
+ margin-top: 8px;
3041
+ margin-left: -2px;
3042
+ margin-bottom: 0px;
3043
+ width: fit-content;
3044
+ }
3045
+
3046
+ .tlui-main-toolbar__tools {
3047
+ border-radius: var(--tl-radius-4);
3048
+ z-index: var(--tl-layer-panels);
2995
3049
  pointer-events: all;
2996
3050
  position: relative;
2997
- background: var(--color-panel);
2998
- box-shadow: var(--shadow-2);
3051
+ background: var(--tl-color-panel);
3052
+ box-shadow: var(--tl-shadow-2);
2999
3053
  }
3000
- .tlui-toolbar__tools__list {
3001
- display: flex;
3002
- flex-direction: row;
3003
- align-items: center;
3054
+
3055
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
3056
+ align-self: flex-end;
3057
+ }
3058
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__mobile-style-panel {
3059
+ align-self: flex-start;
3004
3060
  }
3005
3061
 
3006
- .tlui-toolbar__overflow {
3062
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
3007
3063
  width: 40px;
3064
+ margin-left: 2px;
3065
+ }
3066
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__overflow {
3067
+ height: 40px;
3068
+ margin-top: 2px;
3008
3069
  }
3009
3070
 
3010
- .tlui-layout__mobile .tlui-toolbar__overflow {
3071
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
3011
3072
  width: 32px;
3012
3073
  padding: 0px;
3013
3074
  }
3014
3075
 
3015
- .tlui-toolbar *[data-state='open']::after {
3016
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
3076
+ .tlui-main-toolbar--horizontal *[data-state='open']::after {
3077
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3078
+ opacity: 1;
3079
+ }
3080
+ .tlui-main-toolbar--vertical *[data-state='open']::after {
3081
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3017
3082
  opacity: 1;
3018
3083
  }
3019
3084
 
3085
+ .tlui-main-toolbar__overflow-content {
3086
+ touch-action: none;
3087
+ }
3088
+
3089
+ .tlui-main-toolbar__tools [data-toolbar-visible='false'],
3090
+ .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
3091
+ display: none;
3092
+ }
3093
+
3094
+ .tlui-main-toolbar__group:empty {
3095
+ display: none;
3096
+ }
3097
+ .tlui-row.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3098
+ border-right: 1px solid var(--color-divider);
3099
+ margin-right: 2px;
3100
+ }
3101
+ .tlui-column.tlui-main-toolbar__group:not(
3102
+ :nth-last-child(-n + 1 of [data-toolbar-visible='true'])
3103
+ ) {
3104
+ border-bottom: 1px solid var(--color-divider);
3105
+ margin-bottom: 2px;
3106
+ }
3107
+ .tlui-grid.tlui-main-toolbar__group {
3108
+ grid-column: 1 / span 4;
3109
+ }
3110
+ .tlui-grid.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3111
+ border-bottom: 1px solid var(--color-divider);
3112
+ margin-bottom: 2px;
3113
+ }
3114
+
3020
3115
  @media (hover: hover) {
3021
- .tlui-toolbar *[data-state='open']:not(:hover)::after {
3022
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
3116
+ .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
3117
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3118
+ opacity: 1;
3119
+ }
3120
+ .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
3121
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3023
3122
  opacity: 1;
3024
3123
  }
3025
- }
3026
-
3027
- .tlui-layout__mobile .tlui-toolbar {
3028
- transition: transform 0.15s ease-out 0.05s;
3029
3124
  }
3030
3125
 
3031
3126
  /* ------------------- Tooltip -------------------- */
@@ -3034,44 +3129,40 @@ it from receiving any pointer events or affecting the cursor. */
3034
3129
  font-size: 12px;
3035
3130
  padding: 2px 8px;
3036
3131
  border-radius: 4px;
3037
- background-color: var(--color-tooltip);
3132
+ background-color: var(--tl-color-tooltip);
3038
3133
  box-shadow: none;
3039
- color: var(--color-text-shadow);
3134
+ color: var(--tl-color-text-shadow);
3040
3135
  max-width: 400px;
3041
3136
  width: fit-content;
3042
3137
  text-align: center;
3043
- pointer-events: none;
3044
3138
  will-change: transform, opacity;
3045
3139
  z-index: 2;
3046
3140
  }
3047
3141
 
3048
3142
  .tlui-tooltip__arrow {
3049
- fill: var(--color-tooltip);
3143
+ fill: var(--tl-color-tooltip);
3050
3144
  will-change: opacity;
3051
3145
  }
3052
3146
 
3053
3147
  [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
3054
- z-index: var(--layer-toasts) !important;
3055
- }
3056
-
3057
- [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
3058
- transition: all 0.1s ease-out;
3148
+ z-index: var(--tl-layer-toasts) !important;
3149
+ pointer-events: none;
3059
3150
  }
3060
3151
 
3061
3152
  /* ------------------- Debug panel ------------------ */
3062
3153
 
3063
3154
  .tlui-debug-panel {
3064
- background-color: var(--color-low);
3155
+ background-color: var(--tl-color-low);
3065
3156
  width: 100%;
3066
3157
  display: grid;
3067
3158
  align-items: center;
3068
3159
  grid-template-columns: 1fr auto auto auto;
3069
3160
  justify-content: space-between;
3070
- padding-left: var(--space-4);
3071
- border-top: 1px solid var(--color-background);
3161
+ padding-left: var(--tl-space-4);
3162
+ border-top: 1px solid var(--tl-color-background);
3072
3163
  font-size: 12px;
3073
- color: var(--color-text-1);
3074
- z-index: var(--layer-panels);
3164
+ color: var(--tl-color-text-1);
3165
+ z-index: var(--tl-layer-panels);
3075
3166
  pointer-events: all;
3076
3167
  }
3077
3168
 
@@ -3087,7 +3178,7 @@ it from receiving any pointer events or affecting the cursor. */
3087
3178
 
3088
3179
  .tlui-debug-panel__fps__slow {
3089
3180
  font-weight: bold;
3090
- color: var(--color-danger);
3181
+ color: var(--tl-color-danger);
3091
3182
  }
3092
3183
 
3093
3184
  .tlui-a11y-audit {
@@ -3097,7 +3188,7 @@ it from receiving any pointer events or affecting the cursor. */
3097
3188
  .tlui-a11y-audit th,
3098
3189
  .tlui-a11y-audit td {
3099
3190
  padding: 8px;
3100
- border: 1px solid var(--color-low-border);
3191
+ border: 1px solid var(--tl-color-low-border);
3101
3192
  }
3102
3193
 
3103
3194
  /* --------------------- Toasts --------------------- */
@@ -3110,10 +3201,10 @@ it from receiving any pointer events or affecting the cursor. */
3110
3201
  align-items: flex-end;
3111
3202
  justify-content: flex-end;
3112
3203
  flex-direction: column;
3113
- gap: var(--space-3);
3204
+ gap: var(--tl-space-3);
3114
3205
  pointer-events: none;
3115
- padding: 0px var(--space-3) 64px 0px;
3116
- z-index: var(--layer-toasts);
3206
+ padding: 0px var(--tl-space-3) 64px 0px;
3207
+ z-index: var(--tl-layer-toasts);
3117
3208
  }
3118
3209
 
3119
3210
  .tlui-toast__viewport > * {
@@ -3122,34 +3213,34 @@ it from receiving any pointer events or affecting the cursor. */
3122
3213
 
3123
3214
  .tlui-toast__icon {
3124
3215
  padding-top: 11px;
3125
- padding-left: var(--space-4);
3126
- color: var(--color-text-1);
3216
+ padding-left: var(--tl-space-4);
3217
+ color: var(--tl-color-text-1);
3127
3218
  }
3128
3219
 
3129
3220
  .tlui-toast__container {
3130
3221
  min-width: 200px;
3131
3222
  display: flex;
3132
3223
  flex-direction: row;
3133
- background-color: var(--color-panel);
3134
- box-shadow: var(--shadow-2);
3135
- border-radius: var(--radius-3);
3224
+ background-color: var(--tl-color-panel);
3225
+ box-shadow: var(--tl-shadow-2);
3226
+ border-radius: var(--tl-radius-3);
3136
3227
  font-size: 12px;
3137
3228
  }
3138
3229
 
3139
3230
  .tlui-toast__container[data-severity='success'] .tlui-icon {
3140
- color: var(--color-success);
3231
+ color: var(--tl-color-success);
3141
3232
  }
3142
3233
 
3143
3234
  .tlui-toast__container[data-severity='info'] .tlui-icon {
3144
- color: var(--color-info);
3235
+ color: var(--tl-color-info);
3145
3236
  }
3146
3237
 
3147
3238
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
3148
- color: var(--color-warning);
3239
+ color: var(--tl-color-warning);
3149
3240
  }
3150
3241
 
3151
3242
  .tlui-toast__container[data-severity='error'] .tlui-icon {
3152
- color: var(--color-danger);
3243
+ color: var(--tl-color-danger);
3153
3244
  }
3154
3245
 
3155
3246
  .tlui-toast__main {
@@ -3158,27 +3249,27 @@ it from receiving any pointer events or affecting the cursor. */
3158
3249
  }
3159
3250
 
3160
3251
  .tlui-toast__content {
3161
- padding: var(--space-4);
3252
+ padding: var(--tl-space-4);
3162
3253
  display: flex;
3163
3254
  line-height: 1.4;
3164
3255
  flex-direction: column;
3165
- gap: var(--space-3);
3256
+ gap: var(--tl-space-3);
3166
3257
  }
3167
3258
 
3168
3259
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
3169
- padding-bottom: var(--space-2);
3260
+ padding-bottom: var(--tl-space-2);
3170
3261
  }
3171
3262
 
3172
3263
  .tlui-toast__title {
3173
3264
  font-weight: bold;
3174
- color: var(--color-text-1);
3265
+ color: var(--tl-color-text-1);
3175
3266
  /* this makes the default toast look better */
3176
3267
  line-height: 16px;
3177
3268
  }
3178
3269
 
3179
3270
  .tlui-toast__description {
3180
- color: var(--color-text-1);
3181
- padding: var(--space-3);
3271
+ color: var(--tl-color-text-1);
3272
+ padding: var(--tl-space-3);
3182
3273
  margin: 0px;
3183
3274
  padding: 0px;
3184
3275
  }
@@ -3230,14 +3321,14 @@ it from receiving any pointer events or affecting the cursor. */
3230
3321
  left: 0px;
3231
3322
  width: 100%;
3232
3323
  height: 100%;
3233
- z-index: var(--layer-canvas-overlays);
3234
- background-color: var(--color-overlay);
3324
+ z-index: var(--tl-layer-canvas-overlays);
3325
+ background-color: var(--tl-color-overlay);
3235
3326
  pointer-events: all;
3236
3327
  animation: tl-fade-in 0.12s ease-out;
3237
3328
  display: grid;
3238
3329
  place-items: center;
3239
3330
  overflow-y: auto;
3240
- padding: 0px var(--space-3);
3331
+ padding: 0px var(--tl-space-3);
3241
3332
  }
3242
3333
 
3243
3334
  .tlui-dialog__content {
@@ -3245,9 +3336,9 @@ it from receiving any pointer events or affecting the cursor. */
3245
3336
  flex-direction: column;
3246
3337
  position: relative;
3247
3338
  cursor: default;
3248
- background-color: var(--color-panel);
3249
- box-shadow: var(--shadow-3);
3250
- border-radius: var(--radius-3);
3339
+ background-color: var(--tl-color-panel);
3340
+ box-shadow: var(--tl-shadow-3);
3341
+ border-radius: var(--tl-radius-3);
3251
3342
  font-size: 12px;
3252
3343
  overflow: hidden;
3253
3344
  min-width: 300px;
@@ -3260,9 +3351,9 @@ it from receiving any pointer events or affecting the cursor. */
3260
3351
  display: flex;
3261
3352
  align-items: center;
3262
3353
  flex: 0;
3263
- z-index: var(--layer-header-footer);
3264
- padding-left: var(--space-4);
3265
- color: var(--color-text);
3354
+ z-index: var(--tl-layer-header-footer);
3355
+ padding-left: var(--tl-space-4);
3356
+ color: var(--tl-color-text);
3266
3357
  height: 40px;
3267
3358
  }
3268
3359
 
@@ -3271,7 +3362,7 @@ it from receiving any pointer events or affecting the cursor. */
3271
3362
  font-weight: inherit;
3272
3363
  font-size: 12px;
3273
3364
  margin: 0px;
3274
- color: var(--color-text-1);
3365
+ color: var(--tl-color-text-1);
3275
3366
  }
3276
3367
 
3277
3368
  .tlui-dialog__header__close {
@@ -3279,16 +3370,16 @@ it from receiving any pointer events or affecting the cursor. */
3279
3370
  }
3280
3371
 
3281
3372
  .tlui-dialog__body {
3282
- padding: var(--space-4) var(--space-4);
3373
+ padding: var(--tl-space-4) var(--tl-space-4);
3283
3374
  flex: 0 1;
3284
3375
  overflow-y: auto;
3285
3376
  overflow-x: hidden;
3286
- color: var(--color-text-1);
3377
+ color: var(--tl-color-text-1);
3287
3378
  user-select: all;
3288
3379
  -webkit-user-select: text;
3289
3380
  }
3290
3381
  .tlui-dialog__body a {
3291
- color: var(--color-selected);
3382
+ color: var(--tl-color-selected);
3292
3383
  }
3293
3384
 
3294
3385
  .tlui-dialog__body ul,
@@ -3296,13 +3387,13 @@ it from receiving any pointer events or affecting the cursor. */
3296
3387
  padding-left: 16px;
3297
3388
  display: flex;
3298
3389
  flex-direction: column;
3299
- gap: var(--space-2);
3390
+ gap: var(--tl-space-2);
3300
3391
  }
3301
3392
 
3302
3393
  .tlui-dialog__footer {
3303
3394
  position: relative;
3304
3395
  min-height: 12px;
3305
- z-index: var(--layer-header-footer);
3396
+ z-index: var(--tl-layer-header-footer);
3306
3397
  }
3307
3398
 
3308
3399
  .tlui-dialog__footer__actions {
@@ -3322,15 +3413,15 @@ it from receiving any pointer events or affecting the cursor. */
3322
3413
  .tlui-edit-link-dialog {
3323
3414
  display: flex;
3324
3415
  flex-direction: column;
3325
- gap: var(--space-4);
3326
- color: var(--color-text);
3416
+ gap: var(--tl-space-4);
3417
+ color: var(--tl-color-text);
3327
3418
  }
3328
3419
 
3329
3420
  .tlui-edit-link-dialog__input {
3330
- background-color: var(--color-muted-2);
3421
+ background-color: var(--tl-color-muted-2);
3331
3422
  flex-grow: 2;
3332
- border-radius: var(--radius-2);
3333
- padding: 0px var(--space-4);
3423
+ border-radius: var(--tl-radius-2);
3424
+ padding: 0px var(--tl-space-4);
3334
3425
  }
3335
3426
 
3336
3427
  /* Embed Dialog */
@@ -3338,15 +3429,15 @@ it from receiving any pointer events or affecting the cursor. */
3338
3429
  .tlui-embed__spacer {
3339
3430
  flex-grow: 2;
3340
3431
  min-height: 0px;
3341
- margin-left: calc(-1 * var(--space-4));
3342
- margin-top: calc(-1 * var(--space-4));
3432
+ margin-left: calc(-1 * var(--tl-space-4));
3433
+ margin-top: calc(-1 * var(--tl-space-4));
3343
3434
  pointer-events: none;
3344
3435
  }
3345
3436
 
3346
3437
  .tlui-embed-dialog__list {
3347
3438
  display: flex;
3348
3439
  flex-direction: column;
3349
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
3440
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
3350
3441
  }
3351
3442
 
3352
3443
  .tlui-embed-dialog__item__image {
@@ -3358,49 +3449,49 @@ it from receiving any pointer events or affecting the cursor. */
3358
3449
  background-size: contain;
3359
3450
  background-repeat: no-repeat;
3360
3451
  background-position: center center;
3361
- background-color: var(--color-selected-contrast);
3362
- border-radius: var(--radius-1);
3452
+ background-color: var(--tl-color-selected-contrast);
3453
+ border-radius: var(--tl-radius-1);
3363
3454
  }
3364
3455
 
3365
3456
  .tlui-embed-dialog__enter {
3366
3457
  display: flex;
3367
3458
  flex-direction: column;
3368
- gap: var(--space-4);
3369
- color: var(--color-text-1);
3459
+ gap: var(--tl-space-4);
3460
+ color: var(--tl-color-text-1);
3370
3461
  }
3371
3462
 
3372
3463
  .tlui-embed-dialog__input {
3373
- background-color: var(--color-muted-2);
3464
+ background-color: var(--tl-color-muted-2);
3374
3465
  flex-grow: 2;
3375
- border-radius: var(--radius-2);
3376
- padding: 0px var(--space-4);
3466
+ border-radius: var(--tl-radius-2);
3467
+ padding: 0px var(--tl-space-4);
3377
3468
  }
3378
3469
 
3379
3470
  .tlui-embed-dialog__warning {
3380
- color: var(--color-danger);
3471
+ color: var(--tl-color-danger);
3381
3472
  text-shadow: none;
3382
3473
  }
3383
3474
 
3384
3475
  .tlui-embed-dialog__instruction__link {
3385
3476
  display: flex;
3386
- gap: var(--space-1);
3387
- margin-top: var(--space-4);
3477
+ gap: var(--tl-space-1);
3478
+ margin-top: var(--tl-space-4);
3388
3479
  }
3389
3480
 
3390
3481
  .tlui-embed-dialog__enter a {
3391
- color: var(--color-text-1);
3482
+ color: var(--tl-color-text-1);
3392
3483
  }
3393
3484
 
3394
3485
  /* --------------- Keyboard shortcuts --------------- */
3395
3486
 
3396
3487
  .tlui-shortcuts-dialog__header {
3397
- border-bottom: 1px solid var(--color-divider);
3488
+ border-bottom: 1px solid var(--tl-color-divider);
3398
3489
  }
3399
3490
 
3400
3491
  .tlui-shortcuts-dialog__body {
3401
3492
  position: relative;
3402
3493
  columns: 3;
3403
- column-gap: var(--space-9);
3494
+ column-gap: var(--tl-space-9);
3404
3495
  pointer-events: all;
3405
3496
  touch-action: auto;
3406
3497
 
@@ -3418,14 +3509,14 @@ it from receiving any pointer events or affecting the cursor. */
3418
3509
 
3419
3510
  .tlui-shortcuts-dialog__group {
3420
3511
  break-inside: avoid-column;
3421
- padding-bottom: var(--space-6);
3512
+ padding-bottom: var(--tl-space-6);
3422
3513
  }
3423
3514
 
3424
3515
  .tlui-shortcuts-dialog__group__title {
3425
3516
  font-size: inherit;
3426
3517
  font-weight: inherit;
3427
3518
  margin: 0px;
3428
- color: var(--color-text-3);
3519
+ color: var(--tl-color-text-3);
3429
3520
  height: 32px;
3430
3521
  display: flex;
3431
3522
  align-items: center;
@@ -3434,12 +3525,12 @@ it from receiving any pointer events or affecting the cursor. */
3434
3525
  .tlui-shortcuts-dialog__group__content {
3435
3526
  display: flex;
3436
3527
  flex-direction: column;
3437
- color: var(--color-text-1);
3528
+ color: var(--tl-color-text-1);
3438
3529
  }
3439
3530
 
3440
3531
  .tlui-shortcuts-dialog__key-pair {
3441
3532
  display: flex;
3442
- gap: var(--space-4);
3533
+ gap: var(--tl-space-4);
3443
3534
  align-items: center;
3444
3535
  justify-content: space-between;
3445
3536
  height: 32px;
@@ -3466,12 +3557,12 @@ it from receiving any pointer events or affecting the cursor. */
3466
3557
  height: 24px;
3467
3558
  background: linear-gradient(
3468
3559
  to bottom,
3469
- var(--color-panel-transparent) 0%,
3470
- var(--color-panel) 90%,
3471
- var(--color-panel) 100%
3560
+ var(--tl-color-panel-transparent) 0%,
3561
+ var(--tl-color-panel) 90%,
3562
+ var(--tl-color-panel) 100%
3472
3563
  );
3473
- border-bottom-left-radius: var(--radius-3);
3474
- border-bottom-right-radius: var(--radius-3);
3564
+ border-bottom-left-radius: var(--tl-radius-3);
3565
+ border-bottom-right-radius: var(--tl-radius-3);
3475
3566
  pointer-events: none;
3476
3567
  }
3477
3568
 
@@ -3486,10 +3577,10 @@ it from receiving any pointer events or affecting the cursor. */
3486
3577
  .tlui-help-menu {
3487
3578
  pointer-events: all;
3488
3579
  position: absolute;
3489
- bottom: var(--space-2);
3490
- right: var(--space-2);
3491
- z-index: var(--layer-panels);
3492
- border: 2px solid var(--color-background);
3580
+ bottom: var(--tl-space-2);
3581
+ right: var(--tl-space-2);
3582
+ z-index: var(--tl-layer-panels);
3583
+ border: 2px solid var(--tl-color-background);
3493
3584
  border-radius: 100%;
3494
3585
  }
3495
3586
 
@@ -3500,7 +3591,7 @@ it from receiving any pointer events or affecting the cursor. */
3500
3591
  display: flex;
3501
3592
  flex-direction: row;
3502
3593
  justify-content: flex-end;
3503
- z-index: var(--layer-panels);
3594
+ z-index: var(--tl-layer-panels);
3504
3595
  align-items: center;
3505
3596
  padding-top: 2px;
3506
3597
  padding-right: 4px;
@@ -3516,7 +3607,7 @@ it from receiving any pointer events or affecting the cursor. */
3516
3607
  border: none;
3517
3608
  cursor: pointer;
3518
3609
  pointer-events: all;
3519
- border-radius: var(--radius-1);
3610
+ border-radius: var(--tl-radius-1);
3520
3611
  padding-right: 1px;
3521
3612
  height: 100%;
3522
3613
  }
@@ -3529,8 +3620,8 @@ it from receiving any pointer events or affecting the cursor. */
3529
3620
  .tlui-people-menu__avatar {
3530
3621
  height: 24px;
3531
3622
  width: 24px;
3532
- border: 2px solid var(--color-background);
3533
- background-color: var(--color-low);
3623
+ border: 2px solid var(--tl-color-background);
3624
+ background-color: var(--tl-color-low);
3534
3625
  border-radius: 100%;
3535
3626
  display: flex;
3536
3627
  align-items: center;
@@ -3539,7 +3630,7 @@ it from receiving any pointer events or affecting the cursor. */
3539
3630
  font-size: 10px;
3540
3631
  font-weight: bold;
3541
3632
  text-align: center;
3542
- color: var(--color-selected-contrast);
3633
+ color: var(--tl-color-selected-contrast);
3543
3634
  z-index: 2;
3544
3635
  }
3545
3636
 
@@ -3553,7 +3644,7 @@ it from receiving any pointer events or affecting the cursor. */
3553
3644
 
3554
3645
  @media (hover: hover) {
3555
3646
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
3556
- border-color: var(--color-low);
3647
+ border-color: var(--tl-color-low);
3557
3648
  }
3558
3649
  }
3559
3650
 
@@ -3561,12 +3652,12 @@ it from receiving any pointer events or affecting the cursor. */
3561
3652
  min-width: 0px;
3562
3653
  font-size: 11px;
3563
3654
  font-weight: 600;
3564
- color: var(--color-text-1);
3655
+ color: var(--tl-color-text-1);
3565
3656
  font-family: inherit;
3566
3657
  padding: 0px 4px;
3567
3658
  }
3568
3659
  .tlui-people-menu__more::after {
3569
- border-radius: var(--radius-2);
3660
+ border-radius: var(--tl-radius-2);
3570
3661
  inset: 0px;
3571
3662
  }
3572
3663
 
@@ -3595,7 +3686,7 @@ it from receiving any pointer events or affecting the cursor. */
3595
3686
  }
3596
3687
 
3597
3688
  .tlui-people-menu__section:not(:last-child) {
3598
- border-bottom: 1px solid var(--color-divider);
3689
+ border-bottom: 1px solid var(--tl-color-divider);
3599
3690
  }
3600
3691
 
3601
3692
  .tlui-people-menu__user {
@@ -3614,7 +3705,7 @@ it from receiving any pointer events or affecting the cursor. */
3614
3705
  text-overflow: ellipsis;
3615
3706
  white-space: nowrap;
3616
3707
  font-size: 12px;
3617
- color: var(--color-text-1);
3708
+ color: var(--tl-color-text-1);
3618
3709
  max-width: 100%;
3619
3710
  flex-grow: 1;
3620
3711
  flex-shrink: 100;
@@ -3626,7 +3717,7 @@ it from receiving any pointer events or affecting the cursor. */
3626
3717
  text-overflow: ellipsis;
3627
3718
  white-space: nowrap;
3628
3719
  font-size: 12px;
3629
- color: var(--color-text-3);
3720
+ color: var(--tl-color-text-3);
3630
3721
  flex-grow: 100;
3631
3722
  flex-shrink: 0;
3632
3723
  margin-left: 4px;
@@ -3717,7 +3808,7 @@ it from receiving any pointer events or affecting the cursor. */
3717
3808
  inset: 0px;
3718
3809
  border-width: 2px;
3719
3810
  border-style: solid;
3720
- z-index: var(--layer-following-indicator);
3811
+ z-index: var(--tl-layer-following-indicator);
3721
3812
  pointer-events: none;
3722
3813
  }
3723
3814
 
@@ -3736,7 +3827,7 @@ it from receiving any pointer events or affecting the cursor. */
3736
3827
  }
3737
3828
 
3738
3829
  .tlui-contextual-toolbar [data-isactive='true']::after {
3739
- background-color: var(--color-muted-2);
3830
+ background-color: var(--tl-color-muted-2);
3740
3831
  opacity: 1;
3741
3832
  }
3742
3833
 
@@ -3752,7 +3843,7 @@ it from receiving any pointer events or affecting the cursor. */
3752
3843
 
3753
3844
  .tlui-contextual-toolbar[data-visible='true'] {
3754
3845
  opacity: 1;
3755
- z-index: var(--layer-menus);
3846
+ z-index: var(--tl-layer-menus);
3756
3847
  }
3757
3848
 
3758
3849
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -3811,7 +3902,7 @@ it from receiving any pointer events or affecting the cursor. */
3811
3902
 
3812
3903
  @keyframes tlui-slide-in {
3813
3904
  from {
3814
- transform: translateX(calc(100% + var(--space-3)));
3905
+ transform: translateX(calc(100% + var(--tl-space-3)));
3815
3906
  }
3816
3907
  to {
3817
3908
  transform: translateX(0px);
@@ -3823,7 +3914,7 @@ it from receiving any pointer events or affecting the cursor. */
3823
3914
  transform: translateX(var(--radix-toast-swipe-end-x));
3824
3915
  }
3825
3916
  to {
3826
- transform: translateX(calc(100% + var(--space-3)));
3917
+ transform: translateX(calc(100% + var(--tl-space-3)));
3827
3918
  }
3828
3919
  }
3829
3920