tldraw 3.16.0-canary.a03de714c746 → 3.16.0-canary.a2604843117c

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 (501) hide show
  1. package/dist-cjs/index.d.ts +338 -113
  2. package/dist-cjs/index.js +40 -14
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/Tldraw.js +12 -2
  5. package/dist-cjs/lib/Tldraw.js.map +2 -2
  6. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  8. package/dist-cjs/lib/defaultExternalContentHandlers.js +15 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  11. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
  13. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +6 -0
  14. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
  15. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +3 -2
  16. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  17. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  18. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  19. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +4 -4
  20. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  21. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  22. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  23. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  24. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  25. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +20 -13
  26. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  27. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  28. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  29. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +8 -2
  30. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +2 -2
  31. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +3 -2
  32. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  33. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  34. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  35. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  36. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  37. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  38. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  39. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  40. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  41. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +6 -5
  42. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  43. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +4 -4
  44. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  45. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  46. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  47. package/dist-cjs/lib/shapes/shared/ShapeFill.js +4 -4
  48. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  49. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  50. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +3 -5
  51. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  52. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  53. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  54. package/dist-cjs/lib/shapes/text/PlainTextArea.js +3 -2
  55. package/dist-cjs/lib/shapes/text/PlainTextArea.js.map +2 -2
  56. package/dist-cjs/lib/shapes/text/RichTextArea.js +3 -3
  57. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  58. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  59. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  60. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  61. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  62. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  63. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  64. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  65. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  66. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  67. package/dist-cjs/lib/ui/TldrawUi.js +27 -12
  68. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  69. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  70. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/A11y.js +1 -1
  72. package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  74. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  75. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  76. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  77. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  78. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  80. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  81. package/dist-cjs/lib/ui/components/LanguageMenu.js +1 -0
  82. package/dist-cjs/lib/ui/components/LanguageMenu.js.map +2 -2
  83. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +2 -1
  84. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
  85. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  86. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  87. package/dist-cjs/lib/ui/components/MobileStylePanel.js +5 -3
  88. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  89. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  90. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  91. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +3 -2
  92. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  93. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  94. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  95. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  96. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  97. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +9 -4
  98. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  99. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
  100. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  101. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js +147 -0
  102. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  103. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  104. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  105. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +26 -25
  106. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  107. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +47 -43
  108. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  109. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  110. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  111. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +2 -0
  112. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  113. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  114. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  115. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  116. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  117. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  118. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  119. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +2 -1
  120. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  121. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  122. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  123. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +8 -4
  124. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  125. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +11 -2
  126. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  127. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +5 -3
  128. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
  129. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  130. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  131. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +18 -5
  132. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  133. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +22 -4
  134. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  135. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +196 -157
  136. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  137. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  138. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  139. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js +3 -0
  140. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
  141. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  142. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  143. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  144. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +154 -20
  145. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  146. package/dist-cjs/lib/ui/context/actions.js +29 -10
  147. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  148. package/dist-cjs/lib/ui/context/components.js +2 -0
  149. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  150. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  151. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  152. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  153. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  154. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  155. package/dist-cjs/lib/ui/hooks/useTools.js +94 -9
  156. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  157. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  158. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +6 -2
  159. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  160. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  161. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  162. package/dist-cjs/lib/ui/version.js +3 -3
  163. package/dist-cjs/lib/ui/version.js.map +1 -1
  164. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  165. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  166. package/dist-cjs/lib/utils/export/export.js +0 -20
  167. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  168. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  169. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  170. package/dist-esm/index.d.mts +338 -113
  171. package/dist-esm/index.mjs +75 -29
  172. package/dist-esm/index.mjs.map +2 -2
  173. package/dist-esm/lib/Tldraw.mjs +14 -4
  174. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  175. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  176. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  177. package/dist-esm/lib/defaultExternalContentHandlers.mjs +15 -4
  178. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  179. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  180. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  181. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  182. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  183. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +3 -2
  184. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  185. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  186. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  187. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +4 -5
  188. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  189. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  190. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  191. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  192. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  193. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +21 -13
  194. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  195. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  196. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  197. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +9 -3
  198. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +2 -2
  199. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +4 -2
  200. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  201. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  202. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  203. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  204. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  205. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  206. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  207. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  208. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  209. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +7 -5
  210. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  211. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +5 -5
  212. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  213. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  214. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  215. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +5 -4
  216. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  217. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  218. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +3 -6
  219. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  220. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  221. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  222. package/dist-esm/lib/shapes/text/PlainTextArea.mjs +4 -3
  223. package/dist-esm/lib/shapes/text/PlainTextArea.mjs.map +2 -2
  224. package/dist-esm/lib/shapes/text/RichTextArea.mjs +3 -4
  225. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  226. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  227. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  228. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  229. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  230. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  231. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  232. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  233. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  234. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  235. package/dist-esm/lib/ui/TldrawUi.mjs +29 -14
  236. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  237. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  238. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  239. package/dist-esm/lib/ui/components/A11y.mjs +1 -2
  240. package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
  241. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  242. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  243. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  244. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  245. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  246. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  247. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  248. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  249. package/dist-esm/lib/ui/components/LanguageMenu.mjs +1 -0
  250. package/dist-esm/lib/ui/components/LanguageMenu.mjs.map +2 -2
  251. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +2 -1
  252. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
  253. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  254. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  255. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  256. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  257. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  258. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  259. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +3 -3
  260. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  261. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  262. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  263. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  264. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  265. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +14 -5
  266. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  267. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
  268. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  269. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +135 -0
  270. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  271. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  272. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  273. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +23 -22
  274. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  275. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +44 -40
  276. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  277. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  278. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  279. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +2 -0
  280. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  281. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  282. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  283. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  284. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  285. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  286. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  287. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +2 -1
  288. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  289. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  290. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  291. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +8 -4
  292. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  293. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +11 -3
  294. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  295. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +6 -4
  296. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
  297. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  298. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  299. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +18 -5
  300. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  301. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +22 -4
  302. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  303. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +206 -159
  304. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  305. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  306. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  307. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs +3 -0
  308. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
  309. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  310. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  311. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  312. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +162 -22
  313. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  314. package/dist-esm/lib/ui/context/actions.mjs +29 -10
  315. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  316. package/dist-esm/lib/ui/context/components.mjs +2 -0
  317. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  318. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  319. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +1 -2
  320. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  321. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  322. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  323. package/dist-esm/lib/ui/hooks/useTools.mjs +102 -10
  324. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  325. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +6 -2
  326. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  327. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  328. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  329. package/dist-esm/lib/ui/version.mjs +3 -3
  330. package/dist-esm/lib/ui/version.mjs.map +1 -1
  331. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  332. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  333. package/dist-esm/lib/utils/export/export.mjs +0 -20
  334. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  335. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  336. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  337. package/package.json +11 -34
  338. package/src/index.ts +56 -22
  339. package/src/lib/Tldraw.tsx +15 -2
  340. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  341. package/src/lib/defaultExternalContentHandlers.ts +26 -4
  342. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +85 -14
  343. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +6 -5
  344. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +48 -6
  345. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  346. package/src/lib/shapes/arrow/arrow-types.ts +3 -5
  347. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  348. package/src/lib/shapes/arrow/arrowTargetState.ts +4 -3
  349. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  350. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +4 -5
  351. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  352. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  353. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  354. package/src/lib/shapes/frame/FrameShapeUtil.tsx +30 -14
  355. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  356. package/src/lib/shapes/frame/components/FrameLabelInput.tsx +10 -3
  357. package/src/lib/shapes/geo/GeoShapeUtil.tsx +4 -2
  358. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  359. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  360. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  361. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  362. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  363. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  364. package/src/lib/shapes/note/NoteShapeUtil.tsx +10 -4
  365. package/src/lib/shapes/shared/HyperlinkButton.tsx +5 -5
  366. package/src/lib/shapes/shared/PlainTextLabel.tsx +0 -6
  367. package/src/lib/shapes/shared/ShapeFill.tsx +5 -4
  368. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  369. package/src/lib/shapes/shared/useEditablePlainText.ts +3 -10
  370. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  371. package/src/lib/shapes/text/PlainTextArea.tsx +4 -3
  372. package/src/lib/shapes/text/RichTextArea.tsx +3 -4
  373. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  374. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  375. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  376. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  377. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  378. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  379. package/src/lib/ui/TldrawUi.tsx +33 -12
  380. package/src/lib/ui/assetUrls.ts +13 -10
  381. package/src/lib/ui/components/A11y.tsx +1 -2
  382. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  383. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  384. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  385. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  386. package/src/lib/ui/components/LanguageMenu.tsx +1 -0
  387. package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +2 -1
  388. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  389. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  390. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  391. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +4 -4
  392. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  393. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  394. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +27 -13
  395. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -385
  396. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +73 -50
  397. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  398. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +31 -22
  399. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  400. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  401. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +2 -0
  402. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  403. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  404. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  405. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +1 -0
  406. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  407. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +11 -4
  408. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +7 -3
  409. package/src/lib/ui/components/primitives/TldrawUiInput.tsx +6 -3
  410. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  411. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +52 -32
  412. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +37 -10
  413. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +244 -178
  414. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  415. package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +4 -0
  416. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  417. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  418. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +221 -19
  419. package/src/lib/ui/context/actions.tsx +36 -10
  420. package/src/lib/ui/context/components.tsx +3 -0
  421. package/src/lib/ui/context/events.tsx +2 -1
  422. package/src/lib/ui/hooks/useClipboardEvents.ts +1 -2
  423. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  424. package/src/lib/ui/hooks/useTools.tsx +140 -10
  425. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +4 -0
  426. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +6 -2
  427. package/src/lib/ui/kbd-utils.ts +10 -3
  428. package/src/lib/ui/version.ts +3 -3
  429. package/src/lib/ui.css +395 -306
  430. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  431. package/src/lib/utils/export/copyAs.ts +1 -24
  432. package/src/lib/utils/export/export.ts +0 -36
  433. package/src/lib/utils/export/exportAs.ts +1 -32
  434. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  435. package/src/test/A11y.test.tsx +3 -2
  436. package/src/test/ClickManager.test.ts +7 -6
  437. package/src/test/Editor.test.tsx +20 -19
  438. package/src/test/EraserTool.test.ts +184 -13
  439. package/src/test/HandTool.test.ts +10 -9
  440. package/src/test/HighlightShape.test.ts +2 -1
  441. package/src/test/SelectTool.test.ts +3 -2
  442. package/src/test/TLUserPreferences.test.ts +4 -3
  443. package/src/test/TestEditor.ts +13 -15
  444. package/src/test/TldrawEditor.test.tsx +11 -10
  445. package/src/test/ZoomTool.test.ts +7 -6
  446. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  447. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  448. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  449. package/src/test/arrows-megabus.test.tsx +5 -4
  450. package/src/test/bindings.test.tsx +24 -37
  451. package/src/test/bookmark-shapes.test.ts +1 -8
  452. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  453. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  454. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  455. package/src/test/commands/alignShapes.test.tsx +25 -24
  456. package/src/test/commands/animationSpeed.test.ts +2 -1
  457. package/src/test/commands/centerOnPoint.test.ts +3 -2
  458. package/src/test/commands/clipboard.test.ts +3 -2
  459. package/src/test/commands/createShapes.test.ts +2 -1
  460. package/src/test/commands/deleteShapes.test.ts +2 -1
  461. package/src/test/commands/distributeShapes.test.tsx +11 -10
  462. package/src/test/commands/getSvgString.test.ts +2 -1
  463. package/src/test/commands/packShapes.test.ts +5 -4
  464. package/src/test/commands/resizeShape.test.ts +2 -1
  465. package/src/test/commands/rotateShapes.test.ts +7 -6
  466. package/src/test/commands/setCamera.test.ts +4 -3
  467. package/src/test/commands/setCurrentPage.test.ts +3 -2
  468. package/src/test/commands/stackShapes.test.ts +11 -10
  469. package/src/test/commands/stretch.test.tsx +13 -12
  470. package/src/test/createDeepLink.test.tsx +2 -1
  471. package/src/test/cropping.test.ts +3 -2
  472. package/src/test/custom-clipping.test.ts +436 -0
  473. package/src/test/drawing.test.ts +2 -1
  474. package/src/test/flipShapes.test.ts +4 -3
  475. package/src/test/frames.test.ts +25 -24
  476. package/src/test/getCulledShapes.test.tsx +74 -4
  477. package/src/test/groups.test.tsx +1 -1
  478. package/src/test/handleDeepLink.test.tsx +2 -1
  479. package/src/test/maxShapes.test.ts +3 -2
  480. package/src/test/modifiers.test.ts +5 -4
  481. package/src/test/navigation.test.ts +12 -11
  482. package/src/test/panning.test.ts +2 -1
  483. package/src/test/perf/perf.test.ts +2 -1
  484. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  485. package/src/test/resizing.test.ts +39 -38
  486. package/src/test/select.test.tsx +4 -3
  487. package/src/test/selection-omnibus.test.ts +11 -10
  488. package/src/test/shapeutils.test.ts +4 -3
  489. package/src/test/translating.test.ts +9 -8
  490. package/tldraw.css +703 -598
  491. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  492. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  493. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  494. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +0 -142
  495. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  496. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  497. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  498. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  499. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +0 -115
  500. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  501. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +0 -109
