tldraw 3.16.0-canary.fa3749606e52 → 3.16.0-canary.ffc5da6dc09f

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 (466) hide show
  1. package/dist-cjs/index.d.ts +322 -105
  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 +5 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +6 -0
  13. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
  14. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +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/draw/DrawShapeUtil.js +3 -3
  19. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  21. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  22. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +18 -12
  23. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  25. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  26. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  27. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  29. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  30. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  31. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  33. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  35. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  36. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  37. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  38. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  39. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  40. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  41. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  42. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  43. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +0 -2
  44. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  45. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  46. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  47. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  48. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  49. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  50. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  51. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  52. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  53. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  54. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  55. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  56. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  57. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  58. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  59. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  60. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  61. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  62. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  63. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  64. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  65. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  66. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  67. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  68. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  69. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  70. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  71. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  72. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  74. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  75. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  76. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  77. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  78. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  80. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  81. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  82. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  83. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  84. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  85. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +11 -4
  86. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  87. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +249 -279
  88. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  89. package/dist-cjs/lib/ui/components/{primitives/TldrawUiButtonPicker.js → StylePanel/StylePanelButtonPicker.js} +52 -56
  90. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  91. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  92. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  93. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +26 -25
  94. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  95. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +47 -43
  96. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  97. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  98. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  99. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +3 -2
  100. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  101. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  102. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  103. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  104. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  105. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  106. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  107. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +3 -3
  108. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  109. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  110. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  111. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  112. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  113. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  114. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  115. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +10 -1
  116. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  117. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  118. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  119. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +17 -4
  120. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  121. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +32 -7
  122. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  123. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +269 -0
  124. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  125. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  126. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  127. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  128. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  129. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  130. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +12 -26
  131. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  132. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  133. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  134. package/dist-cjs/lib/ui/context/actions.js +38 -10
  135. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  136. package/dist-cjs/lib/ui/context/components.js +2 -0
  137. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  138. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  139. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  140. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  141. package/dist-cjs/lib/ui/hooks/useTools.js +22 -4
  142. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  143. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  144. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +5 -0
  145. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  146. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  147. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  148. package/dist-cjs/lib/ui/version.js +3 -3
  149. package/dist-cjs/lib/ui/version.js.map +1 -1
  150. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  151. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  152. package/dist-cjs/lib/utils/export/export.js +0 -20
  153. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  154. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  155. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  156. package/dist-esm/index.d.mts +322 -105
  157. package/dist-esm/index.mjs +83 -29
  158. package/dist-esm/index.mjs.map +2 -2
  159. package/dist-esm/lib/Tldraw.mjs +14 -4
  160. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  161. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  162. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  163. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  164. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  165. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  166. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  167. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  168. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  169. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  170. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  171. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  172. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  173. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  174. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  175. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  176. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  177. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +19 -12
  178. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  179. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  180. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  181. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  182. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  183. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  184. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  185. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  186. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  187. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  188. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  189. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  190. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  191. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  192. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  193. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  194. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  195. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  196. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  197. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  198. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +0 -2
  199. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  200. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  201. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  202. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  203. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  204. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  205. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  206. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  207. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  208. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  209. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  210. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  211. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  212. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  213. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  214. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  215. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  216. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  217. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  218. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  219. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  220. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  221. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  222. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  223. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  224. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  225. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  226. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  227. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  228. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  229. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  230. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  231. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  232. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  233. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  234. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  235. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  236. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  237. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  238. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  239. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  240. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +16 -5
  241. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  242. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +251 -283
  243. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  244. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +126 -0
  245. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  246. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  247. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  248. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +23 -22
  249. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  250. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +44 -40
  251. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  252. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  253. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  254. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +3 -2
  255. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  256. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  257. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  258. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  259. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  260. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  261. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  262. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +3 -3
  263. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  264. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  265. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  266. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  267. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  268. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  269. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  270. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +10 -1
  271. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  272. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  273. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  274. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +17 -4
  275. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  276. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +32 -7
  277. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  278. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +246 -0
  279. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  280. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  281. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  282. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  283. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  284. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  285. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +12 -26
  286. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  287. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  288. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  289. package/dist-esm/lib/ui/context/actions.mjs +38 -10
  290. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  291. package/dist-esm/lib/ui/context/components.mjs +2 -0
  292. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  293. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  294. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  295. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  296. package/dist-esm/lib/ui/hooks/useTools.mjs +23 -4
  297. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  298. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +5 -0
  299. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  300. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  301. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  302. package/dist-esm/lib/ui/version.mjs +3 -3
  303. package/dist-esm/lib/ui/version.mjs.map +1 -1
  304. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  305. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  306. package/dist-esm/lib/utils/export/export.mjs +0 -20
  307. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  308. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  309. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  310. package/package.json +11 -34
  311. package/src/index.ts +62 -22
  312. package/src/lib/Tldraw.tsx +15 -2
  313. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  314. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  315. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  316. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +4 -3
  317. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +7 -6
  318. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  319. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  320. package/src/lib/shapes/arrow/arrowTargetState.ts +2 -1
  321. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  322. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  323. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  324. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  325. package/src/lib/shapes/frame/FrameShapeUtil.tsx +29 -14
  326. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  327. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  328. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  329. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  330. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  331. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  332. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  333. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  334. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  335. package/src/lib/shapes/shared/PlainTextLabel.tsx +0 -6
  336. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  337. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  338. package/src/lib/shapes/shared/useEditablePlainText.ts +0 -6
  339. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  340. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  341. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  342. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  343. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  344. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  345. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  346. package/src/lib/ui/TldrawUi.tsx +33 -12
  347. package/src/lib/ui/assetUrls.ts +13 -10
  348. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  349. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  350. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  351. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  352. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  353. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  354. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  355. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  356. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  357. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  358. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  359. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  360. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +28 -12
  361. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +261 -343
  362. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +66 -50
  363. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  364. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +31 -22
  365. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  366. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  367. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +4 -3
  368. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  369. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  370. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  371. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +5 -5
  372. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  373. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +14 -11
  374. package/src/lib/ui/components/menu-items.tsx +8 -0
  375. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +6 -1
  376. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  377. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +50 -30
  378. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +54 -12
  379. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +335 -0
  380. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  381. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  382. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  383. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +18 -27
  384. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  385. package/src/lib/ui/context/actions.tsx +38 -10
  386. package/src/lib/ui/context/components.tsx +3 -0
  387. package/src/lib/ui/context/events.tsx +2 -1
  388. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  389. package/src/lib/ui/hooks/useTools.tsx +26 -4
  390. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +5 -0
  391. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +5 -0
  392. package/src/lib/ui/kbd-utils.ts +10 -3
  393. package/src/lib/ui/version.ts +3 -3
  394. package/src/lib/ui.css +424 -293
  395. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  396. package/src/lib/utils/export/copyAs.ts +1 -24
  397. package/src/lib/utils/export/export.ts +0 -36
  398. package/src/lib/utils/export/exportAs.ts +1 -32
  399. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  400. package/src/test/A11y.test.tsx +3 -2
  401. package/src/test/ClickManager.test.ts +7 -6
  402. package/src/test/Editor.test.tsx +20 -19
  403. package/src/test/EraserTool.test.ts +184 -13
  404. package/src/test/HandTool.test.ts +10 -9
  405. package/src/test/HighlightShape.test.ts +2 -1
  406. package/src/test/SelectTool.test.ts +3 -2
  407. package/src/test/TLUserPreferences.test.ts +4 -3
  408. package/src/test/TestEditor.ts +13 -15
  409. package/src/test/TldrawEditor.test.tsx +11 -10
  410. package/src/test/ZoomTool.test.ts +7 -6
  411. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  412. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  413. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  414. package/src/test/arrows-megabus.test.tsx +17 -10
  415. package/src/test/bindings.test.tsx +24 -37
  416. package/src/test/bookmark-shapes.test.ts +1 -8
  417. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  418. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  419. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  420. package/src/test/commands/alignShapes.test.tsx +25 -24
  421. package/src/test/commands/animationSpeed.test.ts +2 -1
  422. package/src/test/commands/centerOnPoint.test.ts +3 -2
  423. package/src/test/commands/clipboard.test.ts +3 -2
  424. package/src/test/commands/createShapes.test.ts +2 -1
  425. package/src/test/commands/deleteShapes.test.ts +2 -1
  426. package/src/test/commands/distributeShapes.test.tsx +11 -10
  427. package/src/test/commands/getSvgString.test.ts +2 -1
  428. package/src/test/commands/packShapes.test.ts +5 -4
  429. package/src/test/commands/resizeShape.test.ts +2 -1
  430. package/src/test/commands/rotateShapes.test.ts +7 -6
  431. package/src/test/commands/setCamera.test.ts +4 -3
  432. package/src/test/commands/setCurrentPage.test.ts +3 -2
  433. package/src/test/commands/stackShapes.test.ts +11 -10
  434. package/src/test/commands/stretch.test.tsx +13 -12
  435. package/src/test/createDeepLink.test.tsx +2 -1
  436. package/src/test/cropping.test.ts +3 -2
  437. package/src/test/custom-clipping.test.ts +436 -0
  438. package/src/test/drawing.test.ts +2 -1
  439. package/src/test/flipShapes.test.ts +4 -3
  440. package/src/test/frames.test.ts +25 -24
  441. package/src/test/getCulledShapes.test.tsx +3 -2
  442. package/src/test/groups.test.tsx +1 -1
  443. package/src/test/handleDeepLink.test.tsx +2 -1
  444. package/src/test/inner-outer-margin.test.ts +315 -0
  445. package/src/test/maxShapes.test.ts +3 -2
  446. package/src/test/modifiers.test.ts +5 -4
  447. package/src/test/navigation.test.ts +12 -11
  448. package/src/test/panning.test.ts +2 -1
  449. package/src/test/perf/perf.test.ts +2 -1
  450. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  451. package/src/test/resizing.test.ts +39 -38
  452. package/src/test/select.test.tsx +4 -3
  453. package/src/test/selection-omnibus.test.ts +11 -10
  454. package/src/test/shapeutils.test.ts +4 -3
  455. package/src/test/translating.test.ts +9 -8
  456. package/tldraw.css +732 -583
  457. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  458. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  459. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  460. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  461. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  462. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  463. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  464. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +0 -115
  465. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  466. 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;
