tldraw 3.16.0-canary.fa3749606e52 → 3.16.0-canary.fe4babe9c1ad

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