package/src/lib/ui.css CHANGED
@@ -1,15 +1,15 @@
1
1
  /* @tldraw/ui */
2
2
 
3
3
  .tl-container {
4
- --layer-above: 1;
5
- --layer-focused-input: 10;
6
- --layer-menu-click-capture: 250;
7
- --layer-panels: 300;
8
- --layer-menus: 400;
9
- --layer-toasts: 650;
10
- --layer-cursor: 700;
11
- --layer-header-footer: 999;
12
- --layer-following-indicator: 1000;
4
+ --tl-layer-above: 1;
5
+ --tl-layer-focused-input: 10;
6
+ --tl-layer-menu-click-capture: 250;
7
+ --tl-layer-panels: 300;
8
+ --tl-layer-menus: 400;
9
+ --tl-layer-toasts: 650;
10
+ --tl-layer-cursor: 700;
11
+ --tl-layer-header-footer: 999;
12
+ --tl-layer-following-indicator: 1000;
13
13
  }
14
14
 
15
15
  /* Button */
@@ -33,23 +33,23 @@
33
33
  text-rendering: optimizeLegibility;
34
34
  font-size: 12px;
35
35
  gap: 0px;
36
- color: var(--color-text-1);
36
+ color: var(--tl-color-text-1);
37
37
  z-index: 0;
38
38
  }
39
39
 
40
40
  .tlui-button:disabled {
41
- color: var(--color-text-3);
41
+ color: var(--tl-color-text-3);
42
42
  text-shadow: none;
43
43
  cursor: default;
44
44
  }
45
45
 
46
46
  .tlui-button:disabled .tlui-kbd {
47
- color: var(--color-text-3);
47
+ color: var(--tl-color-text-3);
48
48
  }
49
49
 
50
50
  .tlui-button > * {
51
51
  position: relative;
52
- z-index: var(--layer-above);
52
+ z-index: var(--tl-layer-above);
53
53
  }
54
54
 
55
55
  .tlui-button__label {
@@ -65,7 +65,7 @@
65
65
  */
66
66
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button:focus-visible {
67
67
  border-radius: 10px;
68
- outline: 2px solid var(--color-focus);
68
+ outline: 2px solid var(--tl-color-focus);
69
69
  outline-offset: -5px;
70
70
  }
71
71
  .tl-container__focused:not(.tl-container__no-focus-ring) .tlui-button__tool:focus-visible {
@@ -73,7 +73,7 @@
73
73
  }
74
74
  .tlui-slider__container:has(.tlui-slider__thumb:focus-visible) {
75
75
  border-radius: 10px;
76
- outline: 2px solid var(--color-focus);
76
+ outline: 2px solid var(--tl-color-focus);
77
77
  outline-offset: -5px;
78
78
  }
79
79
 
@@ -82,8 +82,8 @@
82
82
  content: '';
83
83
  position: absolute;
84
84
  inset: 4px;
85
- border-radius: var(--radius-2);
86
- background: var(--color-muted-2);
85
+ border-radius: var(--tl-radius-2);
86
+ background: var(--tl-color-muted-2);
87
87
  opacity: 0;
88
88
  }
89
89
 
@@ -93,18 +93,18 @@
93
93
 
94
94
  .tlui-button[data-isactive='true']::after,
95
95
  .tlui-button[data-isactive='true']:not(:disabled, :focus-visible):active:after {
96
- background: var(--color-hint);
96
+ background: var(--tl-color-hint);
97
97
  opacity: 1;
98
98
  }
99
99
 
100
100
  .tlui-button[aria-expanded='true'][data-direction='left'] {
101
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
101
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
102
102
  opacity: 1;
103
103
  }
104
104
 
105
105
  @media (hover: hover) {
106
106
  .tlui-button[aria-expanded='true'][data-direction='left']:not(:hover)::after {
107
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
107
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
108
108
  opacity: 1;
109
109
  }
110
110
 
@@ -118,18 +118,18 @@
118
118
  }
119
119
 
120
120
  .tlui-button__icon + .tlui-button__label {
121
- margin-left: var(--space-2);
121
+ margin-left: var(--tl-space-2);
122
122
  }
123
123
 
124
124
  /* Low button */
125
125
 
126
126
  .tlui-button__low {
127
- border-radius: var(--radius-3);
128
- background-color: var(--color-low);
127
+ border-radius: var(--tl-radius-3);
128
+ background-color: var(--tl-color-low);
129
129
  }
130
130
 
131
131
  .tlui-button__low::after {
132
- background-color: var(--color-muted-2);
132
+ background-color: var(--tl-color-muted-2);
133
133
  opacity: 0;
134
134
  }
135
135
 
@@ -142,31 +142,25 @@
142
142
  /* Primary / danger buttons */
143
143
 
144
144
  .tlui-button__primary {
145
- color: var(--color-primary);
145
+ color: var(--tl-color-primary);
146
146
  }
147
147
 
148
148
  .tlui-button__danger {
149
- color: var(--color-danger);
149
+ color: var(--tl-color-danger);
150
150
  text-shadow: none;
151
151
  }
