tldraw 3.16.0-next.f9f54ec051f3 → 3.16.0-next.fe14f1b4181f

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 (395) hide show
  1. package/dist-cjs/index.d.ts +222 -6
  2. package/dist-cjs/index.js +22 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/Tldraw.js +12 -2
  5. package/dist-cjs/lib/Tldraw.js.map +2 -2
  6. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  8. package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
  13. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  14. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  15. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  16. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  17. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  19. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  20. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +15 -12
  21. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  22. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  23. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  24. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  25. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  26. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  27. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  28. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  29. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  31. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  32. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  33. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  34. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  35. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  36. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  37. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  38. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  39. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  40. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  41. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  42. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  43. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  44. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  45. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  46. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  47. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  48. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  49. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  50. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  51. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  52. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  53. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  54. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  55. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  56. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  57. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  58. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  59. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  60. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  61. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  62. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  63. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  64. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  65. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  66. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  67. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  68. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  69. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  70. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  71. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  72. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  73. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  74. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  75. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  76. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  77. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  78. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +2 -0
  79. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  80. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +171 -140
  81. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  82. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
  83. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
  84. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
  85. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
  86. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  87. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  88. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  89. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  90. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  91. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  92. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  93. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  94. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  95. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  96. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +5 -16
  97. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
  98. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  99. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  100. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  101. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  102. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +6 -4
  103. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  104. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +30 -7
  105. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  106. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +262 -0
  107. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  108. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  109. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  110. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  111. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  112. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  113. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +154 -20
  114. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  115. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  116. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  117. package/dist-cjs/lib/ui/context/actions.js +31 -2
  118. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  119. package/dist-cjs/lib/ui/context/components.js +2 -0
  120. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  121. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  122. package/dist-cjs/lib/ui/hooks/useTools.js +94 -9
  123. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  124. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  125. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +4 -0
  126. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  127. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  128. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  129. package/dist-cjs/lib/ui/version.js +3 -3
  130. package/dist-cjs/lib/ui/version.js.map +1 -1
  131. package/dist-esm/index.d.mts +222 -6
  132. package/dist-esm/index.mjs +35 -2
  133. package/dist-esm/index.mjs.map +2 -2
  134. package/dist-esm/lib/Tldraw.mjs +14 -4
  135. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  136. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  137. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  138. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  139. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  140. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  141. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  142. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  143. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  144. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  145. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  146. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  147. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  148. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  149. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  150. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +16 -12
  151. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  152. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  153. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  154. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  155. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  156. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  157. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  158. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  159. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  160. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  161. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  162. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  163. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  164. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  165. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  166. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  167. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  168. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  169. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  170. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  171. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  172. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  173. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  174. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  175. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  176. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  177. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  178. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  179. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  180. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  181. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  182. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  183. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  184. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  185. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  186. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  187. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  188. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  189. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  190. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  191. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  192. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  193. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  194. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  195. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  196. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  197. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  198. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  199. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  200. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  201. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  202. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  203. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  204. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  205. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  206. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  207. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  208. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +3 -1
  209. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  210. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +171 -140
  211. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  212. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
  213. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
  214. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
  215. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  216. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  217. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  218. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  219. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  220. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  221. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  222. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  223. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  224. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  225. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  226. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +6 -6
  227. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  228. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
  229. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  230. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  231. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  232. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +6 -4
  233. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  234. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +30 -7
  235. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  236. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +239 -0
  237. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  238. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  239. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  240. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  241. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  242. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  243. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +162 -22
  244. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  245. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  246. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  247. package/dist-esm/lib/ui/context/actions.mjs +31 -2
  248. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  249. package/dist-esm/lib/ui/context/components.mjs +2 -0
  250. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  251. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  252. package/dist-esm/lib/ui/hooks/useTools.mjs +102 -10
  253. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  254. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +4 -0
  255. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  256. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  257. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  258. package/dist-esm/lib/ui/version.mjs +3 -3
  259. package/dist-esm/lib/ui/version.mjs.map +1 -1
  260. package/package.json +11 -34
  261. package/src/index.ts +26 -1
  262. package/src/lib/Tldraw.tsx +15 -2
  263. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  264. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  265. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  266. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +4 -3
  267. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +7 -6
  268. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  269. package/src/lib/shapes/arrow/arrowTargetState.ts +2 -1
  270. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  271. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  272. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  273. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  274. package/src/lib/shapes/frame/FrameShapeUtil.tsx +25 -14
  275. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  276. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  277. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  278. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  279. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  280. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  281. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  282. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  283. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  284. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  285. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  286. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  287. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  288. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  289. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  290. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  291. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  292. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  293. package/src/lib/ui/TldrawUi.tsx +33 -12
  294. package/src/lib/ui/assetUrls.ts +13 -10
  295. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  296. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  297. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  298. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  299. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  300. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  301. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  302. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  303. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  304. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  305. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  306. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  307. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +3 -1
  308. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +146 -107
  309. package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
  310. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
  311. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  312. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  313. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  314. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +14 -11
  315. package/src/lib/ui/components/menu-items.tsx +8 -0
  316. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +40 -37
  317. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
  318. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  319. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +35 -30
  320. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +51 -12
  321. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +325 -0
  322. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  323. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  324. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  325. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +221 -19
  326. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  327. package/src/lib/ui/context/actions.tsx +31 -2
  328. package/src/lib/ui/context/components.tsx +3 -0
  329. package/src/lib/ui/context/events.tsx +2 -0
  330. package/src/lib/ui/hooks/useTools.tsx +140 -10
  331. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +4 -0
  332. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +4 -0
  333. package/src/lib/ui/kbd-utils.ts +10 -3
  334. package/src/lib/ui/version.ts +3 -3
  335. package/src/lib/ui.css +409 -292
  336. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  337. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  338. package/src/test/A11y.test.tsx +3 -2
  339. package/src/test/ClickManager.test.ts +7 -6
  340. package/src/test/Editor.test.tsx +20 -19
  341. package/src/test/EraserTool.test.ts +184 -13
  342. package/src/test/HandTool.test.ts +10 -9
  343. package/src/test/HighlightShape.test.ts +2 -1
  344. package/src/test/SelectTool.test.ts +3 -2
  345. package/src/test/TLUserPreferences.test.ts +4 -3
  346. package/src/test/TestEditor.ts +13 -15
  347. package/src/test/TldrawEditor.test.tsx +11 -10
  348. package/src/test/ZoomTool.test.ts +7 -6
  349. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  350. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  351. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  352. package/src/test/arrows-megabus.test.tsx +17 -10
  353. package/src/test/bindings.test.tsx +24 -37
  354. package/src/test/bookmark-shapes.test.ts +1 -8
  355. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  356. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  357. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  358. package/src/test/commands/alignShapes.test.tsx +25 -24
  359. package/src/test/commands/animationSpeed.test.ts +2 -1
  360. package/src/test/commands/centerOnPoint.test.ts +3 -2
  361. package/src/test/commands/clipboard.test.ts +3 -2
  362. package/src/test/commands/createShapes.test.ts +2 -1
  363. package/src/test/commands/deleteShapes.test.ts +2 -1
  364. package/src/test/commands/distributeShapes.test.tsx +11 -10
  365. package/src/test/commands/getSvgString.test.ts +2 -1
  366. package/src/test/commands/packShapes.test.ts +5 -4
  367. package/src/test/commands/resizeShape.test.ts +2 -1
  368. package/src/test/commands/rotateShapes.test.ts +7 -6
  369. package/src/test/commands/setCamera.test.ts +4 -3
  370. package/src/test/commands/setCurrentPage.test.ts +3 -2
  371. package/src/test/commands/stackShapes.test.ts +11 -10
  372. package/src/test/commands/stretch.test.tsx +13 -12
  373. package/src/test/createDeepLink.test.tsx +2 -1
  374. package/src/test/cropping.test.ts +3 -2
  375. package/src/test/drawing.test.ts +2 -1
  376. package/src/test/flipShapes.test.ts +4 -3
  377. package/src/test/frames.test.ts +25 -24
  378. package/src/test/getCulledShapes.test.tsx +3 -2
  379. package/src/test/groups.test.tsx +1 -1
  380. package/src/test/handleDeepLink.test.tsx +2 -1
  381. package/src/test/inner-outer-margin.test.ts +315 -0
  382. package/src/test/maxShapes.test.ts +3 -2
  383. package/src/test/modifiers.test.ts +5 -4
  384. package/src/test/navigation.test.ts +12 -11
  385. package/src/test/panning.test.ts +2 -1
  386. package/src/test/perf/perf.test.ts +2 -1
  387. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  388. package/src/test/resizing.test.ts +39 -38
  389. package/src/test/select.test.tsx +4 -3
  390. package/src/test/selection-omnibus.test.ts +11 -10
  391. package/src/test/shapeutils.test.ts +4 -3
  392. package/src/test/translating.test.ts +9 -8
  393. package/tldraw.css +710 -580
  394. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  395. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
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;
@@ -681,7 +694,7 @@ input,
681
694
 
682
695
  .tl-text-measure {
683
696
  position: absolute;
684
- z-index: var(--layer-canvas-hidden);
697
+ z-index: var(--tl-layer-canvas-hidden);
685
698
  top: 0px;
686
699
  left: 0px;
687
700
  opacity: 0;
@@ -744,8 +757,8 @@ input,
744
757
  }
745
758
 
746
759
  .tl-text-input::selection {
747
- background: var(--color-selected);
748
- color: var(--color-selected-contrast);
760
+ background: var(--tl-color-selected);
761
+ color: var(--tl-color-selected-contrast);
749
762
  text-shadow: none;
750
763
  }
751
764
 
@@ -755,7 +768,7 @@ input,
755
768
  display: flex;
756
769
  justify-content: center;
757
770
  align-items: center;
758
- color: var(--color-text);
771
+ color: var(--tl-color-text);
759
772
  text-shadow: var(--tl-text-outline);
760
773
  line-height: inherit;
761
774
  position: absolute;
@@ -799,7 +812,7 @@ input,
799
812
 
800
813
  .tl-text-wrapper .tl-text-content {
801
814
  pointer-events: all;
802
- z-index: var(--layer-text-content);
815
+ z-index: var(--tl-layer-text-content);
803
816
  }
804
817
 
805
818
  .tl-text-label__inner > .tl-text-content {
@@ -809,7 +822,7 @@ input,
809
822
  padding: inherit;
810
823
  height: fit-content;
811
824
  width: fit-content;
812
- border-radius: var(--radius-1);
825
+ border-radius: var(--tl-radius-1);
813
826
  max-width: 100%;
814
827
  }
815
828
 
@@ -822,7 +835,7 @@ input,
822
835
  }
823
836
 
824
837
  .tl-text-wrapper[data-isselected='true'] .tl-text-input {
825
- z-index: var(--layer-text-editor);
838
+ z-index: var(--tl-layer-text-editor);
826
839
  pointer-events: all;
827
840
  }
828
841
 
@@ -917,7 +930,7 @@ input,
917
930
  }
918
931
 
919
932
  .tl-rich-text a {
920
- color: var(--color-primary);
933
+ color: var(--tl-color-primary);
921
934
  text-decoration: underline;
922
935
  }
923
936
 
@@ -940,14 +953,14 @@ input,
940
953
  }
941
954
 
942
955
  .tl-theme__dark .tl-rich-text mark {
943
- background-color: var(--color-text-highlight);
956
+ background-color: var(--tl-color-text-highlight);
944
957
  color: currentColor;
945
958
  }
946
959
 
947
960
  @supports (color: color(display-p3 1 1 1)) {
948
961
  @media (color-gamut: p3) {
949
962
  .tl-container:not(.tl-theme__force-sRGB) .tl-rich-text mark {
950
- background-color: var(--color-text-highlight-p3);
963
+ background-color: var(--tl-color-text-highlight-p3);
951
964
  }
952
965
  }
953
966
  }
@@ -959,15 +972,15 @@ input,
959
972
  /* --------------------- Loading -------------------- */
960
973
 
961
974
  .tl-loading {
962
- background-color: var(--color-background);
963
- color: var(--color-text-1);
975
+ background-color: var(--tl-color-background);
976
+ color: var(--tl-color-text-1);
964
977
  height: 100%;
965
978
  width: 100%;
966
979
  display: flex;
967
980
  flex-direction: column;
968
981
  justify-content: center;
969
982
  align-items: center;
970
- gap: var(--space-2);
983
+ gap: var(--tl-space-2);
971
984
  font-size: 14px;
972
985
  font-weight: 500;
973
986
  opacity: 0;
@@ -975,7 +988,7 @@ input,
975
988
  animation-delay: 0.2s;
976
989
  position: absolute;
977
990
  inset: 0px;
978
- z-index: var(--layer-canvas-blocker);
991
+ z-index: var(--tl-layer-canvas-blocker);
979
992
  }
