tldraw 3.16.0-canary.9e000da8269c → 3.16.0-canary.9f9886f75150

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