152
152
 
153
153
  @media (hover: hover) {
154
154
  .tlui-button__primary:not(:disabled, :focus-visible):hover {
155
- color: var(--color-primary);
155
+ color: var(--tl-color-primary);
156
156
  }
157
157
 
158
158
  .tlui-button__danger:not(:disabled, :focus-visible):hover {
159
- color: var(--color-danger);
159
+ color: var(--tl-color-danger);
160
160
  text-shadow: none;
161
161
  }
162
162
  }
163
163
 
164
- /* Panel button */
165
-
166
- .tlui-button__panel {
167
- position: relative;
168
- }
169
-
170
164
  /* Menu button */
171
165
 
172
166
  .tlui-button__menu {
@@ -179,7 +173,7 @@
179
173
 
180
174
  .tlui-button__menu::after {
181
175
  inset: 4px;
182
- border-radius: var(--radius-2);
176
+ border-radius: var(--tl-radius-2);
183
177
  }
184
178
 
185
179
  .tlui-button__menu > .tlui-icon + .tlui-button__label {
@@ -207,18 +201,26 @@
207
201
 
208
202
  /* Tool lock button */
209
203
 
210
- .tlui-toolbar__lock-button {
204
+ .tlui-main-toolbar__lock-button {
211
205
  position: absolute;
212
- top: 4px;
213
- right: 0px;
214
206
  pointer-events: all;
215
207
  height: 40px;
216
208
  width: 40px;
209
+ border-radius: var(--tl-radius-2);
210
+ }
211
+
212
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
213
+ top: 4px;
214
+ right: 0px;
217
215
  min-width: 0px;
218
- border-radius: var(--radius-2);
219
216
  }
220
217
 
221
- .tlui-toolbar__lock-button::after {
218
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__lock-button {
219
+ bottom: 0px;
220
+ min-height: 0px;
221
+ }
222
+
223
+ .tlui-main-toolbar__lock-button::after {
222
224
  top: 4px;
223
225
  left: 8px;
224
226
  inset: 4px;
@@ -230,16 +232,6 @@
230
232
  position: relative;
231
233
  height: 48px;
232
234
  width: 48px;
233
- margin-left: -2px;
234
- margin-right: -2px;
235
- }
236
-
237
- .tlui-button__tool:nth-of-type(1) {
238
- margin-left: 0px;
239
- }
240
-
241
- .tlui-button__tool:nth-last-of-type(1) {
242
- margin-right: 0px;
243
235
  }
244
236
 
245
237
  .tlui-button__tool::after {
@@ -248,69 +240,64 @@
248
240
  }
249
241
 
250
242
  .tlui-button__tool[aria-pressed='true'] {
251
- color: var(--color-selected-contrast);
243
+ color: var(--tl-color-selected-contrast);
252
244
  }
253
245
 
254
246
  .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
255
- color: var(--color-selected-contrast);
247
+ color: var(--tl-color-selected-contrast);
256
248
  }
257
249
 
258
250
  .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
259
- background: var(--color-selected);
251
+ background: var(--tl-color-selected);
260
252
  opacity: 1;
261
253
  }
262
254
 
263
- .tlui-layout__mobile .tlui-button__tool {
255
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool {
264
256
  height: 48px;
265
257
  width: 43px;
266
258
  }
267
259
 
268
- .tlui-layout__mobile .tlui-button__tool > .tlui-icon {
260
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool > .tlui-icon {
269
261
  height: 16px;
270
262
  width: 16px;
271
263
  }
272
264
 
273
- /* Button Row */
265
+ /* Row layout */
274
266
 
275
- .tlui-buttons__horizontal {
267
+ .tlui-row {
276
268
  display: flex;
277
269
  flex-direction: row;
270
+ padding: 0 2px;
278
271
  }
279
- .tlui-buttons__horizontal > * {
272
+ .tlui-row > * {
280
273
  margin-left: -2px;
281
274
  margin-right: -2px;
282
275
  }
283
- .tlui-buttons__horizontal > *:nth-child(1) {
284
- margin-left: 0px;
276
+
277
+ /* Column layout */
278
+
279
+ .tlui-column {
280
+ display: flex;
281
+ flex-direction: column;
282
+ padding: 2px 0;
285
283
  }
286
- .tlui-buttons__horizontal > *:nth-last-child(1) {
287
- margin-right: 0px;
284
+ .tlui-column > * {
285
+ margin-top: -2px;
286
+ margin-bottom: -2px;
288
287
  }
289
288
 
290
- /* Button Grid */
289
+ /* Grid layout */
291
290
 
292
- .tlui-buttons__grid {
291
+ .tlui-grid {
293
292
  display: grid;
294
- grid-template-columns: repeat(4, auto);
293
+ grid-template-columns: repeat(4, 1fr);
295
294
  grid-auto-flow: row;
296
295
  overflow: hidden;
296
+ padding: 2px;
297
297
  }
298
- .tlui-buttons__grid > .tlui-button {
298
+ .tlui-grid > * {
299
299
  margin: -2px;
300
300
  }
301
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n),
302
- .tlui-buttons__vertical-align > .tlui-button:nth-of-type(3n) {
303
- margin-right: 0px;
304
- }
305
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n - 3) {
306
- margin-left: 0px;
307
- }
308
- .tlui-buttons__grid > .tlui-button:nth-of-type(-n + 4) {
309
- margin-top: 0px;
310
- }
311
- .tlui-buttons__grid > .tlui-button:nth-last-of-type(-n + 4) {
312
- margin-bottom: 0px;
313
- }
314
301
 
315
302
  /* Zoom button */
316
303
 
@@ -334,9 +321,9 @@
334
321
  pointer-events: none;
335
322
  user-select: none;
336
323
  contain: strict;
337
- z-index: var(--layer-panels);
324
+ z-index: var(--tl-layer-panels);
338
325
  transform: translate3d(0, 0, 0);
339
- --sab: env(safe-area-inset-bottom);
326
+ --tl-sab: env(safe-area-inset-bottom);
340
327
  font-weight: 500;
341
328
  line-height: 1.6;
342
329
  -webkit-font-smoothing: antialiased;
@@ -389,11 +376,11 @@
389
376
  justify-content: flex-start;
390
377
  align-items: flex-start;
391
378
  width: min-content;
392
- gap: var(--space-3);
393
- margin: var(--space-2) var(--space-3);
379
+ gap: var(--tl-space-3);
380
+ margin: var(--tl-space-2) var(--tl-space-3);
394
381
  white-space: nowrap;
395
382
  pointer-events: none;
396
- z-index: var(--layer-panels);
383
+ z-index: var(--tl-layer-panels);
397
384
  }
398
385
 
399
386
  /* ---------------------- Icon ---------------------- */
@@ -421,7 +408,7 @@
421
408
 
422
409
  .tlui-slider__container {
423
410
  width: 100%;
424
- padding: 0px var(--space-4);
411
+ padding: 0px var(--tl-space-4);
425
412
  }
426
413
 
427
414
  .tlui-slider {
@@ -447,7 +434,7 @@
447
434
  content: '';
448
435
  height: 3px;
449
436
  width: 100%;
450
- background-color: var(--color-muted-1);
437
+ background-color: var(--tl-color-muted-1);
451
438
  border-radius: 14px;
452
439
  }
453
440
 
@@ -456,7 +443,7 @@
456
443
  top: calc(50% - 2px);
457
444
  left: 0px;
458
445
  height: 3px;
459
- background-color: var(--color-selected);
446
+ background-color: var(--tl-color-selected);
460
447
  border-radius: 14px;
461
448
  }
462
449
 
@@ -468,16 +455,16 @@
468
455
  height: 18px;
469
456
  position: relative;
470
457
  top: -1px;
471
- background-color: var(--color-panel);
458
+ background-color: var(--tl-color-panel);
472
459
  border-radius: 999px;
473
- box-shadow: inset 0px 0px 0px 2px var(--color-text-1);
460
+ box-shadow: inset 0px 0px 0px 2px var(--tl-color-text-1);
474
461
  }
475
462
 
476
463
  .tlui-slider__thumb:active {
477
464
  cursor: grabbing;
478
465
  box-shadow:
479
- inset 0px 0px 0px 2px var(--color-text-1),
480
- var(--shadow-1);
466
+ inset 0px 0px 0px 2px var(--tl-color-text-1),
467
+ var(--tl-shadow-1);
481
468
  }
482
469
 
483
470
  /* ---------------------- Input --------------------- */
@@ -486,7 +473,7 @@
486
473
  background: none;
487
474
  margin: 0px;
488
475
  position: relative;
489
- z-index: var(--layer-above);
476
+ z-index: var(--tl-layer-above);
490
477
  height: 40px;
491
478
  max-height: 40px;
492
479
  display: flex;
@@ -495,8 +482,8 @@
495
482
  font-family: inherit;
496
483
  font-size: 12px;
497
484
  font-weight: inherit;
498
- color: var(--color-text-1);
499
- padding: var(--space-4);
485
+ color: var(--tl-color-text-1);
486
+ padding: var(--tl-space-4);
500
487
  padding-left: 0px;
501
488
  border: none;
502
489
  outline: none;
@@ -507,13 +494,17 @@
507
494
  -webkit-user-select: auto !important;
508
495
  }
509
496
 
497
+ .tlui-input::placeholder {
498
+ color: var(--tl-color-text-3);
499
+ }
500
+
510
501
  .tlui-input__wrapper {
511
502
  width: 100%;
512
503
  height: 44px;
513
504
  display: flex;
514
505
  align-items: center;
515
- gap: var(--space-4);
516
- color: var(--color-text);
506
+ gap: var(--tl-space-4);
507
+ color: var(--tl-color-text);
517
508
  }
518
509
 
519
510
  .tlui-input__wrapper > .tlui-icon {
@@ -545,7 +536,7 @@
545
536
  grid-auto-columns: minmax(1em, auto);
546
537
  align-self: bottom;
547
538
  color: currentColor;
548
- margin-left: var(--space-4);
539
+ margin-left: var(--tl-space-4);
549
540
  }
550
541
 
551
542
  .tlui-kbd > span {
@@ -562,13 +553,13 @@
562
553
  }
563
554
 
564
555
  .tlui-kbd:not(:last-child) {
565
- margin-right: var(--space-2);
556
+ margin-right: var(--tl-space-2);
566
557
  }
567
558
 
568
559
  /* Focus Mode Button */
569
560
 
570
561
  .tlui-focus-button {
571
- z-index: var(--layer-panels);
562
+ z-index: var(--tl-layer-panels);
572
563
  pointer-events: all;
573
564
  }
574
565
 
@@ -579,16 +570,22 @@
579
570
  }
580
571
 
581
572
  .tlui-menu {
582
- z-index: var(--layer-menus);
573
+ z-index: var(--tl-layer-menus);
583
574
  height: fit-content;
584
575
  width: fit-content;
585
- border-radius: var(--radius-3);
576
+ border-radius: var(--tl-radius-3);
586
577
  pointer-events: all;
587
578
  touch-action: auto;
588
579
  overflow-y: auto;
589
580
  overscroll-behavior: none;
590
- background-color: var(--color-panel);
591
- box-shadow: var(--shadow-3);
581
+ background-color: var(--tl-color-panel);
582
+ box-shadow: var(--tl-shadow-3);
583
+ }
584
+
585
+ @media (max-height: 600px) {
586
+ .tlui-menu {
587
+ max-height: 70vh;
588
+ }
592
589
  }
593
590
 
594
591
  .tlui-menu::-webkit-scrollbar {
@@ -606,7 +603,7 @@
606
603
  }
607
604
 
608
605
  .tlui-menu__group {
609
- border-bottom: 1px solid var(--color-divider);
606
+ border-bottom: 1px solid var(--tl-color-divider);
610
607
  }
611
608
  .tlui-menu__group:nth-last-of-type(1) {
612
609
  border-bottom: none;
@@ -616,23 +613,23 @@
616
613
 
617
614
  .tlui-menu__submenu__trigger[data-state='open']::after {
618
615
  opacity: 1;
619
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
616
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
620
617
  }
621
618
 
622
619
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
623
620
  opacity: 1;
624
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
621
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
625
622
  }
626
623
 
627
624
  @media (hover: hover) {
628
625
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
629
626
  opacity: 1;
630
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
627
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
631
628
  }
632
629
 
633
630
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
634
631
  opacity: 1;
635
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
632
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
636
633
  }
637
634
  }