980
993
 
981
994
  @keyframes tl-fade-in {
@@ -1008,8 +1021,8 @@ input,
1008
1021
  }
1009
1022
 
1010
1023
  .tl-brush__default {
1011
- stroke: var(--color-brush-stroke);
1012
- fill: var(--color-brush-fill);
1024
+ stroke: var(--tl-color-brush-stroke);
1025
+ fill: var(--tl-color-brush-fill);
1013
1026
  }
1014
1027
 
1015
1028
  /* -------------------- Scribble -------------------- */
@@ -1024,13 +1037,13 @@ input,
1024
1037
  /* ---------------------- Snaps --------------------- */
1025
1038
 
1026
1039
  .tl-snap-indicator {
1027
- stroke: var(--color-snap);
1040
+ stroke: var(--tl-color-snap);
1028
1041
  stroke-width: calc(1px * var(--tl-scale));
1029
1042
  fill: none;
1030
1043
  }
1031
1044
 
1032
1045
  .tl-snap-point {
1033
- stroke: var(--color-snap);
1046
+ stroke: var(--tl-color-snap);
1034
1047
  stroke-width: calc(1px * var(--tl-scale));
1035
1048
  fill: none;
1036
1049
  }
@@ -1050,7 +1063,7 @@ input,
1050
1063
  justify-content: center;
1051
1064
  font-size: 12px;
1052
1065
  font-weight: 400;
1053
- color: var(--color-text-1);
1066
+ color: var(--tl-color-text-1);
1054
1067
  padding: 13px;
1055
1068
  cursor: var(--tl-cursor-pointer);
1056
1069
  border: none;
@@ -1068,13 +1081,13 @@ input,
1068
1081
  display: block;
1069
1082
  width: calc(100% - 12px);
1070
1083
  height: calc(100% - 12px);
1071
- border-radius: var(--radius-1);
1072
- background-color: var(--color-background);
1084
+ border-radius: var(--tl-radius-1);
1085
+ background-color: var(--tl-color-background);
1073
1086
  pointer-events: none;
1074
1087
  }
1075
1088
 
1076
1089
  .tl-hyperlink-button:focus-visible {
1077
- color: var(--color-selected);
1090
+ color: var(--tl-color-selected);
1078
1091
  }
1079
1092
 
1080
1093
  .tl-hyperlink__icon {
@@ -1101,8 +1114,8 @@ input,
1101
1114
  }
1102
1115
 
1103
1116
  .tl-handle__fg {
1104
- fill: var(--color-selected-contrast);
1105
- stroke: var(--color-selection-stroke);
1117
+ fill: var(--tl-color-selected-contrast);
1118
+ stroke: var(--tl-color-selection-stroke);
1106
1119
  stroke-width: calc(1.5px * var(--tl-scale));
1107
1120
  pointer-events: none;
1108
1121
  }
@@ -1112,7 +1125,7 @@ input,
1112
1125
  }
1113
1126
 
1114
1127
  .tl-handle__clone > .tl-handle__fg {
1115
- fill: var(--color-selection-stroke);
1128
+ fill: var(--tl-color-selection-stroke);
1116
1129
  stroke: none;
1117
1130
  }
1118
1131
 
@@ -1122,7 +1135,7 @@ input,
1122
1135
 
1123
1136
  @media (pointer: coarse) {
1124
1137
  .tl-handle__bg:active {
1125
- fill: var(--color-selection-fill);
1138
+ fill: var(--tl-color-selection-fill);
1126
1139
  }
1127
1140
 
1128
1141
  .tl-handle__create {
@@ -1178,13 +1191,13 @@ input,
1178
1191
  stroke-linejoin: round;
1179
1192
  /* content-visibility: auto; */
1180
1193
  transform-origin: top left;
1181
- color: var(--color-text-1);
1194
+ color: var(--tl-color-text-1);
1182
1195
  }
1183
1196
 
1184
1197
  /* -------------------- Group shape ------------------ */
1185
1198
 
1186
1199
  .tl-group {
1187
- stroke: var(--color-text);
1200
+ stroke: var(--tl-color-text);
1188
1201
  stroke-width: calc(1px * var(--tl-scale));
1189
1202
  opacity: 0.5;
1190
1203
  }
@@ -1202,12 +1215,12 @@ input,
1202
1215
  justify-content: center;
1203
1216
  align-items: center;
1204
1217
  text-align: center;
1205
- color: var(--color-text);
1218
+ color: var(--tl-color-text);
1206
1219
  text-shadow: var(--tl-text-outline);
1207
1220
  }
1208
1221
 
1209
1222
  .tl-shape[data-shape-type='arrow'] .tl-text-label__inner {
1210
- border-radius: var(--radius-1);
1223
+ border-radius: var(--tl-radius-1);
1211
1224
  box-sizing: content-box;
1212
1225
  height: max-content;
1213
1226
  width: max-content;
@@ -1218,22 +1231,22 @@ input,
1218
1231
  }
1219
1232
 
1220
1233
  .tl-arrow-hint {
1221
- stroke: var(--color-text-1);
1234
+ stroke: var(--tl-color-text-1);
1222
1235
  fill: none;
1223
1236
  stroke-linecap: round;
1224
1237
  overflow: visible;
1225
1238
  }
1226
1239
 
1227
1240
  .tl-arrow-hint-handle {
1228
- fill: var(--color-selected-contrast);
1229
- stroke: var(--color-selection-stroke);
1241
+ fill: var(--tl-color-selected-contrast);
1242
+ stroke: var(--tl-color-selection-stroke);
1230
1243
  stroke-width: calc(1.5px * var(--tl-scale));
1231
1244
  r: calc(4px * var(--tl-scale));
1232
1245
  }
1233
1246
 
1234
1247
  .tl-arrow-hint-snap {
1235
1248
  stroke: transparent;
1236
- fill: var(--color-selection-fill);
1249
+ fill: var(--tl-color-selection-fill);
1237
1250
  r: calc(12px * var(--tl-scale));
1238
1251
  }
1239
1252
 
@@ -1253,40 +1266,40 @@ input,
1253
1266
  width: 100%;
1254
1267
  height: 100%;
1255
1268
  position: relative;
1256
- border: 1px solid var(--color-panel-contrast);
1257
- background-color: var(--color-panel);
1258
- border-radius: var(--radius-2);
1269
+ border: 1px solid var(--tl-color-panel-contrast);
1270
+ background-color: var(--tl-color-panel);
1271
+ border-radius: var(--tl-radius-2);
1259
1272
  display: flex;
1260
1273
  flex-direction: column;
1261
1274
  overflow: hidden;
1262
1275
  }
1263
1276
 
1264
1277
  .tl-bookmark__container--safariExport {
1265
- border: 1px solid var(--color-divider);
1278
+ border: 1px solid var(--tl-color-divider);
1266
1279
  }
1267
1280
 
1268
1281
  .tl-bookmark__image_container {
1269
1282
  flex: 1 1 100%;
1270
1283
  overflow: hidden;
1271
- border-top-left-radius: var(--radius-1);
1272
- border-top-right-radius: var(--radius-1);
1284
+ border-top-left-radius: var(--tl-radius-1);
1285
+ border-top-right-radius: var(--tl-radius-1);
1273
1286
  width: 100%;
1274
1287
  height: 100%;
1275
1288
  display: flex;
1276
1289
  justify-content: flex-end;
1277
1290
  align-items: flex-start;
1278
- box-shadow: inset 0px 0px 0px 1px var(--color-divider);
1291
+ box-shadow: inset 0px 0px 0px 1px var(--tl-color-divider);
1279
1292
  }
1280
1293
 
1281
1294
  .tl-bookmark__image_container > .tl-hyperlink-button::after {
1282
- background-color: var(--color-panel);
1295
+ background-color: var(--tl-color-panel);
1283
1296
  }
1284
1297
 
1285
1298
  .tl-bookmark__placeholder {
1286
1299
  width: 100%;
1287
1300
  height: 100%;
1288
- background-color: var(--color-muted-2);
1289
- border-bottom: 1px solid var(--color-muted-2);
1301
+ background-color: var(--tl-color-muted-2);
1302
+ border-bottom: 1px solid var(--tl-color-muted-2);
1290
1303
  }
1291
1304
 
1292
1305
  .tl-bookmark__image {
@@ -1294,12 +1307,12 @@ input,
1294
1307
  height: 100%;
1295
1308
  object-fit: cover;
1296
1309
  object-position: center;
1297
- border-bottom: 1px solid var(--color-muted-2);
1310
+ border-bottom: 1px solid var(--tl-color-muted-2);
1298
1311
  }
1299
1312
 
1300
1313
  .tl-bookmark__copy_container {
1301
- background-color: var(--color-muted-0);
1302
- padding: var(--space-4);
1314
+ background-color: var(--tl-color-muted-0);
1315
+ padding: var(--tl-space-4);
1303
1316
  pointer-events: all;
1304
1317
  display: flex;
1305
1318
  flex-direction: column;
@@ -1319,7 +1332,7 @@ input,
1319
1332
  font-size: 16px;
1320
1333
  line-height: 1.6;
1321
1334
  font-weight: bold;
1322
- padding-bottom: var(--space-2);
1335
+ padding-bottom: var(--tl-space-2);
1323
1336
  overflow: hidden;
1324
1337
  max-height: calc((16px * 1.6) * 2);
1325
1338
  -webkit-box-orient: vertical;
@@ -1339,19 +1352,19 @@ input,
1339
1352
  line-clamp: 3;
1340
1353
  text-overflow: ellipsis;
1341
1354
  display: -webkit-box;
1342
- color: var(--color-text-2);
1343
- margin: var(--space-2) 0px;
1355
+ color: var(--tl-color-text-2);
1356
+ margin: var(--tl-space-2) 0px;
1344
1357
  }
1345
1358
 
1346
1359
  .tl-bookmark__heading + .tl-bookmark__link,
1347
1360
  .tl-bookmark__description + .tl-bookmark__link {
1348
- margin-top: var(--space-3);
1361
+ margin-top: var(--tl-space-3);
1349
1362
  }
1350
1363
  .tl-bookmark__link {
1351
1364
  font-size: 12px;
1352
1365
  pointer-events: all;
1353
1366
  display: flex;
1354
- color: var(--color-text-2);
1367
+ color: var(--tl-color-text-2);
1355
1368
  align-items: center;
1356
1369
  cursor: var(--tl-cursor-pointer);
1357
1370
  width: fit-content;
@@ -1393,7 +1406,7 @@ input,
1393
1406
  width: 100%;
1394
1407
  height: 100%;
1395
1408
  pointer-events: all;
1396
- /* background-color: var(--color-background); */
1409
+ /* background-color: var(--tl-color-background); */
1397
1410
 
1398
1411
  display: flex;
1399
1412
  justify-content: center;
@@ -1422,7 +1435,7 @@ input,
1422
1435
  height: 100%;
1423
1436
  pointer-events: all;
1424
1437
  opacity: 1;
1425
- z-index: var(--layer-text-container);
1438
+ z-index: var(--tl-layer-text-container);
1426
1439
  border-radius: 1px;
1427
1440
  }
1428
1441
 
@@ -1438,22 +1451,22 @@ input,
1438
1451
  }
1439
1452
 
1440
1453
  .tl-frame__creating {
1441
- stroke: var(--color-selected);
1454
+ stroke: var(--tl-color-selected);
1442
1455
  fill: none;
1443
1456
  }
1444
1457
 