@@ -2290,8 +2295,8 @@ it from receiving any pointer events or affecting the cursor. */
2290
2295
  height: 44px;
2291
2296
  display: flex;
2292
2297
  align-items: center;
2293
- gap: var(--space-4);
2294
- color: var(--color-text);
2298
+ gap: var(--tl-space-4);
2299
+ color: var(--tl-color-text);
2295
2300
  }
2296
2301
 
2297
2302
  .tlui-input__wrapper > .tlui-icon {
@@ -2323,7 +2328,7 @@ it from receiving any pointer events or affecting the cursor. */
2323
2328
  grid-auto-columns: minmax(1em, auto);
2324
2329
  align-self: bottom;
2325
2330
  color: currentColor;
2326
- margin-left: var(--space-4);
2331
+ margin-left: var(--tl-space-4);
2327
2332
  }
2328
2333
 
2329
2334
  .tlui-kbd > span {
@@ -2340,13 +2345,13 @@ it from receiving any pointer events or affecting the cursor. */
2340
2345
  }
2341
2346
 
2342
2347
  .tlui-kbd:not(:last-child) {
2343
- margin-right: var(--space-2);
2348
+ margin-right: var(--tl-space-2);
2344
2349
  }
2345
2350
 
2346
2351
  /* Focus Mode Button */
2347
2352
 
2348
2353
  .tlui-focus-button {
2349
- z-index: var(--layer-panels);
2354
+ z-index: var(--tl-layer-panels);
2350
2355
  pointer-events: all;
2351
2356
  }
2352
2357
 
@@ -2357,16 +2362,16 @@ it from receiving any pointer events or affecting the cursor. */
2357
2362
  }
2358
2363
 
2359
2364
  .tlui-menu {
2360
- z-index: var(--layer-menus);
2365
+ z-index: var(--tl-layer-menus);
2361
2366
  height: fit-content;
2362
2367
  width: fit-content;
2363
- border-radius: var(--radius-3);
2368
+ border-radius: var(--tl-radius-3);
2364
2369
  pointer-events: all;
2365
2370
  touch-action: auto;
2366
2371
  overflow-y: auto;
2367
2372
  overscroll-behavior: none;
2368
- background-color: var(--color-panel);
2369
- box-shadow: var(--shadow-3);
2373
+ background-color: var(--tl-color-panel);
2374
+ box-shadow: var(--tl-shadow-3);
2370
2375
  }
2371
2376
 
2372
2377
  .tlui-menu::-webkit-scrollbar {
@@ -2384,7 +2389,7 @@ it from receiving any pointer events or affecting the cursor. */
2384
2389
  }
2385
2390
 
2386
2391
  .tlui-menu__group {
2387
- border-bottom: 1px solid var(--color-divider);
2392
+ border-bottom: 1px solid var(--tl-color-divider);
2388
2393
  }
2389
2394
  .tlui-menu__group:nth-last-of-type(1) {
2390
2395
  border-bottom: none;
@@ -2394,23 +2399,23 @@ it from receiving any pointer events or affecting the cursor. */
2394
2399
 
2395
2400
  .tlui-menu__submenu__trigger[data-state='open']::after {
2396
2401
  opacity: 1;
2397
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2402
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2398
2403
  }
2399
2404
 
2400
2405
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
2401
2406
  opacity: 1;
2402
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2407
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2403
2408
  }
2404
2409
 
2405
2410
  @media (hover: hover) {
2406
2411
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
2407
2412
  opacity: 1;
2408
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2413
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2409
2414
  }
2410
2415
 
2411
2416
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
2412
2417
  opacity: 1;
2413
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2418
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2414
2419
  }
2415
2420
  }
2416
2421
 
@@ -2435,7 +2440,7 @@ it from receiving any pointer events or affecting the cursor. */
2435
2440
  .tlui-menu-click-capture {
2436
2441
  position: fixed;
2437
2442
  inset: 0;
2438
- z-index: var(--layer-menu-click-capture);
2443
+ z-index: var(--tl-layer-menu-click-capture);
2439
2444
  }
2440
2445
 
2441
2446
  /* --------------------- Popover -------------------- */