638
635
 
@@ -657,7 +654,7 @@
657
654
  .tlui-menu-click-capture {
658
655
  position: fixed;
659
656
  inset: 0;
660
- z-index: var(--layer-menu-click-capture);
657
+ z-index: var(--tl-layer-menu-click-capture);
661
658
  }
662
659
 
663
660
  /* --------------------- Popover -------------------- */
@@ -673,10 +670,10 @@
673
670
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
674
671
  margin: 0px;
675
672
  border: none;
676
- border-radius: var(--radius-3);
677
- background-color: var(--color-panel);
678
- box-shadow: var(--shadow-3);
679
- z-index: var(--layer-menus);
673
+ border-radius: var(--tl-radius-3);
674
+ background-color: var(--tl-color-panel);
675
+ box-shadow: var(--tl-shadow-3);
676
+ z-index: var(--tl-layer-menus);
680
677
  overflow: hidden;
681
678
  overflow-y: auto;
682
679
  touch-action: auto;
@@ -689,22 +686,22 @@
689
686
 
690
687
  .tlui-menu-zone {
691
688
  position: relative;
692
- z-index: var(--layer-panels);
689
+ z-index: var(--tl-layer-panels);
693
690
  width: fit-content;
694
- border-right: 2px solid var(--color-background);
695
- border-bottom: 2px solid var(--color-background);
696
- border-bottom-right-radius: var(--radius-4);
697
- background-color: var(--color-low);
691
+ border-right: 2px solid var(--tl-color-background);
692
+ border-bottom: 2px solid var(--tl-color-background);
693
+ border-bottom-right-radius: var(--tl-radius-4);
694
+ background-color: var(--tl-color-low);
698
695
  }
699
696
 
700
697
  .tlui-menu-zone *[data-state='open']::after {
701
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
698
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
702
699
  opacity: 1;
703
700
  }
704
701
 
705
702
  @media (hover: hover) {
706
703
  .tlui-menu-zone *[data-state='open']:not(:hover)::after {
707
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
704
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
708
705
  opacity: 1;
709
706
  }
710
707
  }
@@ -730,8 +727,8 @@
730
727
  align-items: center;
731
728
  width: 100%;
732
729
  height: 40px;
733
- padding-left: var(--space-4);
734
- border-bottom: 1px solid var(--color-divider);
730
+ padding-left: var(--tl-space-4);
731
+ border-bottom: 1px solid var(--tl-color-divider);
735
732
  }
736
733
 
737
734
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -739,7 +736,7 @@
739
736
  }
740
737
 
741
738
  .tlui-page-menu__header__title {
742
- color: var(--color-text);
739
+ color: var(--tl-color-text);
743
740
  font-size: 12px;
744
741
  flex-grow: 2;
745
742
  }
@@ -824,7 +821,7 @@
824
821
  display: inline-flex;
825
822
  align-items: center;
826
823
  justify-content: center;
827
- color: var(--color-text);
824
+ color: var(--tl-color-text);
828
825
  }
829
826
 
830
827
  .tlui-page_menu__item__sortable {
@@ -837,7 +834,7 @@
837
834
  flex-direction: row;
838
835
  align-items: center;
839
836
  overflow: hidden;
840
- z-index: var(--layer-above);
837
+ z-index: var(--tl-layer-above);
841
838
  }
842
839
 
843
840
  .tlui-page_menu__item__sortable__title {
@@ -849,7 +846,7 @@
849
846
  }
850
847
 
851
848
  .tlui-page_menu__item__sortable:focus-visible {
852
- z-index: var(--layer-focused-input);
849
+ z-index: var(--tl-layer-focused-input);
853
850
  }
854
851
 
855
852
  .tlui-page_menu__item__sortable__handle {
@@ -858,7 +855,7 @@
858
855
  min-width: 0px;
859
856
  height: 40px;
860
857
  cursor: grab;
861
- color: var(--color-text-3);
858
+ color: var(--tl-color-text-3);
862
859
  flex-shrink: 0;
863
860
  margin-right: -9px;
864
861
  }
@@ -900,13 +897,13 @@
900
897
  }
901
898
 
902
899
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']::after {
903
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
900
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
904
901
  opacity: 1;
905
902
  }
906
903
 
907
904
  @media (hover: hover) {
908
905
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']:not(:hover)::after {
909
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
906
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
910
907
  opacity: 1;
911
908
  }
912
909
  }
@@ -942,7 +939,7 @@
942
939
  top: 48px;
943
940
  left: -9999px;
944
941
  padding: 8px 16px;
945
- z-index: var(--layer-toasts);
942
+ z-index: var(--tl-layer-toasts);
946
943
  }
947
944
 