1445
1458
  .tl-frame-heading {
1446
- --frame-padding-x: 6px;
1447
- --frame-height: 24px;
1448
- --frame-minimum-width: 32px;
1449
- --frame-offset-width: 16px;
1459
+ --tl-frame-padding-x: 6px;
1460
+ --tl-frame-height: 24px;
1461
+ --tl-frame-minimum-width: 32px;
1462
+ --tl-frame-offset-width: 16px;
1450
1463
  display: flex;
1451
1464
  align-items: center;
1452
1465
  position: absolute;
1453
1466
  transform-origin: 0% 100%;
1454
1467
  overflow: hidden;
1455
1468
  max-width: 100%;
1456
- min-width: var(--frame-minimum-width);
1469
+ min-width: var(--tl-frame-minimum-width);
1457
1470
  height: auto;
1458
1471
  font-size: 12px;
1459
1472
  padding-bottom: 4px;
@@ -1465,18 +1478,18 @@ input,
1465
1478
  /* scale from bottom left corner so we can pin it to the top left corner of the frame */
1466
1479
  transform-origin: 0% 100%;
1467
1480
  display: flex;
1468
- height: var(--frame-height);
1481
+ height: var(--tl-frame-height);
1469
1482
  width: 100%;
1470
1483
  align-items: center;
1471
- border-radius: var(--radius-1);
1484
+ border-radius: var(--tl-radius-1);
1472
1485
  }
1473
1486
 
1474
1487
  .tl-frame-label {
1475
1488
  pointer-events: all;
1476
1489
  overflow: hidden;
1477
1490
  text-overflow: ellipsis;
1478
- padding: 0px var(--frame-padding-x);
1479
- border-radius: var(--radius-1);
1491
+ padding: 0px var(--tl-frame-padding-x);
1492
+ border-radius: var(--tl-radius-1);
1480
1493
  position: relative;
1481
1494
  font-size: inherit;
1482
1495
  white-space: pre;
@@ -1486,12 +1499,12 @@ input,
1486
1499
  color: transparent;
1487
1500
  white-space: pre;
1488
1501
  width: auto;
1489
- min-width: var(--frame-minimum-width);
1502
+ min-width: var(--tl-frame-minimum-width);
1490
1503
  height: 100%;
1491
1504
  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);
1505
+ background-color: var(--tl-color-panel);
1506
+ border-color: var(--tl-color-selected);
1507
+ box-shadow: inset 0px 0px 0px 1.5px var(--tl-color-selected);
1495
1508
  }
1496
1509
 
1497
1510
  .tl-frame-name-input {
@@ -1499,7 +1512,7 @@ input,
1499
1512
  border: none;
1500
1513
  background: none;
1501
1514
  outline: none;
1502
- padding: 0px var(--frame-padding-x);
1515
+ padding: 0px var(--tl-frame-padding-x);
1503
1516
  inset: 0px;
1504
1517
  height: 100%;
1505
1518
  width: 100%;
@@ -1507,8 +1520,8 @@ input,
1507
1520
  font-family: inherit;
1508
1521
  font-weight: inherit;
1509
1522
  width: 100%;
1510
- color: var(--color-text-1);
1511
- border-radius: var(--radius-1);
1523
+ color: var(--tl-color-text-1);
1524
+ border-radius: var(--tl-radius-1);
1512
1525
  user-select: all;
1513
1526
  -webkit-user-select: text;
1514
1527
  white-space: pre;
@@ -1528,7 +1541,7 @@ input,
1528
1541
 
1529
1542
  .tl-embed {
1530
1543
  border: none;
1531
- border-radius: var(--radius-2);
1544
+ border-radius: var(--tl-radius-2);
1532
1545
  }
1533
1546
 
1534
1547
  /* -------------- Shape error boundary -------------- */
@@ -1536,11 +1549,11 @@ input,
1536
1549
  .tl-shape-error-boundary {
1537
1550
  width: 100%;
1538
1551
  height: 100%;
1539
- background-color: var(--color-muted-1);
1552
+ background-color: var(--tl-color-muted-1);
1540
1553
  border-width: calc(1px * var(--tl-scale));
1541
- border-color: var(--color-muted-1);
1554
+ border-color: var(--tl-color-muted-1);
1542
1555
  border-style: solid;
1543
- border-radius: calc(var(--radius-1) * var(--tl-scale));
1556
+ border-radius: calc(var(--tl-radius-1) * var(--tl-scale));
1544
1557
  display: flex;
1545
1558
  flex-direction: column;
1546
1559
  align-items: center;
@@ -1549,7 +1562,7 @@ input,
1549
1562
  position: relative;
1550
1563
  pointer-events: all;
1551
1564
  overflow: hidden;
1552
- padding: var(--space-2);
1565
+ padding: var(--tl-space-2);
1553
1566
  }
1554
1567
 
1555
1568
  .tl-shape-error-boundary::before {
@@ -1557,7 +1570,7 @@ input,
1557
1570
  content: 'Error';
1558
1571
  font-size: 12px;
1559
1572
  font-family: inherit;
1560
- color: var(--color-text-0);
1573
+ color: var(--tl-color-text-0);
1561
1574
  }
1562
1575
 
1563
1576
  /* ----------------- Error boundary ----------------- */
@@ -1568,9 +1581,9 @@ input,
1568
1581
  display: flex;
1569
1582
  align-items: center;
1570
1583
  justify-content: center;
1571
- padding: var(--space-4);
1572
- background-color: var(--color-background);
1573
- color: var(--color-text-1);
1584
+ padding: var(--tl-space-4);
1585
+ background-color: var(--tl-color-background);
1586
+ color: var(--tl-color-text-1);
1574
1587
  position: absolute;
1575
1588
  }
1576
1589
 
@@ -1579,8 +1592,8 @@ input,
1579
1592
  inset: 0px;
1580
1593
  height: 100%;
1581
1594
  width: 100%;
1582
- z-index: var(--layer-error-overlay);
1583
- background-color: var(--color-overlay);
1595
+ z-index: var(--tl-layer-error-overlay);
1596
+ background-color: var(--tl-color-overlay);
1584
1597
  }
1585
1598
 
1586
1599
  .tl-error-boundary__content * {
@@ -1595,7 +1608,7 @@ input,
1595
1608
  inset: 0px;
1596
1609
  height: 100%;
1597
1610
  width: 100%;
1598
- z-index: var(--layer-error-canvas);
1611
+ z-index: var(--tl-layer-error-canvas);
1599
1612
  }
1600
1613
 
1601
1614
  /* some browsers seem to have some weird interactions between stacking contexts
@@ -1608,7 +1621,7 @@ it from receiving any pointer events or affecting the cursor. */
1608
1621
  inset: 0px;
1609
1622
  height: 100%;
1610
1623
  width: 100%;
1611
- z-index: var(--layer-error-canvas-after);
1624
+ z-index: var(--tl-layer-error-canvas-after);
1612
1625
  pointer-events: all;
1613
1626
  }
1614
1627
 
@@ -1618,16 +1631,16 @@ it from receiving any pointer events or affecting the cursor. */
1618
1631
  max-width: 100%;
1619
1632
  width: 400px;
1620
1633
  max-height: 100%;
1621
- background-color: var(--color-panel);
1634
+ background-color: var(--tl-color-panel);
1622
1635
  padding: 16px;
1623
1636
  border-radius: 16px;
1624
- box-shadow: var(--shadow-2);
1637
+ box-shadow: var(--tl-shadow-2);
1625
1638
  font-size: 14px;
1626
1639
  font-weight: 400;
1627
1640
  display: flex;
1628
1641
  flex-direction: column;
1629
1642
  overflow: auto;
1630
- z-index: var(--layer-error-content);
1643
+ z-index: var(--tl-layer-error-content);
1631
1644
  gap: 12px;
1632
1645
  }
1633
1646
 
@@ -1642,10 +1655,10 @@ it from receiving any pointer events or affecting the cursor. */
1642
1655
  }
1643
1656
 
1644
1657
  .tl-error-boundary__content h4 {
1645
- border: 1px solid var(--color-low-border);
1658
+ border: 1px solid var(--tl-color-low-border);
1646
1659
  margin: -6px 0 0 0;
1647
- padding: var(--space-5);
1648
- border-radius: var(--radius-2);
1660
+ padding: var(--tl-space-5);
1661
+ border-radius: var(--tl-radius-2);
1649
1662
  font-weight: normal;
1650
1663
  }
1651
1664
 
@@ -1655,10 +1668,10 @@ it from receiving any pointer events or affecting the cursor. */
1655
1668
  }
1656
1669
 
1657
1670
  .tl-error-boundary__content pre {
1658
- background-color: var(--color-muted-2);
1671
+ background-color: var(--tl-color-muted-2);
1659
1672
  margin-top: 0;
1660
- padding: var(--space-5);
1661
- border-radius: var(--radius-2);
1673
+ padding: var(--tl-space-5);
1674
+ border-radius: var(--tl-radius-2);
1662
1675
  overflow: auto;
1663
1676
  font-size: 12px;
1664
1677
  max-height: 320px;
@@ -1670,15 +1683,15 @@ it from receiving any pointer events or affecting the cursor. */
1670
1683
  font-family: inherit;
1671
1684
  font-size: 14px;
1672
1685
  font-weight: 500;
1673
- padding: var(--space-4);
1674
- border-radius: var(--radius-3);
1686
+ padding: var(--tl-space-4);
1687
+ border-radius: var(--tl-radius-3);
1675
1688
  cursor: var(--tl-cursor-pointer);
1676
1689
  color: inherit;
1677
1690
  background-color: transparent;
1678
1691
  }
1679
1692
 
1680
1693
  .tl-error-boundary__content a {
1681
- color: var(--color-selected);
1694
+ color: var(--tl-color-selected);
1682
1695
  font-weight: 500;
1683
1696
  text-decoration: none;
1684
1697
  }
@@ -1690,31 +1703,31 @@ it from receiving any pointer events or affecting the cursor. */
1690
1703
 
1691
1704
  .tl-error-boundary__content__error button {
1692
1705
  position: absolute;
1693
- top: var(--space-2);
1694
- right: var(--space-2);
1706
+ top: var(--tl-space-2);
1707
+ right: var(--tl-space-2);
1695
1708
  font-size: 12px;
1696
- padding: var(--space-2) var(--space-3);
1697
- background-color: var(--color-panel);
1698
- border-radius: var(--radius-1);
1709
+ padding: var(--tl-space-2) var(--tl-space-3);
1710
+ background-color: var(--tl-color-panel);
1711
+ border-radius: var(--tl-radius-1);
1699
1712
  }
1700
1713
 
1701
1714
  .tl-error-boundary__content__actions {
1702
1715
  display: flex;
1703
1716
  justify-content: space-between;
1704
- gap: var(--space-4);
1717
+ gap: var(--tl-space-4);
1705
1718
  margin: 0px;
1706
1719
  margin-left: -4px;
1707
1720
  }
1708
1721
  .tl-error-boundary__content__actions__group {
1709
1722
  display: flex;
1710
- gap: var(--space-4);
1723
+ gap: var(--tl-space-4);
1711
1724
  }
1712
1725
  .tl-error-boundary__content .tl-error-boundary__reset {
1713
- color: var(--color-danger);
1726
+ color: var(--tl-color-danger);
1714
1727
  }
1715
1728
  .tl-error-boundary__content .tl-error-boundary__refresh {
1716
- background-color: var(--color-primary);
1717
- color: var(--color-selected-contrast);
1729
+ background-color: var(--tl-color-primary);
1730
+ color: var(--tl-color-selected-contrast);
1718
1731
  }
1719
1732
  .tl-container__focused:not(.tl-container__no-focus-ring)