@@ -2451,10 +2456,10 @@ it from receiving any pointer events or affecting the cursor. */
2451
2456
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
2452
2457
  margin: 0px;
2453
2458
  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);
2459
+ border-radius: var(--tl-radius-3);
2460
+ background-color: var(--tl-color-panel);
2461
+ box-shadow: var(--tl-shadow-3);
2462
+ z-index: var(--tl-layer-menus);
2458
2463
  overflow: hidden;
2459
2464
  overflow-y: auto;
2460
2465
  touch-action: auto;
@@ -2467,22 +2472,22 @@ it from receiving any pointer events or affecting the cursor. */
2467
2472
 
2468
2473
  .tlui-menu-zone {
2469
2474
  position: relative;
2470
- z-index: var(--layer-panels);
2475
+ z-index: var(--tl-layer-panels);
2471
2476
  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);
2477
+ border-right: 2px solid var(--tl-color-background);
2478
+ border-bottom: 2px solid var(--tl-color-background);
2479
+ border-bottom-right-radius: var(--tl-radius-4);
2480
+ background-color: var(--tl-color-low);
2476
2481
  }
2477
2482
 
2478
2483
  .tlui-menu-zone *[data-state='open']::after {
2479
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2484
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2480
2485
  opacity: 1;
2481
2486
  }
2482
2487
 
2483
2488
  @media (hover: hover) {
2484
2489
  .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%);
2490
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2486
2491
  opacity: 1;
2487
2492
  }
2488
2493
  }
@@ -2508,8 +2513,8 @@ it from receiving any pointer events or affecting the cursor. */
2508
2513
  align-items: center;
2509
2514
  width: 100%;
2510
2515
  height: 40px;
2511
- padding-left: var(--space-4);
2512
- border-bottom: 1px solid var(--color-divider);
2516
+ padding-left: var(--tl-space-4);
2517
+ border-bottom: 1px solid var(--tl-color-divider);
2513
2518
  }
2514
2519
 
2515
2520
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -2517,7 +2522,7 @@ it from receiving any pointer events or affecting the cursor. */
2517
2522
  }
2518
2523
 
2519
2524
  .tlui-page-menu__header__title {
2520
- color: var(--color-text);
2525
+ color: var(--tl-color-text);
2521
2526
  font-size: 12px;
2522
2527
  flex-grow: 2;
2523
2528
  }
@@ -2602,7 +2607,7 @@ it from receiving any pointer events or affecting the cursor. */
2602
2607
  display: inline-flex;
2603
2608
  align-items: center;
2604
2609
  justify-content: center;
2605
- color: var(--color-text);
2610
+ color: var(--tl-color-text);
2606
2611
  }
2607
2612
 
2608
2613
  .tlui-page_menu__item__sortable {
@@ -2615,7 +2620,7 @@ it from receiving any pointer events or affecting the cursor. */
2615
2620
  flex-direction: row;
2616
2621
  align-items: center;
2617
2622
  overflow: hidden;
2618
- z-index: var(--layer-above);
2623
+ z-index: var(--tl-layer-above);
2619
2624
  }
2620
2625
 
2621
2626
  .tlui-page_menu__item__sortable__title {
@@ -2627,7 +2632,7 @@ it from receiving any pointer events or affecting the cursor. */
2627
2632
  }
2628
2633
 
2629
2634
  .tlui-page_menu__item__sortable:focus-visible {
2630
- z-index: var(--layer-focused-input);
2635
+ z-index: var(--tl-layer-focused-input);
2631
2636
  }
2632
2637
 
2633
2638
  .tlui-page_menu__item__sortable__handle {
@@ -2636,7 +2641,7 @@ it from receiving any pointer events or affecting the cursor. */
2636
2641
  min-width: 0px;
2637
2642
  height: 40px;
2638
2643
  cursor: grab;
2639
- color: var(--color-text-3);
2644
+ color: var(--tl-color-text-3);
2640
2645
  flex-shrink: 0;
2641
2646
  margin-right: -9px;
2642
2647
  }
@@ -2678,13 +2683,13 @@ it from receiving any pointer events or affecting the cursor. */
2678
2683
  }
2679
2684
 
2680
2685
  .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%);
2686
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2682
2687
  opacity: 1;
2683
2688
  }
2684
2689
 
2685
2690
  @media (hover: hover) {
2686
2691
  .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%);
2692
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2688
2693
  opacity: 1;
2689
2694
  }
2690
2695
  }
@@ -2720,7 +2725,7 @@ it from receiving any pointer events or affecting the cursor. */
2720
2725
  top: 48px;
2721
2726
  left: -9999px;
2722
2727
  padding: 8px 16px;
2723
- z-index: var(--layer-toasts);
2728
+ z-index: var(--tl-layer-toasts);
2724
2729
  }
2725
2730
 
2726
2731
  .tl-skip-to-main-content:focus {
@@ -2732,11 +2737,11 @@ it from receiving any pointer events or affecting the cursor. */
2732
2737
  .tlui-offline-indicator {
2733
2738
  display: flex;
2734
2739
  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);
2740
+ gap: var(--tl-space-3);
2741
+ color: var(--tl-color-text);
2742
+ background-color: var(--tl-color-low);
2743
+ border: 3px solid var(--tl-color-background);
2744
+ padding: 0px var(--tl-space-5);
2740
2745
  height: 42px;
2741
2746
  align-items: center;
2742
2747
  justify-content: center;
@@ -2751,10 +2756,10 @@ it from receiving any pointer events or affecting the cursor. */
2751
2756
  /* ------------------- Style panel ------------------ */
2752
2757
 
2753
2758
  .tlui-style-panel__wrapper {
2754
- box-shadow: var(--shadow-2);
2755
- border-radius: var(--radius-3);
2759
+ box-shadow: var(--tl-shadow-2);
2760
+ border-radius: var(--tl-radius-3);
2756
2761
  pointer-events: all;
2757
- background-color: var(--color-panel);
2762
+ background-color: var(--tl-color-panel);
2758
2763
  height: fit-content;
2759
2764
  max-height: 100%;
2760
2765
  margin: 8px;
@@ -2763,7 +2768,7 @@ it from receiving any pointer events or affecting the cursor. */
2763
2768
  overscroll-behavior: none;
2764
2769
  overflow-y: auto;
2765
2770
  overflow-x: hidden;
2766
- color: var(--color-text);
2771
+ color: var(--tl-color-text);
2767
2772
  }
2768
2773
  /* if the style panel is the only child (ie no share menu), increase the margin */
2769
2774
  .tlui-style-panel__wrapper:only-child {
@@ -2772,12 +2777,18 @@ it from receiving any pointer events or affecting the cursor. */
2772
2777
 
2773
2778
  .tlui-style-panel {
2774
2779
  position: relative;
2775
- z-index: var(--layer-panels);
2780
+ z-index: var(--tl-layer-panels);
2776
2781
  pointer-events: all;
2777
2782
  width: 148px;
2778
2783
  max-width: 148px;
2779
2784
  }
2780
2785
 
2786
+ .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
2787
+ border-radius: 10px;
2788
+ outline: 2px solid var(--tl-color-text);
2789
+ outline-offset: -5px;
2790
+ }
2791
+
2781
2792
  .tlui-style-panel::-webkit-scrollbar {
2782
2793
  display: none;
2783
2794
  }
@@ -2792,8 +2803,22 @@ it from receiving any pointer events or affecting the cursor. */
2792
2803
  flex-direction: column;
2793
2804
  }