948
945
  .tl-skip-to-main-content:focus {
@@ -954,11 +951,11 @@
954
951
  .tlui-offline-indicator {
955
952
  display: flex;
956
953
  flex-direction: row;
957
- gap: var(--space-3);
958
- color: var(--color-text);
959
- background-color: var(--color-low);
960
- border: 3px solid var(--color-background);
961
- padding: 0px var(--space-5);
954
+ gap: var(--tl-space-3);
955
+ color: var(--tl-color-text);
956
+ background-color: var(--tl-color-low);
957
+ border: 3px solid var(--tl-color-background);
958
+ padding: 0px var(--tl-space-5);
962
959
  height: 42px;
963
960
  align-items: center;
964
961
  justify-content: center;
@@ -973,10 +970,10 @@
973
970
  /* ------------------- Style panel ------------------ */
974
971
 
975
972
  .tlui-style-panel__wrapper {
976
- box-shadow: var(--shadow-2);
977
- border-radius: var(--radius-3);
973
+ box-shadow: var(--tl-shadow-2);
974
+ border-radius: var(--tl-radius-3);
978
975
  pointer-events: all;
979
- background-color: var(--color-panel);
976
+ background-color: var(--tl-color-panel);
980
977
  height: fit-content;
981
978
  max-height: 100%;
982
979
  margin: 8px;
@@ -985,7 +982,7 @@
985
982
  overscroll-behavior: none;
986
983
  overflow-y: auto;
987
984
  overflow-x: hidden;
988
- color: var(--color-text);
985
+ color: var(--tl-color-text);
989
986
  }
990
987
  /* if the style panel is the only child (ie no share menu), increase the margin */
991
988
  .tlui-style-panel__wrapper:only-child {
@@ -994,7 +991,7 @@
994
991
 
995
992
  .tlui-style-panel {
996
993
  position: relative;
997
- z-index: var(--layer-panels);
994
+ z-index: var(--tl-layer-panels);
998
995
  pointer-events: all;
999
996
  width: 148px;
1000
997
  max-width: 148px;
@@ -1002,7 +999,7 @@
1002
999
 
1003
1000
  .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
1004
1001
  border-radius: 10px;
1005
- outline: 2px solid var(--color-text);
1002
+ outline: 2px solid var(--tl-color-text);
1006
1003
  outline-offset: -5px;
1007
1004
  }
1008
1005
 
@@ -1020,33 +1017,47 @@
1020
1017
  flex-direction: column;
1021
1018
  }
1022
1019
 
1023
- .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
1024
- border-bottom: 1px solid var(--color-divider);
1020
+ /*
1021
+ add a border to the bottom of all but the last section. we have to handle empty sections too, which
1022
+ are hidden and shouldn't be counted
1023
+ */
1024
+ .tlui-style-panel__section:not(:nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))) {
1025
+ border-bottom: 1px solid var(--tl-color-divider);
1026
+ }
1027
+ /*
1028
+ if a section ends with a slider and we're adding a border, we need some extra space for visual
1029
+ balance. we need to handle empty sections as above. is this the most complex css selector in all of
1030
+ tldraw? probably.
1031
+ */
1032
+ .tlui-style-panel__section:has(.tlui-slider__container:last-child):not(
1033
+ :nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))
1034
+ ) {
1035
+ margin-bottom: 7px;
1025
1036
  }
1026
1037
 
1027
1038
  .tlui-style-panel__section:empty {
1028
1039
  display: none;
1029
1040
  }
1030
1041
 
1042
+ .tlui-style-panel[data-ismobile='true'] .tlui-style-panel__section .tlui-row.tlui-toolbar {
1043
+ flex-wrap: wrap;
1044
+ }
1045
+
1031
1046
  .tlui-style-panel__section__common:not(:only-child) {
1032
1047
  margin-bottom: 7px;
1033
- border-bottom: 1px solid var(--color-divider);
1048
+ border-bottom: 1px solid var(--tl-color-divider);
1034
1049
  }
1035
1050
 
1036
- .tlui-style-panel__row {
1037
- display: flex;
1038
- }
1039
- /* Only really used for the alignment picker */
1040
- .tlui-style-panel__row__extra-button {
1041
- margin-left: -2px;
1051
+ .tlui-style-panel__dropdown-picker:only-child {
1052
+ flex: 1;
1042
1053
  }
1043
1054
 
1044
1055
  .tlui-style-panel__double-select-picker {
1045
1056
  display: flex;
1046
1057
  grid-template-columns: 1fr auto;
1047
1058
  align-items: center;
1048
- padding-left: var(--space-4);
1049
- color: var(--color-text-1);
1059
+ padding-left: var(--tl-space-4);
1060
+ color: var(--tl-color-text-1);
1050
1061
  font-size: 12px;
1051
1062
  }
1052
1063
 
@@ -1060,13 +1071,16 @@
1060
1071
 
1061
1072
  .tlui-style-panel .tlui-button[data-state='open']::after {
1062
1073
  opacity: 1;
1063
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1074
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1064
1075
  }
1065
1076
 
1066
1077
  @media (hover: hover) {
1078
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
1079
+ background: none;
1080
+ }
1067
1081
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
1068
1082
  opacity: 1;
1069
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1083
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1070
1084
  }
1071
1085
  }
1072
1086
 
@@ -1076,14 +1090,14 @@
1076
1090
  .tlui-style-panel__section__common .tlui-style-panel__subheading,
1077
1091
  .tlui-style-panel__subheading + .tlui-slider__container {
1078
1092
  margin: 0;
1079
- padding: var(--space-2) var(--space-3) 0px var(--space-4);
1093
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
1080
1094
  font-size: 12px;
1081
1095
  font-weight: inherit;
1082
1096
  line-height: inherit;
1083
1097
  }
1084
1098
 
1085
1099
  .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1086
- padding-top: var(--space-3);
1100
+ padding-top: var(--tl-space-3);
1087
1101
  }
1088
1102
 
1089
1103
  .tlui-style-panel__subheading + .tlui-slider__container {
@@ -1094,11 +1108,11 @@
1094
1108
 
1095
1109
  .tlui-layout__bottom {
1096
1110
  grid-row: 2;
1111
+ width: 100%;
1097
1112
  }
1098
1113
 
1099
1114
  .tlui-layout__bottom__main {
1100
1115
  width: 100%;
1101
- position: relative;
1102
1116
  display: flex;
1103
1117
  align-items: flex-end;
1104
1118
  justify-content: center;
@@ -1110,11 +1124,10 @@
1110
1124
  display: flex;
1111
1125
  width: min-content;
1112
1126
  flex-direction: column;
1113
- z-index: var(--layer-panels);
1127
+ z-index: var(--tl-layer-panels);
1114
1128
  pointer-events: all;
1115
1129
  position: absolute;
1116
1130
  left: 0px;
1117
- bottom: 0px;
1118
1131
  }
1119
1132
 
1120
1133
  .tlui-navigation-panel::before {
@@ -1124,10 +1137,10 @@
1124
1137
  z-index: -1;
1125
1138
  inset: -2px -2px 0px 0px;
1126
1139
  border-radius: 0;
1127
- border-top: 2px solid var(--color-background);
1128
- border-right: 2px solid var(--color-background);
1129
- border-top-right-radius: var(--radius-4);
1130
- background-color: var(--color-low);
1140
+ border-top: 2px solid var(--tl-color-background);
1141
+ border-right: 2px solid var(--tl-color-background);
1142
+ border-top-right-radius: var(--tl-radius-4);
1143
+ background-color: var(--tl-color-low);
1131
1144
  }
1132
1145
 
1133
1146
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -1141,7 +1154,7 @@
1141
1154
  height: 96px;
1142
1155
  min-height: 96px;
1143
1156
  overflow: hidden;
1144
- padding: var(--space-3);
1157
+ padding: var(--tl-space-3);
1145
1158
  padding-top: 0px;
1146
1159
  }
1147
1160
 
@@ -1154,98 +1167,178 @@
1154
1167
  /* --------------------- Toolbar -------------------- */
1155
1168
 
1156
1169
  /* Wide container */