1720
1733
  .tlui-button.tl-error-boundary__refresh:focus-visible {
@@ -1726,7 +1739,7 @@ it from receiving any pointer events or affecting the cursor. */
1726
1739
 
1727
1740
  .tl-hit-test-blocker {
1728
1741
  position: absolute;
1729
- z-index: var(--layer-canvas-blocker);
1742
+ z-index: var(--tl-layer-canvas-blocker);
1730
1743
  inset: 0px;
1731
1744
  width: 100%;
1732
1745
  height: 100%;
@@ -1746,32 +1759,32 @@ it from receiving any pointer events or affecting the cursor. */
1746
1759
 
1747
1760
  .tl-handle__bg:hover {
1748
1761
  cursor: var(--tl-cursor-grab);
1749
- fill: var(--color-selection-fill);
1762
+ fill: var(--tl-color-selection-fill);
1750
1763
  }
1751
1764
 
1752
1765
  .tl-bookmark__link:hover {
1753
- color: var(--color-selected);
1766
+ color: var(--tl-color-selected);
1754
1767
  }
1755
1768
 
1756
1769
  .tl-hyperlink-button:hover {
1757
- color: var(--color-selected);
1770
+ color: var(--tl-color-selected);
1758
1771
  }
1759
1772
 
1760
1773
  .tl-error-boundary__content button:hover {
1761
- background-color: var(--color-low);
1774
+ background-color: var(--tl-color-low);
1762
1775
  }
1763
1776
  .tl-error-boundary__content a:hover {
1764
- color: var(--color-text-1);
1777
+ color: var(--tl-color-text-1);
1765
1778
  }
1766
1779
  .tl-error-boundary__content .tl-error-boundary__refresh:hover {
1767
- background-color: var(--color-primary);
1780
+ background-color: var(--tl-color-primary);
1768
1781
  opacity: 0.9;
1769
1782
  }
1770
1783
 
1771
1784
  /* These three rules help preserve clicking into specific points in text areas *while*
1772
1785
  * already in edit mode when jumping from shape to shape. */
1773
1786
  .tl-canvas[data-iseditinganything='true'] .tl-text-wrapper:hover .tl-text-input {
1774
- z-index: var(--layer-text-editor);
1787
+ z-index: var(--tl-layer-text-editor);
1775
1788
  pointer-events: all;
1776
1789
  }
1777
1790
  }
@@ -1779,15 +1792,15 @@ it from receiving any pointer events or affecting the cursor. */
1779
1792
  /* @tldraw/ui */
1780
1793
 
1781
1794
  .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;
1795
+ --tl-layer-above: 1;
1796
+ --tl-layer-focused-input: 10;
1797
+ --tl-layer-menu-click-capture: 250;
1798
+ --tl-layer-panels: 300;
1799
+ --tl-layer-menus: 400;
1800
+ --tl-layer-toasts: 650;
1801
+ --tl-layer-cursor: 700;
1802
+ --tl-layer-header-footer: 999;
1803
+ --tl-layer-following-indicator: 1000;
1791
1804
  }
1792
1805
 
1793
1806
  /* Button */
@@ -1811,23 +1824,23 @@ it from receiving any pointer events or affecting the cursor. */
1811
1824
  text-rendering: optimizeLegibility;
1812
1825
  font-size: 12px;
1813
1826
  gap: 0px;
1814
- color: var(--color-text-1);
1827
+ color: var(--tl-color-text-1);
1815
1828
  z-index: 0;
1816
1829
  }
1817
1830
 
1818
1831
  .tlui-button:disabled {
1819
- color: var(--color-text-3);
1832
+ color: var(--tl-color-text-3);
1820
1833
  text-shadow: none;
1821
1834
  cursor: default;
1822
1835
  }
1823
1836
 
1824
1837
  .tlui-button:disabled .tlui-kbd {
1825
- color: var(--color-text-3);
1838
+ color: var(--tl-color-text-3);
1826
1839
  }
1827
1840
 
1828
1841
  .tlui-button > * {
1829
1842
  position: relative;
1830
- z-index: var(--layer-above);
1843
+ z-index: var(--tl-layer-above);
1831
1844
  }
1832
1845
 
1833
1846
  .tlui-button__label {
@@ -1843,7 +1856,7 @@ it from receiving any pointer events or affecting the cursor. */
1843
1856
  */
1844
1857
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button:focus-visible {
1845
1858
  border-radius: 10px;
1846
- outline: 2px solid var(--color-focus);
1859
+ outline: 2px solid var(--tl-color-focus);
1847
1860
  outline-offset: -5px;
1848
1861
  }
1849
1862
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button__tool:focus-visible {
@@ -1851,7 +1864,7 @@ it from receiving any pointer events or affecting the cursor. */
1851
1864
  }
1852
1865
  .tlui-slider__container:has(.tlui-slider__thumb:focus-visible) {
1853
1866
  border-radius: 10px;
1854
- outline: 2px solid var(--color-focus);
1867
+ outline: 2px solid var(--tl-color-focus);
1855
1868
  outline-offset: -5px;
1856
1869
  }
1857
1870
 
@@ -1860,8 +1873,8 @@ it from receiving any pointer events or affecting the cursor. */
1860
1873
  content: '';
1861
1874
  position: absolute;
1862
1875
  inset: 4px;
1863
- border-radius: var(--radius-2);
1864
- background: var(--color-muted-2);
1876
+ border-radius: var(--tl-radius-2);
1877
+ background: var(--tl-color-muted-2);
1865
1878
  opacity: 0;
1866
1879
  }
1867
1880
 
@@ -1871,18 +1884,18 @@ it from receiving any pointer events or affecting the cursor. */
1871
1884
 
1872
1885
  .tlui-button[data-isactive='true']::after,
1873
1886
  .tlui-button[data-isactive='true']:not(:disabled, :focus-visible):active:after {
1874
- background: var(--color-hint);
1887
+ background: var(--tl-color-hint);
1875
1888
  opacity: 1;
1876
1889
  }
1877
1890
 
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%);
1891
+ .tlui-button[aria-expanded='true'][data-direction='left'] {
1892
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1880
1893
  opacity: 1;
1881
1894
  }
1882
1895
 
1883
1896
  @media (hover: hover) {
1884
1897
  .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%);
1898
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1886
1899
  opacity: 1;
1887
1900
  }
1888
1901
 
@@ -1896,18 +1909,18 @@ it from receiving any pointer events or affecting the cursor. */
1896
1909
  }
1897
1910
 
1898
1911
  .tlui-button__icon + .tlui-button__label {
1899
- margin-left: var(--space-2);
1912
+ margin-left: var(--tl-space-2);
1900
1913
  }
1901
1914
 
1902
1915
  /* Low button */
1903
1916
 
1904
1917
  .tlui-button__low {
1905
- border-radius: var(--radius-3);
1906
- background-color: var(--color-low);
1918
+ border-radius: var(--tl-radius-3);
1919
+ background-color: var(--tl-color-low);
1907
1920
  }
1908
1921
 
1909
1922
  .tlui-button__low::after {
1910
- background-color: var(--color-muted-2);
1923
+ background-color: var(--tl-color-muted-2);
1911
1924
  opacity: 0;
1912
1925
  }
1913
1926
 
@@ -1920,31 +1933,25 @@ it from receiving any pointer events or affecting the cursor. */
1920
1933
  /* Primary / danger buttons */
1921
1934
 
1922
1935
  .tlui-button__primary {
1923
- color: var(--color-primary);
1936
+ color: var(--tl-color-primary);
1924
1937
  }
1925
1938
 
1926
1939
  .tlui-button__danger {
1927
- color: var(--color-danger);
1940
+ color: var(--tl-color-danger);
1928
1941
  text-shadow: none;
1929
1942
  }
1930
1943
 
1931
1944
  @media (hover: hover) {
1932
1945
  .tlui-button__primary:not(:disabled, :focus-visible):hover {
1933
- color: var(--color-primary);
1946
+ color: var(--tl-color-primary);
1934
1947
  }
1935
1948
 
1936
1949
  .tlui-button__danger:not(:disabled, :focus-visible):hover {
1937
- color: var(--color-danger);
1950
+ color: var(--tl-color-danger);
1938
1951
  text-shadow: none;
1939
1952
  }
1940
1953
  }
1941
1954
 
1942
- /* Panel button */
1943
-
1944
- .tlui-button__panel {
1945
- position: relative;
1946
- }
1947
-
1948
1955
  /* Menu button */
1949
1956
 