2794
2805
 
2795
- .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
2796
- border-bottom: 1px solid var(--color-divider);
2806
+ /*
2807
+ add a border to the bottom of all but the last section. we have to handle empty sections too, which
2808
+ are hidden and shouldn't be counted
2809
+ */
2810
+ .tlui-style-panel__section:not(:nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))) {
2811
+ border-bottom: 1px solid var(--tl-color-divider);
2812
+ }
2813
+ /*
2814
+ if a section ends with a slider and we're adding a border, we need some extra space for visual
2815
+ balance. we need to handle empty sections as above. is this the most complex css selector in all of
2816
+ tldraw? probably.
2817
+ */
2818
+ .tlui-style-panel__section:has(.tlui-slider__container:last-child):not(
2819
+ :nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))
2820
+ ) {
2821
+ margin-bottom: 7px;
2797
2822
  }
2798
2823
 
2799
2824
  .tlui-style-panel__section:empty {
@@ -2802,23 +2827,19 @@ it from receiving any pointer events or affecting the cursor. */
2802
2827
 
2803
2828
  .tlui-style-panel__section__common:not(:only-child) {
2804
2829
  margin-bottom: 7px;
2805
- border-bottom: 1px solid var(--color-divider);
2830
+ border-bottom: 1px solid var(--tl-color-divider);
2806
2831
  }
2807
2832
 
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;
2833
+ .tlui-style-panel__dropdown-picker:only-child {
2834
+ flex: 1;
2814
2835
  }
2815
2836
 
2816
2837
  .tlui-style-panel__double-select-picker {
2817
2838
  display: flex;
2818
2839
  grid-template-columns: 1fr auto;
2819
2840
  align-items: center;
2820
- padding-left: var(--space-4);
2821
- color: var(--color-text-1);
2841
+ padding-left: var(--tl-space-4);
2842
+ color: var(--tl-color-text-1);
2822
2843
  font-size: 12px;
2823
2844
  }
2824
2845
 
@@ -2832,25 +2853,48 @@ it from receiving any pointer events or affecting the cursor. */
2832
2853
 
2833
2854
  .tlui-style-panel .tlui-button[data-state='open']::after {
2834
2855
  opacity: 1;
2835
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2856
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2836
2857
  }
2837
2858
 
2838
2859
  @media (hover: hover) {
2860
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
2861
+ background: none;
2862
+ }
2839
2863
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
2840
2864
  opacity: 1;
2841
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2865
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2842
2866
  }
2843
2867
  }
2844
2868
 
2869
+ /* Accessibility subheadings */
2870
+
2871
+ .tlui-style-panel__section .tlui-style-panel__subheading,
2872
+ .tlui-style-panel__section__common .tlui-style-panel__subheading,
2873
+ .tlui-style-panel__subheading + .tlui-slider__container {
2874
+ margin: 0;
2875
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
2876
+ font-size: 12px;
2877
+ font-weight: inherit;
2878
+ line-height: inherit;
2879
+ }
2880
+
2881
+ .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
2882
+ padding-top: var(--tl-space-3);
2883
+ }
2884
+
2885
+ .tlui-style-panel__subheading + .tlui-slider__container {
2886
+ padding-top: 0px;
2887
+ }
2888
+
2845
2889
  /* --------------------- Bottom --------------------- */
2846
2890
 
2847
2891
  .tlui-layout__bottom {
2848
2892
  grid-row: 2;
2893
+ width: 100%;
2849
2894
  }
2850
2895
 
2851
2896
  .tlui-layout__bottom__main {
2852
2897
  width: 100%;
2853
- position: relative;
2854
2898
  display: flex;
2855
2899
  align-items: flex-end;
2856
2900
  justify-content: center;
@@ -2862,11 +2906,10 @@ it from receiving any pointer events or affecting the cursor. */
2862
2906
  display: flex;
2863
2907
  width: min-content;
2864
2908
  flex-direction: column;
2865
- z-index: var(--layer-panels);
2909
+ z-index: var(--tl-layer-panels);
2866
2910
  pointer-events: all;
2867
2911
  position: absolute;
2868
2912
  left: 0px;
2869
- bottom: 0px;
2870
2913
  }
2871
2914
 
2872
2915
  .tlui-navigation-panel::before {
@@ -2876,10 +2919,10 @@ it from receiving any pointer events or affecting the cursor. */
2876
2919
  z-index: -1;
2877
2920
  inset: -2px -2px 0px 0px;
2878
2921
  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);
2922
+ border-top: 2px solid var(--tl-color-background);
2923
+ border-right: 2px solid var(--tl-color-background);
2924
+ border-top-right-radius: var(--tl-radius-4);
2925
+ background-color: var(--tl-color-low);
2883
2926
  }
2884
2927
 
2885
2928
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -2893,7 +2936,7 @@ it from receiving any pointer events or affecting the cursor. */
2893
2936
  height: 96px;
2894
2937
  min-height: 96px;
2895
2938
  overflow: hidden;
2896
- padding: var(--space-3);
2939
+ padding: var(--tl-space-3);
2897
2940
  padding-top: 0px;
2898
2941
  }
2899
2942
 
@@ -2906,114 +2949,220 @@ it from receiving any pointer events or affecting the cursor. */
2906
2949
  /* --------------------- Toolbar -------------------- */
2907
2950
 
2908
2951
  /* Wide container */