1157
- .tlui-toolbar {
1170
+ .tlui-main-toolbar {
1158
1171
  grid-column: 1 / span 3;
1159
1172
  grid-row: 1;
1160
1173
  display: flex;
1161
1174
  align-items: center;
1162
1175
  justify-content: center;
1163
1176
  flex-grow: 2;
1164
- padding-bottom: calc(var(--space-3) + var(--sab));
1177
+ }
1178
+
1179
+ .tlui-main-toolbar--horizontal {
1180
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
1181
+ max-width: 100%;
1182
+ }
1183
+
1184
+ .tlui-main-toolbar--vertical {
1185
+ position: absolute;
1186
+ left: 0;
1187
+ top: 90px; /* height of page menu + 'back to content' button */
1188
+ bottom: 140px; /* height of expanded mini-map */
1189
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
1190
+ }
1191
+
1192
+ [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
1193
+ bottom: 90px; /* collapsed mini-map, but same as top to keep things looking even */
1165
1194
  }
1166
1195
 
1167
1196
  /* Centered Content */
1168
- .tlui-toolbar__inner {
1197
+ .tlui-main-toolbar__inner {
1169
1198
  position: relative;
1170
1199
  width: fit-content;
1171
1200
  display: flex;
1172
- gap: var(--space-3);
1173
- align-items: flex-end;
1201
+ gap: var(--tl-space-3);
1202
+ align-items: flex-start;
1203
+ }
1204
+
1205
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__inner {
1206
+ flex-direction: column;
1174
1207
  }
1175
1208
 
1176
- .tlui-toolbar__left {
1209
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__left {
1177
1210
  width: fit-content;
1178
1211
  }
1212
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__left {
1213
+ display: flex;
1214
+ height: fit-content;
1215
+ }
1179
1216
 
1180
1217
  /* Row of controls + lock button */
1181
- .tlui-toolbar__extras {
1218
+ .tlui-main-toolbar__extras {
1182
1219
  position: relative;
1183
- z-index: var(--layer-above);
1184
- width: 100%;
1220
+ z-index: var(--tl-layer-above);
1185
1221
  pointer-events: none;
1186
- top: 6px;
1187
- height: 48px;
1222
+ align-self: stretch;
1188
1223
  }
1189
1224
 
1190
- .tlui-toolbar__extras:empty {
1225
+ .tlui-main-toolbar__extras:empty {
1191
1226
  display: none;
1192
1227
  }
1193
1228
 
1194
- .tlui-toolbar__extras__controls {
1195
- display: flex;
1229
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras {
1230
+ height: 48px;
1231
+ top: 6px;
1232
+ }
1233
+
1234
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras {
1235
+ width: 48px;
1236
+ order: 1;
1237
+ }
1238
+
1239
+ .tlui-main-toolbar__extras__controls {
1196
1240
  position: relative;
1197
- flex-direction: row;
1198
- z-index: var(--layer-above);
1199
- background-color: var(--color-low);
1200
- border-top-left-radius: var(--radius-4);
1201
- border-top-right-radius: var(--radius-4);
1202
- border: 2px solid var(--color-background);
1241
+ z-index: var(--tl-layer-above);
1242
+ background-color: var(--tl-color-low);
1243
+ border: 2px solid var(--tl-color-background);
1244
+ pointer-events: all;
1245
+ }
1246
+
1247
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
1248
+ border-top-left-radius: var(--tl-radius-4);
1249
+ border-top-right-radius: var(--tl-radius-4);
1203
1250
  margin-left: 8px;
1204
1251
  margin-right: 0px;
1205
- pointer-events: all;
1206
1252
  width: fit-content;
1207
1253
  }
1208
1254
 
1209
- .tlui-toolbar__tools {
1210
- display: flex;
1211
- flex-direction: row;
1212
- align-items: center;
1213
- border-radius: var(--radius-4);
1214
- z-index: var(--layer-panels);
1255
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
1256
+ border-top-right-radius: var(--tl-radius-4);
1257
+ border-bottom-right-radius: var(--tl-radius-4);
1258
+ margin-top: 8px;
1259
+ margin-left: -2px;
1260
+ margin-bottom: 0px;
1261
+ width: fit-content;
1262
+ }
1263
+
1264
+ .tlui-main-toolbar__tools {
1265
+ border-radius: var(--tl-radius-4);
1266
+ z-index: var(--tl-layer-panels);
1215
1267
  pointer-events: all;
1216
1268
  position: relative;
1217
- background: var(--color-panel);
1218
- box-shadow: var(--shadow-2);
1269
+ background: var(--tl-color-panel);
1270
+ box-shadow: var(--tl-shadow-2);
1219
1271
  }
1220
- .tlui-toolbar__tools__list {
1221
- display: flex;
1222
- flex-direction: row;
1223
- align-items: center;
1272
+
1273
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
1274
+ align-self: flex-end;
1275
+ }
1276
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__mobile-style-panel {
1277
+ align-self: flex-start;
1224
1278
  }
1225
1279
 
1226
- .tlui-toolbar__overflow {
1280
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
1227
1281
  width: 40px;
1282
+ margin-left: 2px;
1283
+ }
1284
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__overflow {
1285
+ height: 40px;
1286
+ margin-top: 2px;
1228
1287
  }
1229
1288
 
1230
- .tlui-layout__mobile .tlui-toolbar__overflow {
1289
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
1231
1290
  width: 32px;
1232
1291
  padding: 0px;
1233
1292
  }
1234
1293
 
1235
- .tlui-toolbar *[data-state='open']::after {
1236
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1294
+ .tlui-main-toolbar--horizontal *[data-state='open']::after {
1295
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1296
+ opacity: 1;
1297
+ }
1298
+ .tlui-main-toolbar--vertical *[data-state='open']::after {
1299
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1237
1300
  opacity: 1;
1238
1301
  }
1239
1302
 
1303
+ .tlui-main-toolbar__overflow-content {
1304
+ touch-action: none;
1305
+ }
1306
+
1307
+ .tlui-main-toolbar__tools [data-toolbar-visible='false'],
1308
+ .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
1309
+ display: none;
1310
+ }
1311
+
1312
+ .tlui-main-toolbar__group:empty {
1313
+ display: none;
1314
+ }
1315
+ .tlui-row.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
1316
+ border-right: 1px solid var(--color-divider);
1317
+ margin-right: 2px;
1318
+ }
1319
+ .tlui-column.tlui-main-toolbar__group:not(
1320
+ :nth-last-child(-n + 1 of [data-toolbar-visible='true'])
1321
+ ) {
1322
+ border-bottom: 1px solid var(--color-divider);
1323
+ margin-bottom: 2px;
1324
+ }
1325
+ .tlui-grid.tlui-main-toolbar__group {
1326
+ grid-column: 1 / span 4;
1327
+ }
1328
+ .tlui-grid.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
1329
+ border-bottom: 1px solid var(--color-divider);
1330
+ margin-bottom: 2px;
1331
+ }
1332
+
1240
1333
  @media (hover: hover) {
1241
- .tlui-toolbar *[data-state='open']:not(:hover)::after {
1242
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1334
+ .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
1335
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1336
+ opacity: 1;
1337
+ }
1338
+ .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
1339
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1243
1340
  opacity: 1;
1244
1341
  }
1245
- }
1246
-
1247
- .tlui-layout__mobile .tlui-toolbar {
1248
- transition: transform 0.15s ease-out 0.05s;
1249
1342
  }
1250
1343
 
1251
1344
  /* ------------------- Tooltip -------------------- */
@@ -1254,44 +1347,40 @@
1254
1347
  font-size: 12px;
1255
1348
  padding: 2px 8px;
1256
1349
  border-radius: 4px;
1257
- background-color: var(--color-tooltip);
1350
+ background-color: var(--tl-color-tooltip);
1258
1351
  box-shadow: none;
1259
- color: var(--color-text-shadow);
1352
+ color: var(--tl-color-text-shadow);
1260
1353
  max-width: 400px;
1261
1354
  width: fit-content;
1262
1355
  text-align: center;
1263
- pointer-events: none;
1264
1356
  will-change: transform, opacity;
1265
1357
  z-index: 2;
1266
1358
  }
1267
1359
 
1268
1360
  .tlui-tooltip__arrow {
1269
- fill: var(--color-tooltip);
1361
+ fill: var(--tl-color-tooltip);
1270
1362
  will-change: opacity;
1271
1363
  }
1272
1364
 
1273
1365
  [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
1274
- z-index: var(--layer-toasts) !important;
1275
- }
1276
-
1277
- [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
1278
- transition: all 0.1s ease-out;
1366
+ z-index: var(--tl-layer-toasts) !important;
1367
+ pointer-events: none;
1279
1368
  }
1280
1369
 
1281
1370
  /* ------------------- Debug panel ------------------ */
1282
1371
 
1283
1372
  .tlui-debug-panel {
1284
- background-color: var(--color-low);
1373
+ background-color: var(--tl-color-low);
1285
1374
  width: 100%;
1286
1375
  display: grid;
1287
1376
  align-items: center;
1288
1377
  grid-template-columns: 1fr auto auto auto;
1289
1378
  justify-content: space-between;
1290
- padding-left: var(--space-4);
1291
- border-top: 1px solid var(--color-background);
1379
+ padding-left: var(--tl-space-4);
1380
+ border-top: 1px solid var(--tl-color-background);
1292
1381
  font-size: 12px;
1293
- color: var(--color-text-1);
1294
- z-index: var(--layer-panels);
1382
+ color: var(--tl-color-text-1);
1383
+ z-index: var(--tl-layer-panels);
1295
1384
  pointer-events: all;
1296
1385
  }
1297
1386
 
@@ -1307,7 +1396,7 @@
1307
1396
 
1308
1397
  .tlui-debug-panel__fps__slow {
1309
1398
  font-weight: bold;
1310
- color: var(--color-danger);
1399
+ color: var(--tl-color-danger);
1311
1400
  }
1312
1401
 
1313
1402
  .tlui-a11y-audit {
@@ -1317,7 +1406,7 @@
1317
1406
  .tlui-a11y-audit th,
1318
1407
  .tlui-a11y-audit td {
1319
1408
  padding: 8px;
1320
- border: 1px solid var(--color-low-border);
1409
+ border: 1px solid var(--tl-color-low-border);
1321
1410
  }
1322
1411
 
1323
1412
  /* --------------------- Toasts --------------------- */
@@ -1330,10 +1419,10 @@
1330
1419
  align-items: flex-end;
1331
1420
  justify-content: flex-end;
1332
1421
  flex-direction: column;
1333
- gap: var(--space-3);
1422
+ gap: var(--tl-space-3);
1334
1423
  pointer-events: none;
1335
- padding: 0px var(--space-3) 64px 0px;
1336
- z-index: var(--layer-toasts);
1424
+ padding: 0px var(--tl-space-3) 64px 0px;
1425
+ z-index: var(--tl-layer-toasts);
1337
1426
  }
1338
1427
 
1339
1428
  .tlui-toast__viewport > * {
@@ -1342,34 +1431,34 @@
1342
1431
 
1343
1432
  .tlui-toast__icon {
1344
1433
  padding-top: 11px;
1345
- padding-left: var(--space-4);
1346
- color: var(--color-text-1);
1434
+ padding-left: var(--tl-space-4);
1435
+ color: var(--tl-color-text-1);
1347
1436
  }
1348
1437
 
1349
1438
  .tlui-toast__container {
1350
1439
  min-width: 200px;
1351
1440
  display: flex;
1352
1441
  flex-direction: row;
1353
- background-color: var(--color-panel);
1354
- box-shadow: var(--shadow-2);
1355
- border-radius: var(--radius-3);
1442
+ background-color: var(--tl-color-panel);
1443
+ box-shadow: var(--tl-shadow-2);
1444
+ border-radius: var(--tl-radius-3);
1356
1445
  font-size: 12px;
1357
1446
  }
1358
1447
 
1359
1448
  .tlui-toast__container[data-severity='success'] .tlui-icon {
1360
- color: var(--color-success);
1449
+ color: var(--tl-color-success);
1361
1450
  }
1362
1451
 
1363
1452
  .tlui-toast__container[data-severity='info'] .tlui-icon {
1364
- color: var(--color-info);
1453
+ color: var(--tl-color-info);
1365
1454
  }
1366
1455
 
1367
1456
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
1368
- color: var(--color-warning);
1457
+ color: var(--tl-color-warning);
1369
1458
  }
1370
1459
 
1371
1460
  .tlui-toast__container[data-severity='error'] .tlui-icon {
1372
- color: var(--color-danger);
1461
+ color: var(--tl-color-danger);
1373
1462
  }
1374
1463
 
1375
1464
  .tlui-toast__main {
@@ -1378,27 +1467,27 @@
1378
1467
  }
1379
1468
 
1380
1469
  .tlui-toast__content {
1381
- padding: var(--space-4);
1470
+ padding: var(--tl-space-4);
1382
1471
  display: flex;
1383
1472
  line-height: 1.4;
1384
1473
  flex-direction: column;
1385
- gap: var(--space-3);
1474
+ gap: var(--tl-space-3);
1386
1475
  }
1387
1476
 
1388
1477
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
1389
- padding-bottom: var(--space-2);
1478
+ padding-bottom: var(--tl-space-2);
1390
1479
  }