1950
1957
  .tlui-button__menu {
@@ -1957,7 +1964,7 @@ it from receiving any pointer events or affecting the cursor. */
1957
1964
 
1958
1965
  .tlui-button__menu::after {
1959
1966
  inset: 4px;
1960
- border-radius: var(--radius-2);
1967
+ border-radius: var(--tl-radius-2);
1961
1968
  }
1962
1969
 
1963
1970
  .tlui-button__menu > .tlui-icon + .tlui-button__label {
@@ -1985,18 +1992,26 @@ it from receiving any pointer events or affecting the cursor. */
1985
1992
 
1986
1993
  /* Tool lock button */
1987
1994
 
1988
- .tlui-toolbar__lock-button {
1995
+ .tlui-main-toolbar__lock-button {
1989
1996
  position: absolute;
1990
- top: 4px;
1991
- right: 0px;
1992
1997
  pointer-events: all;
1993
1998
  height: 40px;
1994
1999
  width: 40px;
2000
+ border-radius: var(--tl-radius-2);
2001
+ }
2002
+
2003
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
2004
+ top: 4px;
2005
+ right: 0px;
1995
2006
  min-width: 0px;
1996
- border-radius: var(--radius-2);
1997
2007
  }
1998
2008
 
1999
- .tlui-toolbar__lock-button::after {
2009
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__lock-button {
2010
+ bottom: 0px;
2011
+ min-height: 0px;
2012
+ }
2013
+
2014
+ .tlui-main-toolbar__lock-button::after {
2000
2015
  top: 4px;
2001
2016
  left: 8px;
2002
2017
  inset: 4px;
@@ -2008,16 +2023,6 @@ it from receiving any pointer events or affecting the cursor. */
2008
2023
  position: relative;
2009
2024
  height: 48px;
2010
2025
  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
2026
  }
2022
2027
 
2023
2028
  .tlui-button__tool::after {
@@ -2026,69 +2031,64 @@ it from receiving any pointer events or affecting the cursor. */
2026
2031
  }
2027
2032
 
2028
2033
  .tlui-button__tool[aria-pressed='true'] {
2029
- color: var(--color-selected-contrast);
2034
+ color: var(--tl-color-selected-contrast);
2030
2035
  }
2031
2036
 
2032
2037
  .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
2033
- color: var(--color-selected-contrast);
2038
+ color: var(--tl-color-selected-contrast);
2034
2039
  }
2035
2040
 
2036
2041
  .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
2037
- background: var(--color-selected);
2042
+ background: var(--tl-color-selected);
2038
2043
  opacity: 1;
2039
2044
  }
2040
2045
 
2041
- .tlui-layout__mobile .tlui-button__tool {
2046
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool {
2042
2047
  height: 48px;
2043
2048
  width: 43px;
2044
2049
  }
2045
2050
 
2046
- .tlui-layout__mobile .tlui-button__tool > .tlui-icon {
2051
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool > .tlui-icon {
2047
2052
  height: 16px;
2048
2053
  width: 16px;
2049
2054
  }
2050
2055
 
2051
- /* Button Row */
2056
+ /* Row layout */
2052
2057
 
2053
- .tlui-buttons__horizontal {
2058
+ .tlui-row {
2054
2059
  display: flex;
2055
2060
  flex-direction: row;
2061
+ padding: 0 2px;
2056
2062
  }
2057
- .tlui-buttons__horizontal > * {
2063
+ .tlui-row > * {
2058
2064
  margin-left: -2px;
2059
2065
  margin-right: -2px;
2060
2066
  }
2061
- .tlui-buttons__horizontal > *:nth-child(1) {
2062
- margin-left: 0px;
2067
+
2068
+ /* Column layout */
2069
+
2070
+ .tlui-column {
2071
+ display: flex;
2072
+ flex-direction: column;
2073
+ padding: 2px 0;
2063
2074
  }
2064
- .tlui-buttons__horizontal > *:nth-last-child(1) {
2065
- margin-right: 0px;
2075
+ .tlui-column > * {
2076
+ margin-top: -2px;
2077
+ margin-bottom: -2px;
2066
2078
  }
2067
2079
 
2068
- /* Button Grid */
2080
+ /* Grid layout */
2069
2081
 
2070
- .tlui-buttons__grid {
2082
+ .tlui-grid {
2071
2083
  display: grid;
2072
- grid-template-columns: repeat(4, auto);
2084
+ grid-template-columns: repeat(4, 1fr);
2073
2085
  grid-auto-flow: row;
2074
2086
  overflow: hidden;
2087
+ padding: 2px;
2075
2088
  }
2076
- .tlui-buttons__grid > .tlui-button {
2089
+ .tlui-grid > * {
2077
2090
  margin: -2px;
2078
2091
  }
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
2092
 
2093
2093
  /* Zoom button */
2094
2094
 
@@ -2112,9 +2112,9 @@ it from receiving any pointer events or affecting the cursor. */
2112
2112
  pointer-events: none;
2113
2113
  user-select: none;
2114
2114
  contain: strict;
2115
- z-index: var(--layer-panels);
2115
+ z-index: var(--tl-layer-panels);
2116
2116
  transform: translate3d(0, 0, 0);
2117
- --sab: env(safe-area-inset-bottom);
2117
+ --tl-sab: env(safe-area-inset-bottom);
2118
2118
  font-weight: 500;
2119
2119
  line-height: 1.6;
2120
2120
  -webkit-font-smoothing: antialiased;
@@ -2167,11 +2167,11 @@ it from receiving any pointer events or affecting the cursor. */
2167
2167
  justify-content: flex-start;
2168
2168
  align-items: flex-start;
2169
2169
  width: min-content;
2170
- gap: var(--space-3);
2171
- margin: var(--space-2) var(--space-3);
2170
+ gap: var(--tl-space-3);
2171
+ margin: var(--tl-space-2) var(--tl-space-3);
2172
2172
  white-space: nowrap;
2173
2173
  pointer-events: none;
2174
- z-index: var(--layer-panels);
2174
+ z-index: var(--tl-layer-panels);
2175
2175
  }
2176
2176
 
2177
2177
  /* ---------------------- Icon ---------------------- */
@@ -2199,7 +2199,7 @@ it from receiving any pointer events or affecting the cursor. */
2199
2199
 
2200
2200
  .tlui-slider__container {
2201
2201
  width: 100%;
2202
- padding: 0px var(--space-4);
2202
+ padding: 0px var(--tl-space-4);
2203
2203
  }
2204
2204
 
2205
2205
  .tlui-slider {
@@ -2225,7 +2225,7 @@ it from receiving any pointer events or affecting the cursor. */
2225
2225
  content: '';
2226
2226
  height: 3px;
2227
2227
  width: 100%;
2228
- background-color: var(--color-muted-1);
2228
+ background-color: var(--tl-color-muted-1);
2229
2229
  border-radius: 14px;
2230
2230
  }
2231
2231
 
@@ -2234,7 +2234,7 @@ it from receiving any pointer events or affecting the cursor. */
2234
2234
  top: calc(50% - 2px);
2235
2235
  left: 0px;
2236
2236
  height: 3px;
2237
- background-color: var(--color-selected);
2237
+ background-color: var(--tl-color-selected);
2238
2238
  border-radius: 14px;
2239
2239
  }
2240
2240
 
@@ -2246,16 +2246,16 @@ it from receiving any pointer events or affecting the cursor. */
2246
2246
  height: 18px;
2247
2247
  position: relative;
2248
2248
  top: -1px;
2249
- background-color: var(--color-panel);
2249
+ background-color: var(--tl-color-panel);
2250
2250
  border-radius: 999px;
2251
- box-shadow: inset 0px 0px 0px 2px var(--color-text-1);
2251
+ box-shadow: inset 0px 0px 0px 2px var(--tl-color-text-1);
2252
2252
  }
2253
2253
 
2254
2254
  .tlui-slider__thumb:active {
2255
2255
  cursor: grabbing;
2256
2256
  box-shadow:
2257
- inset 0px 0px 0px 2px var(--color-text-1),
2258
- var(--shadow-1);
2257
+ inset 0px 0px 0px 2px var(--tl-color-text-1),
2258
+ var(--tl-shadow-1);
2259
2259
  }
2260
2260
 
2261
2261
  /* ---------------------- Input --------------------- */
@@ -2264,7 +2264,7 @@ it from receiving any pointer events or affecting the cursor. */
2264
2264
  background: none;
2265
2265
  margin: 0px;
2266
2266
  position: relative;
2267
- z-index: var(--layer-above);
2267
+ z-index: var(--tl-layer-above);
2268
2268
  height: 40px;
2269
2269
  max-height: 40px;
2270
2270
  display: flex;
@@ -2273,8 +2273,8 @@ it from receiving any pointer events or affecting the cursor. */
2273
2273
  font-family: inherit;
2274
2274
  font-size: 12px;
2275
2275
  font-weight: inherit;
2276
- color: var(--color-text-1);
2277
- padding: var(--space-4);
2276
+ color: var(--tl-color-text-1);
2277
+ padding: var(--tl-space-4);
2278
2278
  padding-left: 0px;
2279
2279
  border: none;
2280
2280
  outline: none;
@@ -2290,8 +2290,8 @@ it from receiving any pointer events or affecting the cursor. */
2290
2290
  height: 44px;
2291
2291
  display: flex;
2292
2292
  align-items: center;
2293
- gap: var(--space-4);
2294
- color: var(--color-text);
2293
+ gap: var(--tl-space-4);
2294
+ color: var(--tl-color-text);
2295
2295
  }
2296
2296
 
2297
2297
  .tlui-input__wrapper > .tlui-icon {
@@ -2323,7 +2323,7 @@ it from receiving any pointer events or affecting the cursor. */
2323
2323
  grid-auto-columns: minmax(1em, auto);
2324
2324
  align-self: bottom;
2325
2325
  color: currentColor;
2326
- margin-left: var(--space-4);
2326
+ margin-left: var(--tl-space-4);
2327
2327
  }
2328
2328
 
2329
2329
  .tlui-kbd > span {
@@ -2340,13 +2340,13 @@ it from receiving any pointer events or affecting the cursor. */
2340
2340
  }
2341
2341
 
2342
2342
  .tlui-kbd:not(:last-child) {
2343
- margin-right: var(--space-2);
2343
+ margin-right: var(--tl-space-2);
2344
2344
  }
2345
2345
 
2346
2346
  /* Focus Mode Button */
2347
2347
 
2348
2348
  .tlui-focus-button {
2349
- z-index: var(--layer-panels);
2349
+ z-index: var(--tl-layer-panels);
2350
2350
  pointer-events: all;
2351
2351
  }
2352
2352
 
@@ -2357,16 +2357,16 @@ it from receiving any pointer events or affecting the cursor. */
2357
2357
  }
2358
2358
 
2359
2359
  .tlui-menu {
2360
- z-index: var(--layer-menus);
2360
+ z-index: var(--tl-layer-menus);
2361
2361
  height: fit-content;
2362
2362
  width: fit-content;
2363
- border-radius: var(--radius-3);
2363
+ border-radius: var(--tl-radius-3);
2364
2364
  pointer-events: all;
2365
2365
  touch-action: auto;
2366
2366
  overflow-y: auto;
2367
2367
  overscroll-behavior: none;
2368
- background-color: var(--color-panel);
2369
- box-shadow: var(--shadow-3);
2368
+ background-color: var(--tl-color-panel);
2369
+ box-shadow: var(--tl-shadow-3);
2370
2370
  }
2371
2371
 
2372
2372
  .tlui-menu::-webkit-scrollbar {
@@ -2384,7 +2384,7 @@ it from receiving any pointer events or affecting the cursor. */
2384
2384
  }
2385
2385
 
2386
2386
  .tlui-menu__group {
2387
- border-bottom: 1px solid var(--color-divider);
2387
+ border-bottom: 1px solid var(--tl-color-divider);
2388
2388
  }
2389
2389
  .tlui-menu__group:nth-last-of-type(1) {
2390
2390
  border-bottom: none;
@@ -2394,23 +2394,23 @@ it from receiving any pointer events or affecting the cursor. */
2394
2394
 
2395
2395
  .tlui-menu__submenu__trigger[data-state='open']::after {
2396
2396
  opacity: 1;
2397
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2397
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2398
2398
  }
2399
2399
 
2400
2400
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
2401
2401
  opacity: 1;
2402
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2402
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2403
2403
  }
2404
2404
 
2405
2405
  @media (hover: hover) {
2406
2406
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
2407
2407
  opacity: 1;
2408
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2408
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2409
2409
  }
2410
2410
 
2411
2411
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
2412
2412
  opacity: 1;
2413
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2413
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2414
2414
  }
2415
2415
  }
2416
2416
 
@@ -2435,7 +2435,7 @@ it from receiving any pointer events or affecting the cursor. */
2435
2435
  .tlui-menu-click-capture {
2436
2436
  position: fixed;
2437
2437
  inset: 0;
2438
- z-index: var(--layer-menu-click-capture);
2438
+ z-index: var(--tl-layer-menu-click-capture);
2439
2439
  }
2440
2440
 
2441
2441
  /* --------------------- Popover -------------------- */
@@ -2451,10 +2451,10 @@ it from receiving any pointer events or affecting the cursor. */
2451
2451
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
2452
2452
  margin: 0px;
2453
2453
  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);
2454
+ border-radius: var(--tl-radius-3);
2455
+ background-color: var(--tl-color-panel);
2456
+ box-shadow: var(--tl-shadow-3);
2457
+ z-index: var(--tl-layer-menus);
2458
2458
  overflow: hidden;
2459
2459
  overflow-y: auto;
2460
2460
  touch-action: auto;
@@ -2467,22 +2467,22 @@ it from receiving any pointer events or affecting the cursor. */
2467
2467
 
2468
2468
  .tlui-menu-zone {
2469
2469
  position: relative;
2470
- z-index: var(--layer-panels);
2470
+ z-index: var(--tl-layer-panels);
2471
2471
  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);
2472
+ border-right: 2px solid var(--tl-color-background);
2473
+ border-bottom: 2px solid var(--tl-color-background);
2474
+ border-bottom-right-radius: var(--tl-radius-4);
2475
+ background-color: var(--tl-color-low);
2476
2476
  }
2477
2477
 
2478
2478
  .tlui-menu-zone *[data-state='open']::after {
2479
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2479
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2480
2480
  opacity: 1;
2481
2481
  }
2482
2482
 
2483
2483
  @media (hover: hover) {
2484
2484
  .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%);
2485
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2486
2486
  opacity: 1;
2487
2487
  }
2488
2488
  }
@@ -2508,8 +2508,8 @@ it from receiving any pointer events or affecting the cursor. */
2508
2508
  align-items: center;
2509
2509
  width: 100%;
2510
2510
  height: 40px;
2511
- padding-left: var(--space-4);
2512
- border-bottom: 1px solid var(--color-divider);
2511
+ padding-left: var(--tl-space-4);
2512
+ border-bottom: 1px solid var(--tl-color-divider);
2513
2513
  }
2514
2514
 
2515
2515
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -2517,7 +2517,7 @@ it from receiving any pointer events or affecting the cursor. */
2517
2517
  }
2518
2518
 
2519
2519
  .tlui-page-menu__header__title {
2520
- color: var(--color-text);
2520
+ color: var(--tl-color-text);
2521
2521
  font-size: 12px;
2522
2522
  flex-grow: 2;
2523
2523
  }
@@ -2602,7 +2602,7 @@ it from receiving any pointer events or affecting the cursor. */
2602
2602
  display: inline-flex;
2603
2603
  align-items: center;
2604
2604
  justify-content: center;
2605
- color: var(--color-text);
2605
+ color: var(--tl-color-text);
2606
2606
  }
2607
2607
 
2608
2608
  .tlui-page_menu__item__sortable {
@@ -2615,7 +2615,7 @@ it from receiving any pointer events or affecting the cursor. */
2615
2615
  flex-direction: row;
2616
2616
  align-items: center;
2617
2617
  overflow: hidden;
2618
- z-index: var(--layer-above);
2618
+ z-index: var(--tl-layer-above);
2619
2619
  }
2620
2620
 
2621
2621
  .tlui-page_menu__item__sortable__title {
@@ -2627,7 +2627,7 @@ it from receiving any pointer events or affecting the cursor. */
2627
2627
  }
2628
2628
 
2629
2629
  .tlui-page_menu__item__sortable:focus-visible {
2630
- z-index: var(--layer-focused-input);
2630
+ z-index: var(--tl-layer-focused-input);
2631
2631
  }
2632
2632
 
2633
2633
  .tlui-page_menu__item__sortable__handle {
@@ -2636,7 +2636,7 @@ it from receiving any pointer events or affecting the cursor. */
2636
2636
  min-width: 0px;
2637
2637
  height: 40px;
2638
2638
  cursor: grab;
2639
- color: var(--color-text-3);
2639
+ color: var(--tl-color-text-3);
2640
2640
  flex-shrink: 0;
2641
2641
  margin-right: -9px;
2642
2642
  }
@@ -2678,13 +2678,13 @@ it from receiving any pointer events or affecting the cursor. */
2678
2678
  }
2679
2679
 
2680
2680
  .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%);
2681
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2682
2682
  opacity: 1;
2683
2683
  }
2684
2684
 
2685
2685
  @media (hover: hover) {
2686
2686
  .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%);
2687
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2688
2688
  opacity: 1;
2689
2689
  }
2690
2690
  }
@@ -2720,7 +2720,7 @@ it from receiving any pointer events or affecting the cursor. */
2720
2720
  top: 48px;
2721
2721
  left: -9999px;
2722
2722
  padding: 8px 16px;
2723
- z-index: var(--layer-toasts);
2723
+ z-index: var(--tl-layer-toasts);
2724
2724
  }
2725
2725
 