2909
- .tlui-toolbar {
2952
+ .tlui-main-toolbar {
2910
2953
  grid-column: 1 / span 3;
2911
2954
  grid-row: 1;
2912
2955
  display: flex;
2913
2956
  align-items: center;
2914
2957
  justify-content: center;
2915
2958
  flex-grow: 2;
2916
- padding-bottom: calc(var(--space-3) + var(--sab));
2959
+ }
2960
+
2961
+ .tlui-main-toolbar--horizontal {
2962
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
2963
+ max-width: 100%;
2964
+ }
2965
+
2966
+ .tlui-main-toolbar--vertical {
2967
+ position: absolute;
2968
+ left: 0;
2969
+ top: 90px; /* height of page menu + 'back to content' button */
2970
+ bottom: 140px; /* height of expanded mini-map */
2971
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
2972
+ }
2973
+
2974
+ [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
2975
+ bottom: 90px; /* collapsed mini-map, but same as top to keep things looking even */
2917
2976
  }
2918
2977
 
2919
2978
  /* Centered Content */
2920
- .tlui-toolbar__inner {
2979
+ .tlui-main-toolbar__inner {
2921
2980
  position: relative;
2922
2981
  width: fit-content;
2923
2982
  display: flex;
2924
- gap: var(--space-3);
2925
- align-items: flex-end;
2983
+ gap: var(--tl-space-3);
2984
+ align-items: flex-start;
2926
2985
  }
2927
2986
 
2928
- .tlui-toolbar__left {
2987
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__inner {
2988
+ flex-direction: column;
2989
+ }
2990
+
2991
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__left {
2929
2992
  width: fit-content;
2930
2993
  }
2994
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__left {
2995
+ display: flex;
2996
+ height: fit-content;
2997
+ }
2931
2998
 
2932
2999
  /* Row of controls + lock button */
2933
- .tlui-toolbar__extras {
3000
+ .tlui-main-toolbar__extras {
2934
3001
  position: relative;
2935
- z-index: var(--layer-above);
2936
- width: 100%;
3002
+ z-index: var(--tl-layer-above);
2937
3003
  pointer-events: none;
2938
- top: 6px;
2939
- height: 48px;
3004
+ align-self: stretch;
2940
3005
  }
2941
3006
 
2942
- .tlui-toolbar__extras:empty {
3007
+ .tlui-main-toolbar__extras:empty {
2943
3008
  display: none;
2944
3009
  }
2945
3010
 
2946
- .tlui-toolbar__extras__controls {
2947
- display: flex;
3011
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras {
3012
+ height: 48px;
3013
+ top: 6px;
3014
+ }
3015
+
3016
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras {
3017
+ width: 48px;
3018
+ order: 1;
3019
+ }
3020
+
3021
+ .tlui-main-toolbar__extras__controls {
2948
3022
  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);
3023
+ z-index: var(--tl-layer-above);
3024
+ background-color: var(--tl-color-low);
3025
+ border: 2px solid var(--tl-color-background);
3026
+ pointer-events: all;
3027
+ }
3028
+
3029
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
3030
+ border-top-left-radius: var(--tl-radius-4);
3031
+ border-top-right-radius: var(--tl-radius-4);
2955
3032
  margin-left: 8px;
2956
3033
  margin-right: 0px;
2957
- pointer-events: all;
2958
3034
  width: fit-content;
2959
3035
  }
2960
3036
 
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);
3037
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
3038
+ border-top-right-radius: var(--tl-radius-4);
3039
+ border-bottom-right-radius: var(--tl-radius-4);
3040
+ margin-top: 8px;
3041
+ margin-left: -2px;
3042
+ margin-bottom: 0px;
3043
+ width: fit-content;
3044
+ }
3045
+
3046
+ .tlui-main-toolbar__tools {
3047
+ border-radius: var(--tl-radius-4);
3048
+ z-index: var(--tl-layer-panels);
2967
3049
  pointer-events: all;
2968
3050
  position: relative;
2969
- background: var(--color-panel);
2970
- box-shadow: var(--shadow-2);
3051
+ background: var(--tl-color-panel);
3052
+ box-shadow: var(--tl-shadow-2);
2971
3053
  }
2972
- .tlui-toolbar__tools__list {
2973
- display: flex;
2974
- flex-direction: row;
2975
- align-items: center;
3054
+
3055
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
3056
+ align-self: flex-end;
3057
+ }
3058
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__mobile-style-panel {
3059
+ align-self: flex-start;
2976
3060
  }
2977
3061
 
2978
- .tlui-toolbar__overflow {
3062
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
2979
3063
  width: 40px;
3064
+ margin-left: 2px;
3065
+ }
3066
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__overflow {
3067
+ height: 40px;
3068
+ margin-top: 2px;
2980
3069
  }
2981
3070
 
2982
- .tlui-layout__mobile .tlui-toolbar__overflow {
3071
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
2983
3072
  width: 32px;
2984
3073
  padding: 0px;
2985
3074
  }
2986
3075
 
2987
- .tlui-toolbar *[data-state='open']::after {
2988
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
3076
+ .tlui-main-toolbar--horizontal *[data-state='open']::after {
3077
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3078
+ opacity: 1;
3079
+ }
3080
+ .tlui-main-toolbar--vertical *[data-state='open']::after {
3081
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2989
3082
  opacity: 1;
2990
3083
  }
2991
3084
 
3085
+ .tlui-main-toolbar__overflow-content {
3086
+ touch-action: none;
3087
+ }
3088
+
3089
+ .tlui-main-toolbar__tools [data-toolbar-visible='false'],
3090
+ .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
3091
+ display: none;
3092
+ }
3093
+
3094
+ .tlui-main-toolbar__group:empty {
3095
+ display: none;
3096
+ }
3097
+ .tlui-row.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3098
+ border-right: 1px solid var(--color-divider);
3099
+ margin-right: 2px;
3100
+ }
3101
+ .tlui-column.tlui-main-toolbar__group:not(
3102
+ :nth-last-child(-n + 1 of [data-toolbar-visible='true'])
3103
+ ) {
3104
+ border-bottom: 1px solid var(--color-divider);
3105
+ margin-bottom: 2px;
3106
+ }
3107
+ .tlui-grid.tlui-main-toolbar__group {
3108
+ grid-column: 1 / span 4;
3109
+ }
3110
+ .tlui-grid.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3111
+ border-bottom: 1px solid var(--color-divider);
3112
+ margin-bottom: 2px;
3113
+ }
3114
+
2992
3115
  @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%);
3116
+ .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
3117
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3118
+ opacity: 1;
3119
+ }
3120
+ .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
3121
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2995
3122
  opacity: 1;
2996
3123
  }
2997
3124
  }
2998
3125
 
2999
- .tlui-layout__mobile .tlui-toolbar {
3000
- transition: transform 0.15s ease-out 0.05s;
3126
+ /* ------------------- Tooltip -------------------- */
3127
+
3128
+ .tlui-tooltip {
3129
+ font-size: 12px;
3130
+ padding: 2px 8px;
3131
+ border-radius: 4px;
3132
+ background-color: var(--tl-color-tooltip);
3133
+ box-shadow: none;
3134
+ color: var(--tl-color-text-shadow);
3135
+ max-width: 400px;
3136
+ width: fit-content;
3137
+ text-align: center;
3138
+ will-change: transform, opacity;
3139
+ z-index: 2;
3140
+ }
3141
+
3142
+ .tlui-tooltip__arrow {
3143
+ fill: var(--tl-color-tooltip);
3144
+ will-change: opacity;
3145
+ }
3146
+
3147
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
3148
+ z-index: var(--tl-layer-toasts) !important;
3149
+ pointer-events: none;
3001
3150
  }
3002
3151
 
3003
3152
  /* ------------------- Debug panel ------------------ */
3004
3153
 
3005
3154
  .tlui-debug-panel {
3006
- background-color: var(--color-low);
3155
+ background-color: var(--tl-color-low);
3007
3156
  width: 100%;
3008
3157
  display: grid;
3009
3158
  align-items: center;
3010
3159
  grid-template-columns: 1fr auto auto auto;
3011
3160
  justify-content: space-between;
3012
- padding-left: var(--space-4);
3013
- border-top: 1px solid var(--color-background);
3161
+ padding-left: var(--tl-space-4);
3162
+ border-top: 1px solid var(--tl-color-background);
3014
3163
  font-size: 12px;
3015
- color: var(--color-text-1);
3016
- z-index: var(--layer-panels);
3164
+ color: var(--tl-color-text-1);
3165
+ z-index: var(--tl-layer-panels);
3017
3166
  pointer-events: all;
3018
3167
  }
3019
3168
 
@@ -3029,7 +3178,7 @@ it from receiving any pointer events or affecting the cursor. */
3029
3178
 