1391
1480
 
1392
1481
  .tlui-toast__title {
1393
1482
  font-weight: bold;
1394
- color: var(--color-text-1);
1483
+ color: var(--tl-color-text-1);
1395
1484
  /* this makes the default toast look better */
1396
1485
  line-height: 16px;
1397
1486
  }
1398
1487
 
1399
1488
  .tlui-toast__description {
1400
- color: var(--color-text-1);
1401
- padding: var(--space-3);
1489
+ color: var(--tl-color-text-1);
1490
+ padding: var(--tl-space-3);
1402
1491
  margin: 0px;
1403
1492
  padding: 0px;
1404
1493
  }
@@ -1450,14 +1539,14 @@
1450
1539
  left: 0px;
1451
1540
  width: 100%;
1452
1541
  height: 100%;
1453
- z-index: var(--layer-canvas-overlays);
1454
- background-color: var(--color-overlay);
1542
+ z-index: var(--tl-layer-canvas-overlays);
1543
+ background-color: var(--tl-color-overlay);
1455
1544
  pointer-events: all;
1456
1545
  animation: tl-fade-in 0.12s ease-out;
1457
1546
  display: grid;
1458
1547
  place-items: center;
1459
1548
  overflow-y: auto;
1460
- padding: 0px var(--space-3);
1549
+ padding: 0px var(--tl-space-3);
1461
1550
  }
1462
1551
 
1463
1552
  .tlui-dialog__content {
@@ -1465,9 +1554,9 @@
1465
1554
  flex-direction: column;
1466
1555
  position: relative;
1467
1556
  cursor: default;
1468
- background-color: var(--color-panel);
1469
- box-shadow: var(--shadow-3);
1470
- border-radius: var(--radius-3);
1557
+ background-color: var(--tl-color-panel);
1558
+ box-shadow: var(--tl-shadow-3);
1559
+ border-radius: var(--tl-radius-3);
1471
1560
  font-size: 12px;
1472
1561
  overflow: hidden;
1473
1562
  min-width: 300px;
@@ -1480,9 +1569,9 @@
1480
1569
  display: flex;
1481
1570
  align-items: center;
1482
1571
  flex: 0;
1483
- z-index: var(--layer-header-footer);
1484
- padding-left: var(--space-4);
1485
- color: var(--color-text);
1572
+ z-index: var(--tl-layer-header-footer);
1573
+ padding-left: var(--tl-space-4);
1574
+ color: var(--tl-color-text);
1486
1575
  height: 40px;
1487
1576
  }
1488
1577
 
@@ -1491,7 +1580,7 @@
1491
1580
  font-weight: inherit;
1492
1581
  font-size: 12px;
1493
1582
  margin: 0px;
1494
- color: var(--color-text-1);
1583
+ color: var(--tl-color-text-1);
1495
1584
  }
1496
1585
 
1497
1586
  .tlui-dialog__header__close {
@@ -1499,16 +1588,16 @@
1499
1588
  }
1500
1589
 
1501
1590
  .tlui-dialog__body {
1502
- padding: var(--space-4) var(--space-4);
1591
+ padding: var(--tl-space-4) var(--tl-space-4);
1503
1592
  flex: 0 1;
1504
1593
  overflow-y: auto;
1505
1594
  overflow-x: hidden;
1506
- color: var(--color-text-1);
1595
+ color: var(--tl-color-text-1);
1507
1596
  user-select: all;
1508
1597
  -webkit-user-select: text;
1509
1598
  }
1510
1599
  .tlui-dialog__body a {
1511
- color: var(--color-selected);
1600
+ color: var(--tl-color-selected);
1512
1601
  }
1513
1602
 
1514
1603
  .tlui-dialog__body ul,
@@ -1516,13 +1605,13 @@
1516
1605
  padding-left: 16px;
1517
1606
  display: flex;
1518
1607
  flex-direction: column;
1519
- gap: var(--space-2);
1608
+ gap: var(--tl-space-2);
1520
1609
  }
1521
1610
 
1522
1611
  .tlui-dialog__footer {
1523
1612
  position: relative;
1524
1613
  min-height: 12px;
1525
- z-index: var(--layer-header-footer);
1614
+ z-index: var(--tl-layer-header-footer);
1526
1615
  }
1527
1616
 