2726
2726
  .tl-skip-to-main-content:focus {
@@ -2732,11 +2732,11 @@ it from receiving any pointer events or affecting the cursor. */
2732
2732
  .tlui-offline-indicator {
2733
2733
  display: flex;
2734
2734
  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);
2735
+ gap: var(--tl-space-3);
2736
+ color: var(--tl-color-text);
2737
+ background-color: var(--tl-color-low);
2738
+ border: 3px solid var(--tl-color-background);
2739
+ padding: 0px var(--tl-space-5);
2740
2740
  height: 42px;
2741
2741
  align-items: center;
2742
2742
  justify-content: center;
@@ -2751,10 +2751,10 @@ it from receiving any pointer events or affecting the cursor. */
2751
2751
  /* ------------------- Style panel ------------------ */
2752
2752
 
2753
2753
  .tlui-style-panel__wrapper {
2754
- box-shadow: var(--shadow-2);
2755
- border-radius: var(--radius-3);
2754
+ box-shadow: var(--tl-shadow-2);
2755
+ border-radius: var(--tl-radius-3);
2756
2756
  pointer-events: all;
2757
- background-color: var(--color-panel);
2757
+ background-color: var(--tl-color-panel);
2758
2758
  height: fit-content;
2759
2759
  max-height: 100%;
2760
2760
  margin: 8px;
@@ -2763,7 +2763,7 @@ it from receiving any pointer events or affecting the cursor. */
2763
2763
  overscroll-behavior: none;
2764
2764
  overflow-y: auto;
2765
2765
  overflow-x: hidden;
2766
- color: var(--color-text);
2766
+ color: var(--tl-color-text);
2767
2767
  }
2768
2768
  /* if the style panel is the only child (ie no share menu), increase the margin */
2769
2769
  .tlui-style-panel__wrapper:only-child {
@@ -2772,12 +2772,18 @@ it from receiving any pointer events or affecting the cursor. */
2772
2772
 
2773
2773
  .tlui-style-panel {
2774
2774
  position: relative;
2775
- z-index: var(--layer-panels);
2775
+ z-index: var(--tl-layer-panels);
2776
2776
  pointer-events: all;
2777
2777
  width: 148px;
2778
2778
  max-width: 148px;
2779
2779
  }
2780
2780
 
2781
+ .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
2782
+ border-radius: 10px;
2783
+ outline: 2px solid var(--tl-color-text);
2784
+ outline-offset: -5px;
2785
+ }
2786
+
2781
2787
  .tlui-style-panel::-webkit-scrollbar {
2782
2788
  display: none;
2783
2789
  }
@@ -2793,7 +2799,7 @@ it from receiving any pointer events or affecting the cursor. */
2793
2799
  }
2794
2800
 
2795
2801
  .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
2796
- border-bottom: 1px solid var(--color-divider);
2802
+ border-bottom: 1px solid var(--tl-color-divider);
2797
2803
  }
2798
2804
 
2799
2805
  .tlui-style-panel__section:empty {
@@ -2802,23 +2808,19 @@ it from receiving any pointer events or affecting the cursor. */
2802
2808
 
2803
2809
  .tlui-style-panel__section__common:not(:only-child) {
2804
2810
  margin-bottom: 7px;
2805
- border-bottom: 1px solid var(--color-divider);
2811
+ border-bottom: 1px solid var(--tl-color-divider);
2806
2812
  }
2807
2813
 
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;
2814
+ .tlui-style-panel__dropdown-picker:only-child {
2815
+ width: 100%;
2814
2816
  }
2815
2817
 
2816
2818
  .tlui-style-panel__double-select-picker {
2817
2819
  display: flex;
2818
2820
  grid-template-columns: 1fr auto;
2819
2821
  align-items: center;
2820
- padding-left: var(--space-4);
2821
- color: var(--color-text-1);
2822
+ padding-left: var(--tl-space-4);
2823
+ color: var(--tl-color-text-1);
2822
2824
  font-size: 12px;
2823
2825
  }
2824
2826
 
@@ -2832,25 +2834,48 @@ it from receiving any pointer events or affecting the cursor. */
2832
2834
 
2833
2835
  .tlui-style-panel .tlui-button[data-state='open']::after {
2834
2836
  opacity: 1;
2835
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2837
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2836
2838
  }
2837
2839
 
2838
2840
  @media (hover: hover) {
2841
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
2842
+ background: none;
2843
+ }
2839
2844
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
2840
2845
  opacity: 1;
2841
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2846
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2842
2847
  }
2843
2848
  }
2844
2849
 
2850
+ /* Accessibility subheadings */
2851
+
2852
+ .tlui-style-panel__section .tlui-style-panel__subheading,
2853
+ .tlui-style-panel__section__common .tlui-style-panel__subheading,
2854
+ .tlui-style-panel__subheading + .tlui-slider__container {
2855
+ margin: 0;
2856
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
2857
+ font-size: 12px;
2858
+ font-weight: inherit;
2859
+ line-height: inherit;
2860
+ }
2861
+
2862
+ .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
2863
+ padding-top: var(--tl-space-3);
2864
+ }
2865
+
2866
+ .tlui-style-panel__subheading + .tlui-slider__container {
2867
+ padding-top: 0px;
2868
+ }
2869
+
2845
2870
  /* --------------------- Bottom --------------------- */
2846
2871
 
2847
2872
  .tlui-layout__bottom {
2848
2873
  grid-row: 2;
2874
+ width: 100%;
2849
2875
  }
2850
2876
 
2851
2877
  .tlui-layout__bottom__main {
2852
2878
  width: 100%;
2853
- position: relative;
2854
2879
  display: flex;
2855
2880
  align-items: flex-end;
2856
2881
  justify-content: center;
@@ -2862,11 +2887,10 @@ it from receiving any pointer events or affecting the cursor. */
2862
2887
  display: flex;
2863
2888
  width: min-content;
2864
2889
  flex-direction: column;
2865
- z-index: var(--layer-panels);
2890
+ z-index: var(--tl-layer-panels);
2866
2891
  pointer-events: all;
2867
2892
  position: absolute;
2868
2893
  left: 0px;
2869
- bottom: 0px;
2870
2894
  }
2871
2895
 
2872
2896
  .tlui-navigation-panel::before {
@@ -2876,10 +2900,10 @@ it from receiving any pointer events or affecting the cursor. */
2876
2900
  z-index: -1;
2877
2901
  inset: -2px -2px 0px 0px;
2878
2902
  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);
2903
+ border-top: 2px solid var(--tl-color-background);
2904
+ border-right: 2px solid var(--tl-color-background);
2905
+ border-top-right-radius: var(--tl-radius-4);
2906
+ background-color: var(--tl-color-low);
2883
2907
  }
2884
2908
 
2885
2909
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -2893,7 +2917,7 @@ it from receiving any pointer events or affecting the cursor. */
2893
2917
  height: 96px;
2894
2918
  min-height: 96px;
2895
2919
  overflow: hidden;
2896
- padding: var(--space-3);
2920
+ padding: var(--tl-space-3);
2897
2921
  padding-top: 0px;
2898
2922
  }
2899
2923
 
@@ -2906,114 +2930,220 @@ it from receiving any pointer events or affecting the cursor. */
2906
2930
  /* --------------------- Toolbar -------------------- */
2907
2931
 
2908
2932
  /* Wide container */
2909
- .tlui-toolbar {
2933
+ .tlui-main-toolbar {
2910
2934
  grid-column: 1 / span 3;
2911
2935
  grid-row: 1;
2912
2936
  display: flex;
2913
2937
  align-items: center;
2914
2938
  justify-content: center;
2915
2939
  flex-grow: 2;
2916
- padding-bottom: calc(var(--space-3) + var(--sab));
2940
+ }
2941
+
2942
+ .tlui-main-toolbar--horizontal {
2943
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
2944
+ max-width: 100%;
2945
+ }
2946
+
2947
+ .tlui-main-toolbar--vertical {
2948
+ position: absolute;
2949
+ left: 0;
2950
+ top: 90px; /* height of page menu + 'back to content' button */
2951
+ bottom: 140px; /* height of expanded mini-map */
2952
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
2953
+ }
2954
+
2955
+ [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
2956
+ bottom: 90px; /* collapsed mini-map, but same as top to keep things looking even */
2917
2957
  }
2918
2958
 
2919
2959
  /* Centered Content */
2920
- .tlui-toolbar__inner {
2960
+ .tlui-main-toolbar__inner {
2921
2961
  position: relative;
2922
2962
  width: fit-content;
2923
2963
  display: flex;
2924
- gap: var(--space-3);
2925
- align-items: flex-end;
2964
+ gap: var(--tl-space-3);
2965
+ align-items: flex-start;
2966
+ }
2967
+
2968
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__inner {
2969
+ flex-direction: column;
2926
2970
  }
2927
2971
 
2928
- .tlui-toolbar__left {
2972
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__left {
2929
2973
  width: fit-content;
2930
2974
  }
2975
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__left {
2976
+ display: flex;
2977
+ height: fit-content;
2978
+ }
2931
2979
 
2932
2980
  /* Row of controls + lock button */
2933
- .tlui-toolbar__extras {
2981
+ .tlui-main-toolbar__extras {
2934
2982
  position: relative;
2935
- z-index: var(--layer-above);
2936
- width: 100%;
2983
+ z-index: var(--tl-layer-above);
2937
2984
  pointer-events: none;
2938
- top: 6px;
2939
- height: 48px;
2985
+ align-self: stretch;
2940
2986
  }
2941
2987
 
2942
- .tlui-toolbar__extras:empty {
2988
+ .tlui-main-toolbar__extras:empty {
2943
2989
  display: none;
2944
2990
  }
2945
2991
 
2946
- .tlui-toolbar__extras__controls {
2947
- display: flex;
2992
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras {
2993
+ height: 48px;
2994
+ top: 6px;
2995
+ }
2996
+
2997
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras {
2998
+ width: 48px;
2999
+ order: 1;
3000
+ }
3001
+
3002
+ .tlui-main-toolbar__extras__controls {
2948
3003
  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);
3004
+ z-index: var(--tl-layer-above);
3005
+ background-color: var(--tl-color-low);
3006
+ border: 2px solid var(--tl-color-background);
3007
+ pointer-events: all;
3008
+ }
3009
+
3010
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
3011
+ border-top-left-radius: var(--tl-radius-4);
3012
+ border-top-right-radius: var(--tl-radius-4);
2955
3013
  margin-left: 8px;
2956
3014
  margin-right: 0px;
2957
- pointer-events: all;
2958
3015
  width: fit-content;
2959
3016
  }
2960
3017
 
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);
3018
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
3019
+ border-top-right-radius: var(--tl-radius-4);
3020
+ border-bottom-right-radius: var(--tl-radius-4);
3021
+ margin-top: 8px;
3022
+ margin-left: -2px;
3023
+ margin-bottom: 0px;
3024
+ width: fit-content;
3025
+ }
3026
+
3027
+ .tlui-main-toolbar__tools {
3028
+ border-radius: var(--tl-radius-4);
3029
+ z-index: var(--tl-layer-panels);
2967
3030
  pointer-events: all;
2968
3031
  position: relative;
2969
- background: var(--color-panel);
2970
- box-shadow: var(--shadow-2);
3032
+ background: var(--tl-color-panel);
3033
+ box-shadow: var(--tl-shadow-2);
2971
3034
  }
2972
- .tlui-toolbar__tools__list {
2973
- display: flex;
2974
- flex-direction: row;
2975
- align-items: center;
3035
+
3036
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
3037
+ align-self: flex-end;
3038
+ }
3039
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__mobile-style-panel {
3040
+ align-self: flex-start;
2976
3041
  }
2977
3042
 
2978
- .tlui-toolbar__overflow {
3043
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
2979
3044
  width: 40px;
3045
+ margin-left: 2px;
3046
+ }
3047
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__overflow {
3048
+ height: 40px;
3049
+ margin-top: 2px;
2980
3050
  }
2981
3051
 
2982
- .tlui-layout__mobile .tlui-toolbar__overflow {
3052
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
2983
3053
  width: 32px;
2984
3054
  padding: 0px;
2985
3055
  }
2986
3056
 
2987
- .tlui-toolbar *[data-state='open']::after {
2988
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
3057
+ .tlui-main-toolbar--horizontal *[data-state='open']::after {
3058
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2989
3059
  opacity: 1;
2990
3060
  }
3061
+ .tlui-main-toolbar--vertical *[data-state='open']::after {
3062
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3063
+ opacity: 1;
3064
+ }
3065
+
3066
+ .tlui-main-toolbar__overflow-content {
3067
+ touch-action: none;
3068
+ }
3069
+
3070
+ .tlui-main-toolbar__tools [data-toolbar-visible='false'],
3071
+ .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
3072
+ display: none;
3073
+ }
3074
+
3075
+ .tlui-main-toolbar__group:empty {
3076
+ display: none;
3077
+ }
3078
+ .tlui-row.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3079
+ border-right: 1px solid var(--color-divider);
3080
+ margin-right: 2px;
3081
+ }
3082
+ .tlui-column.tlui-main-toolbar__group:not(
3083
+ :nth-last-child(-n + 1 of [data-toolbar-visible='true'])
3084
+ ) {
3085
+ border-bottom: 1px solid var(--color-divider);
3086
+ margin-bottom: 2px;
3087
+ }
3088
+ .tlui-grid.tlui-main-toolbar__group {
3089
+ grid-column: 1 / span 4;
3090
+ }
3091
+ .tlui-grid.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3092
+ border-bottom: 1px solid var(--color-divider);
3093
+ margin-bottom: 2px;
3094
+ }
2991
3095
 