3030
3179
  .tlui-debug-panel__fps__slow {
3031
3180
  font-weight: bold;
3032
- color: var(--color-danger);
3181
+ color: var(--tl-color-danger);
3033
3182
  }
3034
3183
 
3035
3184
  .tlui-a11y-audit {
@@ -3039,7 +3188,7 @@ it from receiving any pointer events or affecting the cursor. */
3039
3188
  .tlui-a11y-audit th,
3040
3189
  .tlui-a11y-audit td {
3041
3190
  padding: 8px;
3042
- border: 1px solid var(--color-low-border);
3191
+ border: 1px solid var(--tl-color-low-border);
3043
3192
  }
3044
3193
 
3045
3194
  /* --------------------- Toasts --------------------- */
@@ -3052,10 +3201,10 @@ it from receiving any pointer events or affecting the cursor. */
3052
3201
  align-items: flex-end;
3053
3202
  justify-content: flex-end;
3054
3203
  flex-direction: column;
3055
- gap: var(--space-3);
3204
+ gap: var(--tl-space-3);
3056
3205
  pointer-events: none;
3057
- padding: 0px var(--space-3) 64px 0px;
3058
- z-index: var(--layer-toasts);
3206
+ padding: 0px var(--tl-space-3) 64px 0px;
3207
+ z-index: var(--tl-layer-toasts);
3059
3208
  }
3060
3209
 
3061
3210
  .tlui-toast__viewport > * {
@@ -3064,34 +3213,34 @@ it from receiving any pointer events or affecting the cursor. */
3064
3213
 
3065
3214
  .tlui-toast__icon {
3066
3215
  padding-top: 11px;
3067
- padding-left: var(--space-4);
3068
- color: var(--color-text-1);
3216
+ padding-left: var(--tl-space-4);
3217
+ color: var(--tl-color-text-1);
3069
3218
  }
3070
3219
 
3071
3220
  .tlui-toast__container {
3072
3221
  min-width: 200px;
3073
3222
  display: flex;
3074
3223
  flex-direction: row;
3075
- background-color: var(--color-panel);
3076
- box-shadow: var(--shadow-2);
3077
- border-radius: var(--radius-3);
3224
+ background-color: var(--tl-color-panel);
3225
+ box-shadow: var(--tl-shadow-2);
3226
+ border-radius: var(--tl-radius-3);
3078
3227
  font-size: 12px;
3079
3228
  }
3080
3229
 
3081
3230
  .tlui-toast__container[data-severity='success'] .tlui-icon {
3082
- color: var(--color-success);
3231
+ color: var(--tl-color-success);
3083
3232
  }
3084
3233
 
3085
3234
  .tlui-toast__container[data-severity='info'] .tlui-icon {
3086
- color: var(--color-info);
3235
+ color: var(--tl-color-info);
3087
3236
  }
3088
3237
 
3089
3238
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
3090
- color: var(--color-warning);
3239
+ color: var(--tl-color-warning);
3091
3240
  }
3092
3241
 
3093
3242
  .tlui-toast__container[data-severity='error'] .tlui-icon {
3094
- color: var(--color-danger);
3243
+ color: var(--tl-color-danger);
3095
3244
  }
3096
3245
 
3097
3246
  .tlui-toast__main {
@@ -3100,27 +3249,27 @@ it from receiving any pointer events or affecting the cursor. */
3100
3249
  }
3101
3250
 
3102
3251
  .tlui-toast__content {
3103
- padding: var(--space-4);
3252
+ padding: var(--tl-space-4);
3104
3253
  display: flex;
3105
3254
  line-height: 1.4;
3106
3255
  flex-direction: column;
3107
- gap: var(--space-3);
3256
+ gap: var(--tl-space-3);
3108
3257
  }
3109
3258
 
3110
3259
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
3111
- padding-bottom: var(--space-2);
3260
+ padding-bottom: var(--tl-space-2);
3112
3261
  }
3113
3262
 
3114
3263
  .tlui-toast__title {
3115
3264
  font-weight: bold;
3116
- color: var(--color-text-1);
3265
+ color: var(--tl-color-text-1);
3117
3266
  /* this makes the default toast look better */
3118
3267
  line-height: 16px;
3119
3268
  }
3120
3269
 
3121
3270
  .tlui-toast__description {
3122
- color: var(--color-text-1);
3123
- padding: var(--space-3);
3271
+ color: var(--tl-color-text-1);
3272
+ padding: var(--tl-space-3);
3124
3273
  margin: 0px;
3125
3274
  padding: 0px;
3126
3275
  }
@@ -3172,14 +3321,14 @@ it from receiving any pointer events or affecting the cursor. */
3172
3321
  left: 0px;
3173
3322
  width: 100%;
3174
3323
  height: 100%;
3175
- z-index: var(--layer-canvas-overlays);
3176
- background-color: var(--color-overlay);
3324
+ z-index: var(--tl-layer-canvas-overlays);
3325
+ background-color: var(--tl-color-overlay);
3177
3326
  pointer-events: all;
3178
3327
  animation: tl-fade-in 0.12s ease-out;
3179
3328
  display: grid;
3180
3329
  place-items: center;
3181
3330
  overflow-y: auto;
3182
- padding: 0px var(--space-3);
3331
+ padding: 0px var(--tl-space-3);
3183
3332
  }
3184
3333
 
3185
3334
  .tlui-dialog__content {
@@ -3187,9 +3336,9 @@ it from receiving any pointer events or affecting the cursor. */
3187
3336
  flex-direction: column;
3188
3337
  position: relative;
3189
3338
  cursor: default;
3190
- background-color: var(--color-panel);
3191
- box-shadow: var(--shadow-3);
3192
- border-radius: var(--radius-3);
3339
+ background-color: var(--tl-color-panel);
3340
+ box-shadow: var(--tl-shadow-3);
3341
+ border-radius: var(--tl-radius-3);
3193
3342
  font-size: 12px;
3194
3343
  overflow: hidden;
3195
3344
  min-width: 300px;
@@ -3202,9 +3351,9 @@ it from receiving any pointer events or affecting the cursor. */
3202
3351
  display: flex;
3203
3352
  align-items: center;
3204
3353
  flex: 0;
3205
- z-index: var(--layer-header-footer);
3206
- padding-left: var(--space-4);
3207
- color: var(--color-text);
3354
+ z-index: var(--tl-layer-header-footer);
3355
+ padding-left: var(--tl-space-4);
3356
+ color: var(--tl-color-text);
3208
3357
  height: 40px;
3209
3358
  }
3210
3359
 
@@ -3213,7 +3362,7 @@ it from receiving any pointer events or affecting the cursor. */
3213
3362
  font-weight: inherit;
3214
3363
  font-size: 12px;
3215
3364
  margin: 0px;
3216
- color: var(--color-text-1);
3365
+ color: var(--tl-color-text-1);
3217
3366
  }
3218
3367
 
3219
3368
  .tlui-dialog__header__close {
@@ -3221,16 +3370,16 @@ it from receiving any pointer events or affecting the cursor. */
3221
3370
  }
3222
3371
 