1528
1617
  .tlui-dialog__footer__actions {
@@ -1542,15 +1631,15 @@
1542
1631
  .tlui-edit-link-dialog {
1543
1632
  display: flex;
1544
1633
  flex-direction: column;
1545
- gap: var(--space-4);
1546
- color: var(--color-text);
1634
+ gap: var(--tl-space-4);
1635
+ color: var(--tl-color-text);
1547
1636
  }
1548
1637
 
1549
1638
  .tlui-edit-link-dialog__input {
1550
- background-color: var(--color-muted-2);
1639
+ background-color: var(--tl-color-muted-2);
1551
1640
  flex-grow: 2;
1552
- border-radius: var(--radius-2);
1553
- padding: 0px var(--space-4);
1641
+ border-radius: var(--tl-radius-2);
1642
+ padding: 0px var(--tl-space-4);
1554
1643
  }
1555
1644
 
1556
1645
  /* Embed Dialog */
@@ -1558,15 +1647,15 @@
1558
1647
  .tlui-embed__spacer {
1559
1648
  flex-grow: 2;
1560
1649
  min-height: 0px;
1561
- margin-left: calc(-1 * var(--space-4));
1562
- margin-top: calc(-1 * var(--space-4));
1650
+ margin-left: calc(-1 * var(--tl-space-4));
1651
+ margin-top: calc(-1 * var(--tl-space-4));
1563
1652
  pointer-events: none;
1564
1653
  }
1565
1654
 
1566
1655
  .tlui-embed-dialog__list {
1567
1656
  display: flex;
1568
1657
  flex-direction: column;
1569
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
1658
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
1570
1659
  }
1571
1660
 
1572
1661
  .tlui-embed-dialog__item__image {
@@ -1578,49 +1667,49 @@
1578
1667
  background-size: contain;
1579
1668
  background-repeat: no-repeat;
1580
1669
  background-position: center center;
1581
- background-color: var(--color-selected-contrast);
1582
- border-radius: var(--radius-1);
1670
+ background-color: var(--tl-color-selected-contrast);
1671
+ border-radius: var(--tl-radius-1);
1583
1672
  }
1584
1673
 
1585
1674
  .tlui-embed-dialog__enter {
1586
1675
  display: flex;
1587
1676
  flex-direction: column;
1588
- gap: var(--space-4);
1589
- color: var(--color-text-1);
1677
+ gap: var(--tl-space-4);
1678
+ color: var(--tl-color-text-1);
1590
1679
  }
1591
1680
 
1592
1681
  .tlui-embed-dialog__input {
1593
- background-color: var(--color-muted-2);
1682
+ background-color: var(--tl-color-muted-2);
1594
1683
  flex-grow: 2;
1595
- border-radius: var(--radius-2);
1596
- padding: 0px var(--space-4);
1684
+ border-radius: var(--tl-radius-2);
1685
+ padding: 0px var(--tl-space-4);
1597
1686
  }
1598
1687
 
1599
1688
  .tlui-embed-dialog__warning {
1600
- color: var(--color-danger);
1689
+ color: var(--tl-color-danger);
1601
1690
  text-shadow: none;
1602
1691
  }
1603
1692
 
1604
1693
  .tlui-embed-dialog__instruction__link {
1605
1694
  display: flex;
1606
- gap: var(--space-1);
1607
- margin-top: var(--space-4);
1695
+ gap: var(--tl-space-1);
1696
+ margin-top: var(--tl-space-4);
1608
1697
  }
1609
1698
 
1610
1699
  .tlui-embed-dialog__enter a {
1611
- color: var(--color-text-1);
1700
+ color: var(--tl-color-text-1);
1612
1701
  }
1613
1702
 
1614
1703
  /* --------------- Keyboard shortcuts --------------- */
1615
1704
 
1616
1705
  .tlui-shortcuts-dialog__header {
1617
- border-bottom: 1px solid var(--color-divider);
1706
+ border-bottom: 1px solid var(--tl-color-divider);
1618
1707
  }
1619
1708
 
1620
1709
  .tlui-shortcuts-dialog__body {
1621
1710
  position: relative;
1622
1711
  columns: 3;
1623
- column-gap: var(--space-9);
1712
+ column-gap: var(--tl-space-9);
1624
1713
  pointer-events: all;
1625
1714
  touch-action: auto;
1626
1715
 
@@ -1638,14 +1727,14 @@
1638
1727
 
1639
1728
  .tlui-shortcuts-dialog__group {
1640
1729
  break-inside: avoid-column;
1641
- padding-bottom: var(--space-6);
1730
+ padding-bottom: var(--tl-space-6);
1642
1731
  }
1643
1732
 
1644
1733
  .tlui-shortcuts-dialog__group__title {
1645
1734
  font-size: inherit;
1646
1735
  font-weight: inherit;
1647
1736
  margin: 0px;
1648
- color: var(--color-text-3);
1737
+ color: var(--tl-color-text-3);
1649
1738
  height: 32px;
1650
1739
  display: flex;
1651
1740
  align-items: center;
@@ -1654,12 +1743,12 @@
1654
1743
  .tlui-shortcuts-dialog__group__content {
1655
1744
  display: flex;
1656
1745
  flex-direction: column;
1657
- color: var(--color-text-1);
1746
+ color: var(--tl-color-text-1);
1658
1747
  }
1659
1748
 
1660
1749
  .tlui-shortcuts-dialog__key-pair {
1661
1750
  display: flex;
1662
- gap: var(--space-4);
1751
+ gap: var(--tl-space-4);
1663
1752
  align-items: center;
1664
1753
  justify-content: space-between;
1665
1754
  height: 32px;
@@ -1686,12 +1775,12 @@
1686
1775
  height: 24px;
1687
1776
  background: linear-gradient(
1688
1777
  to bottom,
1689
- var(--color-panel-transparent) 0%,
1690
- var(--color-panel) 90%,
1691
- var(--color-panel) 100%
1778
+ var(--tl-color-panel-transparent) 0%,
1779
+ var(--tl-color-panel) 90%,
1780
+ var(--tl-color-panel) 100%
1692
1781
  );
1693
- border-bottom-left-radius: var(--radius-3);
1694
- border-bottom-right-radius: var(--radius-3);
1782
+ border-bottom-left-radius: var(--tl-radius-3);
1783
+ border-bottom-right-radius: var(--tl-radius-3);
1695
1784
  pointer-events: none;
1696
1785
  }
1697
1786
 
@@ -1706,10 +1795,10 @@
1706
1795
  .tlui-help-menu {
1707
1796
  pointer-events: all;
1708
1797
  position: absolute;
1709
- bottom: var(--space-2);
1710
- right: var(--space-2);
1711
- z-index: var(--layer-panels);
1712
- border: 2px solid var(--color-background);
1798
+ bottom: var(--tl-space-2);
1799
+ right: var(--tl-space-2);
1800
+ z-index: var(--tl-layer-panels);
1801
+ border: 2px solid var(--tl-color-background);
1713
1802
  border-radius: 100%;
1714
1803
  }
1715
1804
 
@@ -1720,7 +1809,7 @@
1720
1809
  display: flex;
1721
1810
  flex-direction: row;
1722
1811
  justify-content: flex-end;
1723
- z-index: var(--layer-panels);
1812
+ z-index: var(--tl-layer-panels);
1724
1813
  align-items: center;
1725
1814
  padding-top: 2px;
1726
1815
  padding-right: 4px;
@@ -1736,7 +1825,7 @@
1736
1825
  border: none;
1737
1826
  cursor: pointer;
1738
1827
  pointer-events: all;
1739
- border-radius: var(--radius-1);
1828
+ border-radius: var(--tl-radius-1);
1740
1829
  padding-right: 1px;
1741
1830
  height: 100%;
1742
1831
  }
@@ -1749,8 +1838,8 @@
1749
1838
  .tlui-people-menu__avatar {
1750
1839
  height: 24px;
1751
1840
  width: 24px;
1752
- border: 2px solid var(--color-background);
1753
- background-color: var(--color-low);
1841
+ border: 2px solid var(--tl-color-background);
1842
+ background-color: var(--tl-color-low);
1754
1843
  border-radius: 100%;
1755
1844
  display: flex;
1756
1845
  align-items: center;
@@ -1759,7 +1848,7 @@
1759
1848
  font-size: 10px;
1760
1849
  font-weight: bold;
1761
1850
  text-align: center;
1762
- color: var(--color-selected-contrast);
1851
+ color: var(--tl-color-selected-contrast);
1763
1852
  z-index: 2;
1764
1853
  }
1765
1854
 
@@ -1773,7 +1862,7 @@
1773
1862
 
1774
1863
  @media (hover: hover) {
1775
1864
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
1776
- border-color: var(--color-low);
1865
+ border-color: var(--tl-color-low);
1777
1866
  }
1778
1867
  }
1779
1868
 
@@ -1781,12 +1870,12 @@
1781
1870
  min-width: 0px;
1782
1871
  font-size: 11px;
1783
1872
  font-weight: 600;
1784
- color: var(--color-text-1);
1873
+ color: var(--tl-color-text-1);
1785
1874
  font-family: inherit;
1786
1875
  padding: 0px 4px;
1787
1876
  }
1788
1877
  .tlui-people-menu__more::after {
1789
- border-radius: var(--radius-2);
1878
+ border-radius: var(--tl-radius-2);
1790
1879
  inset: 0px;
1791
1880
  }
1792
1881
 
@@ -1815,7 +1904,7 @@
1815
1904
  }
1816
1905
 
1817
1906
  .tlui-people-menu__section:not(:last-child) {
1818
- border-bottom: 1px solid var(--color-divider);
1907
+ border-bottom: 1px solid var(--tl-color-divider);
1819
1908
  }
1820
1909
 
1821
1910
  .tlui-people-menu__user {
@@ -1834,7 +1923,7 @@
1834
1923
  text-overflow: ellipsis;
1835
1924
  white-space: nowrap;
1836
1925
  font-size: 12px;
1837
- color: var(--color-text-1);
1926
+ color: var(--tl-color-text-1);
1838
1927
  max-width: 100%;
1839
1928
  flex-grow: 1;
1840
1929
  flex-shrink: 100;
@@ -1846,7 +1935,7 @@
1846
1935
  text-overflow: ellipsis;
1847
1936
  white-space: nowrap;
1848
1937
  font-size: 12px;
1849
- color: var(--color-text-3);
1938
+ color: var(--tl-color-text-3);
1850
1939
  flex-grow: 100;
1851
1940
  flex-shrink: 0;
1852
1941
  margin-left: 4px;
@@ -1937,7 +2026,7 @@
1937
2026
  inset: 0px;
1938
2027
  border-width: 2px;
1939
2028
  border-style: solid;
1940
- z-index: var(--layer-following-indicator);
2029
+ z-index: var(--tl-layer-following-indicator);
1941
2030
  pointer-events: none;
1942
2031
  }
1943
2032
 
@@ -1956,7 +2045,7 @@
1956
2045
  }
1957
2046
 
1958
2047
  .tlui-contextual-toolbar [data-isactive='true']::after {
1959
- background-color: var(--color-muted-2);
2048
+ background-color: var(--tl-color-muted-2);
1960
2049
  opacity: 1;
1961
2050
  }
1962
2051
 
@@ -1972,7 +2061,7 @@
1972
2061
 
1973
2062
  .tlui-contextual-toolbar[data-visible='true'] {
1974
2063
  opacity: 1;
1975
- z-index: var(--layer-menus);
2064
+ z-index: var(--tl-layer-menus);
1976
2065
  }
1977
2066
 
1978
2067
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -2031,7 +2120,7 @@
2031
2120
 
2032
2121
  @keyframes tlui-slide-in {
2033
2122
  from {
2034
- transform: translateX(calc(100% + var(--space-3)));
2123
+ transform: translateX(calc(100% + var(--tl-space-3)));
2035
2124
  }
2036
2125
  to {
2037
2126
  transform: translateX(0px);
@@ -2043,6 +2132,6 @@
2043
2132
  transform: translateX(var(--radix-toast-swipe-end-x));
2044
2133
  }
2045
2134
  to {
2046
- transform: translateX(calc(100% + var(--space-3)));
2135
+ transform: translateX(calc(100% + var(--tl-space-3)));
2047
2136
  }
2048
2137
  }