2992
3096
  @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%);
3097
+ .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
3098
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2995
3099
  opacity: 1;
2996
3100
  }
3101
+ .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
3102
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
3103
+ opacity: 1;
3104
+ }
3105
+ }
3106
+
3107
+ /* ------------------- Tooltip -------------------- */
3108
+
3109
+ .tlui-tooltip {
3110
+ font-size: 12px;
3111
+ padding: 2px 8px;
3112
+ border-radius: 4px;
3113
+ background-color: var(--tl-color-tooltip);
3114
+ box-shadow: none;
3115
+ color: var(--tl-color-text-shadow);
3116
+ max-width: 400px;
3117
+ width: fit-content;
3118
+ text-align: center;
3119
+ will-change: transform, opacity;
3120
+ z-index: 2;
2997
3121
  }
2998
3122
 
2999
- .tlui-layout__mobile .tlui-toolbar {
3000
- transition: transform 0.15s ease-out 0.05s;
3123
+ .tlui-tooltip__arrow {
3124
+ fill: var(--tl-color-tooltip);
3125
+ will-change: opacity;
3126
+ }
3127
+
3128
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
3129
+ z-index: var(--tl-layer-toasts) !important;
3130
+ pointer-events: none;
3001
3131
  }
3002
3132
 
3003
3133
  /* ------------------- Debug panel ------------------ */
3004
3134
 
3005
3135
  .tlui-debug-panel {
3006
- background-color: var(--color-low);
3136
+ background-color: var(--tl-color-low);
3007
3137
  width: 100%;
3008
3138
  display: grid;
3009
3139
  align-items: center;
3010
3140
  grid-template-columns: 1fr auto auto auto;
3011
3141
  justify-content: space-between;
3012
- padding-left: var(--space-4);
3013
- border-top: 1px solid var(--color-background);
3142
+ padding-left: var(--tl-space-4);
3143
+ border-top: 1px solid var(--tl-color-background);
3014
3144
  font-size: 12px;
3015
- color: var(--color-text-1);
3016
- z-index: var(--layer-panels);
3145
+ color: var(--tl-color-text-1);
3146
+ z-index: var(--tl-layer-panels);
3017
3147
  pointer-events: all;
3018
3148
  }
3019
3149
 
@@ -3029,7 +3159,7 @@ it from receiving any pointer events or affecting the cursor. */
3029
3159
 
3030
3160
  .tlui-debug-panel__fps__slow {
3031
3161
  font-weight: bold;
3032
- color: var(--color-danger);
3162
+ color: var(--tl-color-danger);
3033
3163
  }
3034
3164
 
3035
3165
  .tlui-a11y-audit {
@@ -3039,7 +3169,7 @@ it from receiving any pointer events or affecting the cursor. */
3039
3169
  .tlui-a11y-audit th,
3040
3170
  .tlui-a11y-audit td {
3041
3171
  padding: 8px;
3042
- border: 1px solid var(--color-low-border);
3172
+ border: 1px solid var(--tl-color-low-border);
3043
3173
  }
3044
3174
 
3045
3175
  /* --------------------- Toasts --------------------- */
@@ -3052,10 +3182,10 @@ it from receiving any pointer events or affecting the cursor. */
3052
3182
  align-items: flex-end;
3053
3183
  justify-content: flex-end;
3054
3184
  flex-direction: column;
3055
- gap: var(--space-3);
3185
+ gap: var(--tl-space-3);
3056
3186
  pointer-events: none;
3057
- padding: 0px var(--space-3) 64px 0px;
3058
- z-index: var(--layer-toasts);
3187
+ padding: 0px var(--tl-space-3) 64px 0px;
3188
+ z-index: var(--tl-layer-toasts);
3059
3189
  }
3060
3190
 
3061
3191
  .tlui-toast__viewport > * {
@@ -3064,34 +3194,34 @@ it from receiving any pointer events or affecting the cursor. */
3064
3194
 
3065
3195
  .tlui-toast__icon {
3066
3196
  padding-top: 11px;
3067
- padding-left: var(--space-4);
3068
- color: var(--color-text-1);
3197
+ padding-left: var(--tl-space-4);
3198
+ color: var(--tl-color-text-1);
3069
3199
  }
3070
3200
 
3071
3201
  .tlui-toast__container {
3072
3202
  min-width: 200px;
3073
3203
  display: flex;
3074
3204
  flex-direction: row;
3075
- background-color: var(--color-panel);
3076
- box-shadow: var(--shadow-2);
3077
- border-radius: var(--radius-3);
3205
+ background-color: var(--tl-color-panel);
3206
+ box-shadow: var(--tl-shadow-2);
3207
+ border-radius: var(--tl-radius-3);
3078
3208
  font-size: 12px;
3079
3209
  }
3080
3210
 
3081
3211
  .tlui-toast__container[data-severity='success'] .tlui-icon {
3082
- color: var(--color-success);
3212
+ color: var(--tl-color-success);
3083
3213
  }
3084
3214
 
3085
3215
  .tlui-toast__container[data-severity='info'] .tlui-icon {
3086
- color: var(--color-info);
3216
+ color: var(--tl-color-info);
3087
3217
  }
3088
3218
 
3089
3219
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
3090
- color: var(--color-warning);
3220
+ color: var(--tl-color-warning);
3091
3221
  }
3092
3222
 
3093
3223
  .tlui-toast__container[data-severity='error'] .tlui-icon {
3094
- color: var(--color-danger);
3224
+ color: var(--tl-color-danger);
3095
3225
  }
3096
3226
 
3097
3227
  .tlui-toast__main {
@@ -3100,27 +3230,27 @@ it from receiving any pointer events or affecting the cursor. */
3100
3230
  }
3101
3231
 
3102
3232
  .tlui-toast__content {
3103
- padding: var(--space-4);
3233
+ padding: var(--tl-space-4);
3104
3234
  display: flex;
3105
3235
  line-height: 1.4;
3106
3236
  flex-direction: column;
3107
- gap: var(--space-3);
3237
+ gap: var(--tl-space-3);
3108
3238
  }
3109
3239
 
3110
3240
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
3111
- padding-bottom: var(--space-2);
3241
+ padding-bottom: var(--tl-space-2);
3112
3242
  }
3113
3243
 
3114
3244
  .tlui-toast__title {
3115
3245
  font-weight: bold;
3116
- color: var(--color-text-1);
3246
+ color: var(--tl-color-text-1);
3117
3247
  /* this makes the default toast look better */
3118
3248
  line-height: 16px;
3119
3249
  }
3120
3250
 
3121
3251
  .tlui-toast__description {
3122
- color: var(--color-text-1);
3123
- padding: var(--space-3);
3252
+ color: var(--tl-color-text-1);
3253
+ padding: var(--tl-space-3);
3124
3254
  margin: 0px;
3125
3255
  padding: 0px;
3126
3256
  }
@@ -3172,14 +3302,14 @@ it from receiving any pointer events or affecting the cursor. */
3172
3302
  left: 0px;
3173
3303
  width: 100%;
3174
3304
  height: 100%;
3175
- z-index: var(--layer-canvas-overlays);
3176
- background-color: var(--color-overlay);
3305
+ z-index: var(--tl-layer-canvas-overlays);
3306
+ background-color: var(--tl-color-overlay);
3177
3307
  pointer-events: all;
3178
3308
  animation: tl-fade-in 0.12s ease-out;
3179
3309
  display: grid;
3180
3310
  place-items: center;
3181
3311
  overflow-y: auto;
3182
- padding: 0px var(--space-3);
3312
+ padding: 0px var(--tl-space-3);
3183
3313
  }
3184
3314
 
3185
3315
  .tlui-dialog__content {
@@ -3187,9 +3317,9 @@ it from receiving any pointer events or affecting the cursor. */
3187
3317
  flex-direction: column;
3188
3318
  position: relative;
3189
3319
  cursor: default;
3190
- background-color: var(--color-panel);
3191
- box-shadow: var(--shadow-3);
3192
- border-radius: var(--radius-3);
3320
+ background-color: var(--tl-color-panel);
3321
+ box-shadow: var(--tl-shadow-3);
3322
+ border-radius: var(--tl-radius-3);
3193
3323
  font-size: 12px;
3194
3324
  overflow: hidden;
3195
3325
  min-width: 300px;
@@ -3202,9 +3332,9 @@ it from receiving any pointer events or affecting the cursor. */
3202
3332
  display: flex;
3203
3333
  align-items: center;
3204
3334
  flex: 0;
3205
- z-index: var(--layer-header-footer);
3206
- padding-left: var(--space-4);
3207
- color: var(--color-text);
3335
+ z-index: var(--tl-layer-header-footer);
3336
+ padding-left: var(--tl-space-4);
3337
+ color: var(--tl-color-text);
3208
3338
  height: 40px;
3209
3339
  }
3210
3340
 
@@ -3213,7 +3343,7 @@ it from receiving any pointer events or affecting the cursor. */
3213
3343
  font-weight: inherit;
3214
3344
  font-size: 12px;
3215
3345
  margin: 0px;
3216
- color: var(--color-text-1);
3346
+ color: var(--tl-color-text-1);
3217
3347
  }
3218
3348
 
3219
3349
  .tlui-dialog__header__close {
@@ -3221,16 +3351,16 @@ it from receiving any pointer events or affecting the cursor. */
3221
3351
  }
3222
3352
 
3223
3353
  .tlui-dialog__body {
3224
- padding: var(--space-4) var(--space-4);
3354
+ padding: var(--tl-space-4) var(--tl-space-4);
3225
3355
  flex: 0 1;
3226
3356
  overflow-y: auto;
3227
3357
  overflow-x: hidden;
3228
- color: var(--color-text-1);
3358
+ color: var(--tl-color-text-1);
3229
3359
  user-select: all;
3230
3360
  -webkit-user-select: text;
3231
3361
  }
3232
3362
  .tlui-dialog__body a {
3233
- color: var(--color-selected);
3363
+ color: var(--tl-color-selected);
3234
3364
  }
3235
3365
 
3236
3366
  .tlui-dialog__body ul,
@@ -3238,13 +3368,13 @@ it from receiving any pointer events or affecting the cursor. */
3238
3368
  padding-left: 16px;
3239
3369
  display: flex;
3240
3370
  flex-direction: column;
3241
- gap: var(--space-2);
3371
+ gap: var(--tl-space-2);
3242
3372
  }
3243
3373
 
3244
3374
  .tlui-dialog__footer {
3245
3375
  position: relative;
3246
3376
  min-height: 12px;
3247
- z-index: var(--layer-header-footer);
3377
+ z-index: var(--tl-layer-header-footer);
3248
3378
  }
3249
3379
 