3223
3372
  .tlui-dialog__body {
3224
- padding: var(--space-4) var(--space-4);
3373
+ padding: var(--tl-space-4) var(--tl-space-4);
3225
3374
  flex: 0 1;
3226
3375
  overflow-y: auto;
3227
3376
  overflow-x: hidden;
3228
- color: var(--color-text-1);
3377
+ color: var(--tl-color-text-1);
3229
3378
  user-select: all;
3230
3379
  -webkit-user-select: text;
3231
3380
  }
3232
3381
  .tlui-dialog__body a {
3233
- color: var(--color-selected);
3382
+ color: var(--tl-color-selected);
3234
3383
  }
3235
3384
 
3236
3385
  .tlui-dialog__body ul,
@@ -3238,13 +3387,13 @@ it from receiving any pointer events or affecting the cursor. */
3238
3387
  padding-left: 16px;
3239
3388
  display: flex;
3240
3389
  flex-direction: column;
3241
- gap: var(--space-2);
3390
+ gap: var(--tl-space-2);
3242
3391
  }
3243
3392
 
3244
3393
  .tlui-dialog__footer {
3245
3394
  position: relative;
3246
3395
  min-height: 12px;
3247
- z-index: var(--layer-header-footer);
3396
+ z-index: var(--tl-layer-header-footer);
3248
3397
  }
3249
3398
 
3250
3399
  .tlui-dialog__footer__actions {
@@ -3264,15 +3413,15 @@ it from receiving any pointer events or affecting the cursor. */
3264
3413
  .tlui-edit-link-dialog {
3265
3414
  display: flex;
3266
3415
  flex-direction: column;
3267
- gap: var(--space-4);
3268
- color: var(--color-text);
3416
+ gap: var(--tl-space-4);
3417
+ color: var(--tl-color-text);
3269
3418
  }
3270
3419
 
3271
3420
  .tlui-edit-link-dialog__input {
3272
- background-color: var(--color-muted-2);
3421
+ background-color: var(--tl-color-muted-2);
3273
3422
  flex-grow: 2;
3274
- border-radius: var(--radius-2);
3275
- padding: 0px var(--space-4);
3423
+ border-radius: var(--tl-radius-2);
3424
+ padding: 0px var(--tl-space-4);
3276
3425
  }
3277
3426
 
3278
3427
  /* Embed Dialog */
@@ -3280,15 +3429,15 @@ it from receiving any pointer events or affecting the cursor. */
3280
3429
  .tlui-embed__spacer {
3281
3430
  flex-grow: 2;
3282
3431
  min-height: 0px;
3283
- margin-left: calc(-1 * var(--space-4));
3284
- margin-top: calc(-1 * var(--space-4));
3432
+ margin-left: calc(-1 * var(--tl-space-4));
3433
+ margin-top: calc(-1 * var(--tl-space-4));
3285
3434
  pointer-events: none;
3286
3435
  }
3287
3436
 
3288
3437
  .tlui-embed-dialog__list {
3289
3438
  display: flex;
3290
3439
  flex-direction: column;
3291
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
3440
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
3292
3441
  }
3293
3442
 
3294
3443
  .tlui-embed-dialog__item__image {
@@ -3300,49 +3449,49 @@ it from receiving any pointer events or affecting the cursor. */
3300
3449
  background-size: contain;
3301
3450
  background-repeat: no-repeat;
3302
3451
  background-position: center center;
3303
- background-color: var(--color-selected-contrast);
3304
- border-radius: var(--radius-1);
3452
+ background-color: var(--tl-color-selected-contrast);
3453
+ border-radius: var(--tl-radius-1);
3305
3454
  }
3306
3455
 
3307
3456
  .tlui-embed-dialog__enter {
3308
3457
  display: flex;
3309
3458
  flex-direction: column;
3310
- gap: var(--space-4);
3311
- color: var(--color-text-1);
3459
+ gap: var(--tl-space-4);
3460
+ color: var(--tl-color-text-1);
3312
3461
  }
3313
3462
 
3314
3463
  .tlui-embed-dialog__input {
3315
- background-color: var(--color-muted-2);
3464
+ background-color: var(--tl-color-muted-2);
3316
3465
  flex-grow: 2;
3317
- border-radius: var(--radius-2);
3318
- padding: 0px var(--space-4);
3466
+ border-radius: var(--tl-radius-2);
3467
+ padding: 0px var(--tl-space-4);
3319
3468
  }
3320
3469
 
3321
3470
  .tlui-embed-dialog__warning {
3322
- color: var(--color-danger);
3471
+ color: var(--tl-color-danger);
3323
3472
  text-shadow: none;
3324
3473
  }
3325
3474
 
3326
3475
  .tlui-embed-dialog__instruction__link {
3327
3476
  display: flex;
3328
- gap: var(--space-1);
3329
- margin-top: var(--space-4);
3477
+ gap: var(--tl-space-1);
3478
+ margin-top: var(--tl-space-4);
3330
3479
  }
3331
3480
 
3332
3481
  .tlui-embed-dialog__enter a {
3333
- color: var(--color-text-1);
3482
+ color: var(--tl-color-text-1);
3334
3483
  }
3335
3484
 
3336
3485
  /* --------------- Keyboard shortcuts --------------- */
3337
3486
 
3338
3487
  .tlui-shortcuts-dialog__header {
3339
- border-bottom: 1px solid var(--color-divider);
3488
+ border-bottom: 1px solid var(--tl-color-divider);
3340
3489
  }
3341
3490
 
3342
3491
  .tlui-shortcuts-dialog__body {
3343
3492
  position: relative;
3344
3493
  columns: 3;
3345
- column-gap: var(--space-9);
3494
+ column-gap: var(--tl-space-9);
3346
3495
  pointer-events: all;
3347
3496
  touch-action: auto;
3348
3497
 
@@ -3360,14 +3509,14 @@ it from receiving any pointer events or affecting the cursor. */
3360
3509
 
3361
3510
  .tlui-shortcuts-dialog__group {
3362
3511
  break-inside: avoid-column;
3363
- padding-bottom: var(--space-6);
3512
+ padding-bottom: var(--tl-space-6);
3364
3513
  }
3365
3514
 
3366
3515
  .tlui-shortcuts-dialog__group__title {
3367
3516
  font-size: inherit;
3368
3517
  font-weight: inherit;
3369
3518
  margin: 0px;
3370
- color: var(--color-text-3);
3519
+ color: var(--tl-color-text-3);
3371
3520
  height: 32px;
3372
3521
  display: flex;
3373
3522
  align-items: center;
@@ -3376,12 +3525,12 @@ it from receiving any pointer events or affecting the cursor. */
3376
3525
  .tlui-shortcuts-dialog__group__content {
3377
3526
  display: flex;
3378
3527
  flex-direction: column;
3379
- color: var(--color-text-1);
3528
+ color: var(--tl-color-text-1);
3380
3529
  }
3381
3530
 
3382
3531
  .tlui-shortcuts-dialog__key-pair {
3383
3532
  display: flex;
3384
- gap: var(--space-4);
3533
+ gap: var(--tl-space-4);
3385
3534
  align-items: center;
3386
3535
  justify-content: space-between;
3387
3536
  height: 32px;
@@ -3408,12 +3557,12 @@ it from receiving any pointer events or affecting the cursor. */
3408
3557
  height: 24px;
3409
3558
  background: linear-gradient(
3410
3559
  to bottom,
3411
- var(--color-panel-transparent) 0%,
3412
- var(--color-panel) 90%,
3413
- var(--color-panel) 100%
3560
+ var(--tl-color-panel-transparent) 0%,
3561
+ var(--tl-color-panel) 90%,
3562
+ var(--tl-color-panel) 100%
3414
3563
  );
3415
- border-bottom-left-radius: var(--radius-3);
3416
- border-bottom-right-radius: var(--radius-3);
3564
+ border-bottom-left-radius: var(--tl-radius-3);
3565
+ border-bottom-right-radius: var(--tl-radius-3);
3417
3566
  pointer-events: none;
3418
3567
  }
3419
3568
 
@@ -3428,10 +3577,10 @@ it from receiving any pointer events or affecting the cursor. */
3428
3577
  .tlui-help-menu {
3429
3578
  pointer-events: all;
3430
3579
  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);
3580
+ bottom: var(--tl-space-2);
3581
+ right: var(--tl-space-2);
3582
+ z-index: var(--tl-layer-panels);
3583
+ border: 2px solid var(--tl-color-background);
3435
3584
  border-radius: 100%;
3436
3585
  }
3437
3586
 
@@ -3442,7 +3591,7 @@ it from receiving any pointer events or affecting the cursor. */
3442
3591
  display: flex;
3443
3592
  flex-direction: row;
3444
3593
  justify-content: flex-end;
3445
- z-index: var(--layer-panels);
3594
+ z-index: var(--tl-layer-panels);
3446
3595
  align-items: center;
3447
3596
  padding-top: 2px;
3448
3597
  padding-right: 4px;
@@ -3458,7 +3607,7 @@ it from receiving any pointer events or affecting the cursor. */
3458
3607
  border: none;
3459
3608
  cursor: pointer;
3460
3609
  pointer-events: all;
3461
- border-radius: var(--radius-1);
3610
+ border-radius: var(--tl-radius-1);
3462
3611
  padding-right: 1px;
3463
3612
  height: 100%;
3464
3613
  }
@@ -3471,8 +3620,8 @@ it from receiving any pointer events or affecting the cursor. */
3471
3620
  .tlui-people-menu__avatar {
3472
3621
  height: 24px;
3473
3622
  width: 24px;
3474
- border: 2px solid var(--color-background);
3475
- background-color: var(--color-low);
3623
+ border: 2px solid var(--tl-color-background);
3624
+ background-color: var(--tl-color-low);
3476
3625
  border-radius: 100%;
3477
3626
  display: flex;
3478
3627
  align-items: center;
@@ -3481,7 +3630,7 @@ it from receiving any pointer events or affecting the cursor. */
3481
3630
  font-size: 10px;
3482
3631
  font-weight: bold;
3483
3632
  text-align: center;
3484
- color: var(--color-selected-contrast);
3633
+ color: var(--tl-color-selected-contrast);
3485
3634
  z-index: 2;
3486
3635
  }
3487
3636
 
@@ -3495,7 +3644,7 @@ it from receiving any pointer events or affecting the cursor. */
3495
3644
 
3496
3645
  @media (hover: hover) {
3497
3646
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
3498
- border-color: var(--color-low);
3647
+ border-color: var(--tl-color-low);
3499
3648
  }
3500
3649
  }