3250
3380
  .tlui-dialog__footer__actions {
@@ -3264,15 +3394,15 @@ it from receiving any pointer events or affecting the cursor. */
3264
3394
  .tlui-edit-link-dialog {
3265
3395
  display: flex;
3266
3396
  flex-direction: column;
3267
- gap: var(--space-4);
3268
- color: var(--color-text);
3397
+ gap: var(--tl-space-4);
3398
+ color: var(--tl-color-text);
3269
3399
  }
3270
3400
 
3271
3401
  .tlui-edit-link-dialog__input {
3272
- background-color: var(--color-muted-2);
3402
+ background-color: var(--tl-color-muted-2);
3273
3403
  flex-grow: 2;
3274
- border-radius: var(--radius-2);
3275
- padding: 0px var(--space-4);
3404
+ border-radius: var(--tl-radius-2);
3405
+ padding: 0px var(--tl-space-4);
3276
3406
  }
3277
3407
 
3278
3408
  /* Embed Dialog */
@@ -3280,15 +3410,15 @@ it from receiving any pointer events or affecting the cursor. */
3280
3410
  .tlui-embed__spacer {
3281
3411
  flex-grow: 2;
3282
3412
  min-height: 0px;
3283
- margin-left: calc(-1 * var(--space-4));
3284
- margin-top: calc(-1 * var(--space-4));
3413
+ margin-left: calc(-1 * var(--tl-space-4));
3414
+ margin-top: calc(-1 * var(--tl-space-4));
3285
3415
  pointer-events: none;
3286
3416
  }
3287
3417
 
3288
3418
  .tlui-embed-dialog__list {
3289
3419
  display: flex;
3290
3420
  flex-direction: column;
3291
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
3421
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
3292
3422
  }
3293
3423
 
3294
3424
  .tlui-embed-dialog__item__image {
@@ -3300,49 +3430,49 @@ it from receiving any pointer events or affecting the cursor. */
3300
3430
  background-size: contain;
3301
3431
  background-repeat: no-repeat;
3302
3432
  background-position: center center;
3303
- background-color: var(--color-selected-contrast);
3304
- border-radius: var(--radius-1);
3433
+ background-color: var(--tl-color-selected-contrast);
3434
+ border-radius: var(--tl-radius-1);
3305
3435
  }
3306
3436
 
3307
3437
  .tlui-embed-dialog__enter {
3308
3438
  display: flex;
3309
3439
  flex-direction: column;
3310
- gap: var(--space-4);
3311
- color: var(--color-text-1);
3440
+ gap: var(--tl-space-4);
3441
+ color: var(--tl-color-text-1);
3312
3442
  }
3313
3443
 
3314
3444
  .tlui-embed-dialog__input {
3315
- background-color: var(--color-muted-2);
3445
+ background-color: var(--tl-color-muted-2);
3316
3446
  flex-grow: 2;
3317
- border-radius: var(--radius-2);
3318
- padding: 0px var(--space-4);
3447
+ border-radius: var(--tl-radius-2);
3448
+ padding: 0px var(--tl-space-4);
3319
3449
  }
3320
3450
 
3321
3451
  .tlui-embed-dialog__warning {
3322
- color: var(--color-danger);
3452
+ color: var(--tl-color-danger);
3323
3453
  text-shadow: none;
3324
3454
  }
3325
3455
 
3326
3456
  .tlui-embed-dialog__instruction__link {
3327
3457
  display: flex;
3328
- gap: var(--space-1);
3329
- margin-top: var(--space-4);
3458
+ gap: var(--tl-space-1);
3459
+ margin-top: var(--tl-space-4);
3330
3460
  }
3331
3461
 
3332
3462
  .tlui-embed-dialog__enter a {
3333
- color: var(--color-text-1);
3463
+ color: var(--tl-color-text-1);
3334
3464
  }
3335
3465
 
3336
3466
  /* --------------- Keyboard shortcuts --------------- */
3337
3467
 
3338
3468
  .tlui-shortcuts-dialog__header {
3339
- border-bottom: 1px solid var(--color-divider);
3469
+ border-bottom: 1px solid var(--tl-color-divider);
3340
3470
  }
3341
3471
 
3342
3472
  .tlui-shortcuts-dialog__body {
3343
3473
  position: relative;
3344
3474
  columns: 3;
3345
- column-gap: var(--space-9);
3475
+ column-gap: var(--tl-space-9);
3346
3476
  pointer-events: all;
3347
3477
  touch-action: auto;
3348
3478
 
@@ -3360,14 +3490,14 @@ it from receiving any pointer events or affecting the cursor. */
3360
3490
 
3361
3491
  .tlui-shortcuts-dialog__group {
3362
3492
  break-inside: avoid-column;
3363
- padding-bottom: var(--space-6);
3493
+ padding-bottom: var(--tl-space-6);
3364
3494
  }
3365
3495
 
3366
3496
  .tlui-shortcuts-dialog__group__title {
3367
3497
  font-size: inherit;
3368
3498
  font-weight: inherit;
3369
3499
  margin: 0px;
3370
- color: var(--color-text-3);
3500
+ color: var(--tl-color-text-3);
3371
3501
  height: 32px;
3372
3502
  display: flex;
3373
3503
  align-items: center;
@@ -3376,12 +3506,12 @@ it from receiving any pointer events or affecting the cursor. */
3376
3506
  .tlui-shortcuts-dialog__group__content {
3377
3507
  display: flex;
3378
3508
  flex-direction: column;
3379
- color: var(--color-text-1);
3509
+ color: var(--tl-color-text-1);
3380
3510
  }
3381
3511
 
3382
3512
  .tlui-shortcuts-dialog__key-pair {
3383
3513
  display: flex;
3384
- gap: var(--space-4);
3514
+ gap: var(--tl-space-4);
3385
3515
  align-items: center;
3386
3516
  justify-content: space-between;
3387
3517
  height: 32px;
@@ -3408,12 +3538,12 @@ it from receiving any pointer events or affecting the cursor. */
3408
3538
  height: 24px;
3409
3539
  background: linear-gradient(
3410
3540
  to bottom,
3411
- var(--color-panel-transparent) 0%,
3412
- var(--color-panel) 90%,
3413
- var(--color-panel) 100%
3541
+ var(--tl-color-panel-transparent) 0%,
3542
+ var(--tl-color-panel) 90%,
3543
+ var(--tl-color-panel) 100%
3414
3544
  );
3415
- border-bottom-left-radius: var(--radius-3);
3416
- border-bottom-right-radius: var(--radius-3);
3545
+ border-bottom-left-radius: var(--tl-radius-3);
3546
+ border-bottom-right-radius: var(--tl-radius-3);
3417
3547
  pointer-events: none;
3418
3548
  }
3419
3549
 
@@ -3428,10 +3558,10 @@ it from receiving any pointer events or affecting the cursor. */
3428
3558
  .tlui-help-menu {
3429
3559
  pointer-events: all;
3430
3560
  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);
3561
+ bottom: var(--tl-space-2);
3562
+ right: var(--tl-space-2);
3563
+ z-index: var(--tl-layer-panels);
3564
+ border: 2px solid var(--tl-color-background);
3435
3565
  border-radius: 100%;
3436
3566
  }
3437
3567
 
@@ -3442,7 +3572,7 @@ it from receiving any pointer events or affecting the cursor. */
3442
3572
  display: flex;
3443
3573
  flex-direction: row;
3444
3574
  justify-content: flex-end;
3445
- z-index: var(--layer-panels);
3575
+ z-index: var(--tl-layer-panels);
3446
3576
  align-items: center;
3447
3577
  padding-top: 2px;
3448
3578
  padding-right: 4px;
@@ -3458,7 +3588,7 @@ it from receiving any pointer events or affecting the cursor. */
3458
3588
  border: none;
3459
3589
  cursor: pointer;
3460
3590
  pointer-events: all;
3461
- border-radius: var(--radius-1);
3591
+ border-radius: var(--tl-radius-1);
3462
3592
  padding-right: 1px;
3463
3593
  height: 100%;
3464
3594
  }
@@ -3471,8 +3601,8 @@ it from receiving any pointer events or affecting the cursor. */
3471
3601
  .tlui-people-menu__avatar {
3472
3602
  height: 24px;
3473
3603
  width: 24px;
3474
- border: 2px solid var(--color-background);
3475
- background-color: var(--color-low);
3604
+ border: 2px solid var(--tl-color-background);
3605
+ background-color: var(--tl-color-low);
3476
3606
  border-radius: 100%;
3477
3607
  display: flex;
3478
3608
  align-items: center;
@@ -3481,7 +3611,7 @@ it from receiving any pointer events or affecting the cursor. */
3481
3611
  font-size: 10px;
3482
3612
  font-weight: bold;
3483
3613
  text-align: center;
3484
- color: var(--color-selected-contrast);
3614
+ color: var(--tl-color-selected-contrast);
3485
3615
  z-index: 2;
3486
3616
  }
3487
3617
 
@@ -3495,7 +3625,7 @@ it from receiving any pointer events or affecting the cursor. */
3495
3625
 
3496
3626
  @media (hover: hover) {
3497
3627
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
3498
- border-color: var(--color-low);
3628
+ border-color: var(--tl-color-low);
3499
3629
  }
3500
3630
  }
3501
3631
 
@@ -3503,12 +3633,12 @@ it from receiving any pointer events or affecting the cursor. */
3503
3633
  min-width: 0px;
3504
3634
  font-size: 11px;
3505
3635
  font-weight: 600;
3506
- color: var(--color-text-1);
3636
+ color: var(--tl-color-text-1);
3507
3637
  font-family: inherit;
3508
3638
  padding: 0px 4px;
3509
3639
  }
3510
3640
  .tlui-people-menu__more::after {
3511
- border-radius: var(--radius-2);
3641
+ border-radius: var(--tl-radius-2);
3512
3642
  inset: 0px;
3513
3643
  }
3514
3644
 
@@ -3537,7 +3667,7 @@ it from receiving any pointer events or affecting the cursor. */
3537
3667
  }
3538
3668
 
3539
3669
  .tlui-people-menu__section:not(:last-child) {
3540
- border-bottom: 1px solid var(--color-divider);
3670
+ border-bottom: 1px solid var(--tl-color-divider);
3541
3671
  }
3542
3672
 
3543
3673
  .tlui-people-menu__user {
@@ -3556,7 +3686,7 @@ it from receiving any pointer events or affecting the cursor. */
3556
3686
  text-overflow: ellipsis;
3557
3687
  white-space: nowrap;
3558
3688
  font-size: 12px;
3559
- color: var(--color-text-1);
3689
+ color: var(--tl-color-text-1);
3560
3690
  max-width: 100%;
3561
3691
  flex-grow: 1;
3562
3692
  flex-shrink: 100;
@@ -3568,7 +3698,7 @@ it from receiving any pointer events or affecting the cursor. */
3568
3698
  text-overflow: ellipsis;
3569
3699
  white-space: nowrap;
3570
3700
  font-size: 12px;
3571
- color: var(--color-text-3);
3701
+ color: var(--tl-color-text-3);
3572
3702
  flex-grow: 100;
3573
3703
  flex-shrink: 0;
3574
3704
  margin-left: 4px;
@@ -3659,7 +3789,7 @@ it from receiving any pointer events or affecting the cursor. */
3659
3789
  inset: 0px;
3660
3790
  border-width: 2px;
3661
3791
  border-style: solid;
3662
- z-index: var(--layer-following-indicator);
3792
+ z-index: var(--tl-layer-following-indicator);
3663
3793
  pointer-events: none;
3664
3794
  }
3665
3795
 
@@ -3678,7 +3808,7 @@ it from receiving any pointer events or affecting the cursor. */
3678
3808
  }
3679
3809
 
3680
3810
  .tlui-contextual-toolbar [data-isactive='true']::after {
3681
- background-color: var(--color-muted-2);
3811
+ background-color: var(--tl-color-muted-2);
3682
3812
  opacity: 1;
3683
3813
  }
3684
3814
 
@@ -3694,7 +3824,7 @@ it from receiving any pointer events or affecting the cursor. */
3694
3824
 
3695
3825
  .tlui-contextual-toolbar[data-visible='true'] {
3696
3826
  opacity: 1;
3697
- z-index: var(--layer-menus);
3827
+ z-index: var(--tl-layer-menus);
3698
3828
  }
3699
3829
 
3700
3830
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -3753,7 +3883,7 @@ it from receiving any pointer events or affecting the cursor. */
3753
3883
 
3754
3884
  @keyframes tlui-slide-in {
3755
3885
  from {
3756
- transform: translateX(calc(100% + var(--space-3)));
3886
+ transform: translateX(calc(100% + var(--tl-space-3)));
3757
3887
  }
3758
3888
  to {
3759
3889
  transform: translateX(0px);
@@ -3765,7 +3895,7 @@ it from receiving any pointer events or affecting the cursor. */
3765
3895
  transform: translateX(var(--radix-toast-swipe-end-x));
3766
3896
  }
3767
3897
  to {
3768
- transform: translateX(calc(100% + var(--space-3)));
3898
+ transform: translateX(calc(100% + var(--tl-space-3)));
3769
3899
  }
3770
3900
  }
3771
3901