3501
3650
 
@@ -3503,12 +3652,12 @@ it from receiving any pointer events or affecting the cursor. */
3503
3652
  min-width: 0px;
3504
3653
  font-size: 11px;
3505
3654
  font-weight: 600;
3506
- color: var(--color-text-1);
3655
+ color: var(--tl-color-text-1);
3507
3656
  font-family: inherit;
3508
3657
  padding: 0px 4px;
3509
3658
  }
3510
3659
  .tlui-people-menu__more::after {
3511
- border-radius: var(--radius-2);
3660
+ border-radius: var(--tl-radius-2);
3512
3661
  inset: 0px;
3513
3662
  }
3514
3663
 
@@ -3537,7 +3686,7 @@ it from receiving any pointer events or affecting the cursor. */
3537
3686
  }
3538
3687
 
3539
3688
  .tlui-people-menu__section:not(:last-child) {
3540
- border-bottom: 1px solid var(--color-divider);
3689
+ border-bottom: 1px solid var(--tl-color-divider);
3541
3690
  }
3542
3691
 
3543
3692
  .tlui-people-menu__user {
@@ -3556,7 +3705,7 @@ it from receiving any pointer events or affecting the cursor. */
3556
3705
  text-overflow: ellipsis;
3557
3706
  white-space: nowrap;
3558
3707
  font-size: 12px;
3559
- color: var(--color-text-1);
3708
+ color: var(--tl-color-text-1);
3560
3709
  max-width: 100%;
3561
3710
  flex-grow: 1;
3562
3711
  flex-shrink: 100;
@@ -3568,7 +3717,7 @@ it from receiving any pointer events or affecting the cursor. */
3568
3717
  text-overflow: ellipsis;
3569
3718
  white-space: nowrap;
3570
3719
  font-size: 12px;
3571
- color: var(--color-text-3);
3720
+ color: var(--tl-color-text-3);
3572
3721
  flex-grow: 100;
3573
3722
  flex-shrink: 0;
3574
3723
  margin-left: 4px;
@@ -3659,7 +3808,7 @@ it from receiving any pointer events or affecting the cursor. */
3659
3808
  inset: 0px;
3660
3809
  border-width: 2px;
3661
3810
  border-style: solid;
3662
- z-index: var(--layer-following-indicator);
3811
+ z-index: var(--tl-layer-following-indicator);
3663
3812
  pointer-events: none;
3664
3813
  }
3665
3814
 
@@ -3678,7 +3827,7 @@ it from receiving any pointer events or affecting the cursor. */
3678
3827
  }
3679
3828
 
3680
3829
  .tlui-contextual-toolbar [data-isactive='true']::after {
3681
- background-color: var(--color-muted-2);
3830
+ background-color: var(--tl-color-muted-2);
3682
3831
  opacity: 1;
3683
3832
  }
3684
3833
 
@@ -3694,7 +3843,7 @@ it from receiving any pointer events or affecting the cursor. */
3694
3843
 
3695
3844
  .tlui-contextual-toolbar[data-visible='true'] {
3696
3845
  opacity: 1;
3697
- z-index: var(--layer-menus);
3846
+ z-index: var(--tl-layer-menus);
3698
3847
  }
3699
3848
 
3700
3849
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -3753,7 +3902,7 @@ it from receiving any pointer events or affecting the cursor. */
3753
3902
 
3754
3903
  @keyframes tlui-slide-in {
3755
3904
  from {
3756
- transform: translateX(calc(100% + var(--space-3)));
3905
+ transform: translateX(calc(100% + var(--tl-space-3)));
3757
3906
  }
3758
3907
  to {
3759
3908
  transform: translateX(0px);
@@ -3765,7 +3914,7 @@ it from receiving any pointer events or affecting the cursor. */
3765
3914
  transform: translateX(var(--radix-toast-swipe-end-x));
3766
3915
  }
3767
3916
  to {
3768
- transform: translateX(calc(100% + var(--space-3)));
3917
+ transform: translateX(calc(100% + var(--tl-space-3)));
3769
3918
  }
3770
3919
  }
3771
3920