tldraw 3.16.0-canary.7f4043b128a3 → 3.16.0-canary.7facbd2d2b7f

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 (438) hide show
  1. package/dist-cjs/index.d.ts +318 -111
  2. package/dist-cjs/index.js +37 -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/arrow-types.js.map +1 -1
  11. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +6 -0
  12. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
  13. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +3 -2
  14. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  15. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  16. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  17. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +1 -1
  18. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
  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/embed/EmbedShapeUtil.js +1 -1
  22. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  23. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -5
  24. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  25. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  26. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  27. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +8 -2
  28. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +2 -2
  29. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +1 -0
  30. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  31. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  32. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  33. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +2 -1
  34. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  35. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +4 -4
  36. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  37. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  38. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  39. package/dist-cjs/lib/shapes/shared/ShapeFill.js +1 -1
  40. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  41. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  42. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +3 -5
  43. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  44. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  45. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  46. package/dist-cjs/lib/shapes/text/PlainTextArea.js +3 -2
  47. package/dist-cjs/lib/shapes/text/PlainTextArea.js.map +2 -2
  48. package/dist-cjs/lib/shapes/text/RichTextArea.js +3 -3
  49. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  50. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  51. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  52. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  53. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  54. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  55. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  56. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +3 -1
  57. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  58. package/dist-cjs/lib/ui/TldrawUi.js +13 -12
  59. package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
  60. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  61. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  62. package/dist-cjs/lib/ui/components/A11y.js +1 -1
  63. package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
  64. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  65. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  66. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  67. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  68. package/dist-cjs/lib/ui/components/LanguageMenu.js +1 -0
  69. package/dist-cjs/lib/ui/components/LanguageMenu.js.map +2 -2
  70. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +2 -1
  71. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
  72. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  73. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  74. package/dist-cjs/lib/ui/components/MobileStylePanel.js +1 -1
  75. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  76. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +1 -1
  77. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  78. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +9 -4
  79. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  80. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
  81. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  82. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js +147 -0
  83. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  84. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  85. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  86. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +23 -22
  87. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  88. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +24 -21
  89. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  90. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  91. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  92. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +2 -0
  93. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  94. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  95. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  96. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  97. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  98. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +2 -1
  99. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  100. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +1 -1
  101. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +2 -2
  102. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +6 -2
  103. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  104. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +11 -2
  105. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  106. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +5 -3
  107. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
  108. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +18 -5
  109. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  110. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +3 -0
  111. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  112. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +137 -122
  113. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  114. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js +3 -0
  115. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
  116. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  117. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +0 -10
  118. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  119. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +11 -27
  120. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  121. package/dist-cjs/lib/ui/context/actions.js +29 -10
  122. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  123. package/dist-cjs/lib/ui/context/components.js +2 -0
  124. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  125. package/dist-cjs/lib/ui/context/events.js.map +1 -1
  126. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  127. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  128. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  129. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  130. package/dist-cjs/lib/ui/hooks/useTools.js +22 -4
  131. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  132. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  133. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +6 -2
  134. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  135. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  136. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  137. package/dist-cjs/lib/ui/version.js +3 -3
  138. package/dist-cjs/lib/ui/version.js.map +1 -1
  139. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  140. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  141. package/dist-cjs/lib/utils/export/export.js +0 -20
  142. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  143. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  144. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  145. package/dist-esm/index.d.mts +318 -111
  146. package/dist-esm/index.mjs +69 -29
  147. package/dist-esm/index.mjs.map +2 -2
  148. package/dist-esm/lib/Tldraw.mjs +14 -4
  149. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  150. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  151. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  152. package/dist-esm/lib/defaultExternalContentHandlers.mjs +15 -4
  153. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  154. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  155. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  156. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +3 -2
  157. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  158. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  159. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  160. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +1 -1
  161. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
  162. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +4 -5
  163. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  164. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  165. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  166. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +12 -5
  167. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  168. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  169. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  170. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +9 -3
  171. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +2 -2
  172. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +1 -0
  173. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  174. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  175. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  176. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +2 -1
  177. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  178. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +5 -5
  179. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  180. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  181. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  182. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +1 -1
  183. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  184. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  185. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +3 -6
  186. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  187. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  188. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  189. package/dist-esm/lib/shapes/text/PlainTextArea.mjs +4 -3
  190. package/dist-esm/lib/shapes/text/PlainTextArea.mjs.map +2 -2
  191. package/dist-esm/lib/shapes/text/RichTextArea.mjs +3 -4
  192. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  193. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  194. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  195. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  196. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  197. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  198. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  199. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +3 -1
  200. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  201. package/dist-esm/lib/ui/TldrawUi.mjs +13 -12
  202. package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
  203. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  204. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  205. package/dist-esm/lib/ui/components/A11y.mjs +1 -2
  206. package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
  207. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  208. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  209. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  210. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  211. package/dist-esm/lib/ui/components/LanguageMenu.mjs +1 -0
  212. package/dist-esm/lib/ui/components/LanguageMenu.mjs.map +2 -2
  213. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +2 -1
  214. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
  215. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  216. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  217. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +1 -1
  218. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  219. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +1 -2
  220. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  221. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +14 -5
  222. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  223. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
  224. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  225. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +135 -0
  226. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  227. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  228. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  229. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +20 -19
  230. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  231. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +21 -18
  232. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  233. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  234. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  235. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +2 -0
  236. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  237. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  238. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  239. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  240. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  241. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +2 -1
  242. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  243. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +1 -1
  244. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +2 -2
  245. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +6 -2
  246. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  247. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +11 -3
  248. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  249. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +6 -4
  250. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
  251. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +18 -5
  252. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  253. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +3 -0
  254. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  255. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +147 -124
  256. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  257. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs +3 -0
  258. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
  259. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  260. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +0 -10
  261. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  262. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +11 -27
  263. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  264. package/dist-esm/lib/ui/context/actions.mjs +29 -10
  265. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  266. package/dist-esm/lib/ui/context/components.mjs +2 -0
  267. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  268. package/dist-esm/lib/ui/context/events.mjs.map +1 -1
  269. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +1 -2
  270. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  271. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  272. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  273. package/dist-esm/lib/ui/hooks/useTools.mjs +23 -4
  274. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  275. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +6 -2
  276. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  277. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  278. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  279. package/dist-esm/lib/ui/version.mjs +3 -3
  280. package/dist-esm/lib/ui/version.mjs.map +1 -1
  281. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  282. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  283. package/dist-esm/lib/utils/export/export.mjs +0 -20
  284. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  285. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  286. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  287. package/package.json +11 -34
  288. package/src/index.ts +51 -22
  289. package/src/lib/Tldraw.tsx +15 -2
  290. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  291. package/src/lib/defaultExternalContentHandlers.ts +26 -4
  292. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +85 -14
  293. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +103 -8
  294. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +48 -6
  295. package/src/lib/shapes/arrow/arrow-types.ts +3 -5
  296. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  297. package/src/lib/shapes/arrow/arrowTargetState.ts +34 -3
  298. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  299. package/src/lib/shapes/arrow/toolStates/Pointing.tsx +1 -1
  300. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +4 -5
  301. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  302. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  303. package/src/lib/shapes/frame/FrameShapeUtil.tsx +21 -4
  304. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  305. package/src/lib/shapes/frame/components/FrameLabelInput.tsx +10 -3
  306. package/src/lib/shapes/geo/GeoShapeUtil.tsx +1 -0
  307. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  308. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  309. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  310. package/src/lib/shapes/note/NoteShapeUtil.tsx +1 -0
  311. package/src/lib/shapes/shared/HyperlinkButton.tsx +5 -5
  312. package/src/lib/shapes/shared/PlainTextLabel.tsx +0 -6
  313. package/src/lib/shapes/shared/ShapeFill.tsx +1 -1
  314. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  315. package/src/lib/shapes/shared/useEditablePlainText.ts +3 -10
  316. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  317. package/src/lib/shapes/text/PlainTextArea.tsx +4 -3
  318. package/src/lib/shapes/text/RichTextArea.tsx +3 -4
  319. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  320. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  321. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  322. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  323. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +6 -2
  324. package/src/lib/ui/TldrawUi.tsx +16 -10
  325. package/src/lib/ui/assetUrls.ts +13 -10
  326. package/src/lib/ui/components/A11y.tsx +1 -2
  327. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  328. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  329. package/src/lib/ui/components/LanguageMenu.tsx +1 -0
  330. package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +2 -1
  331. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  332. package/src/lib/ui/components/MobileStylePanel.tsx +1 -1
  333. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +1 -2
  334. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +27 -13
  335. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -381
  336. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +70 -50
  337. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  338. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +28 -19
  339. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  340. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  341. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +2 -0
  342. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  343. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  344. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +1 -0
  345. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +1 -1
  346. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +9 -2
  347. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +7 -3
  348. package/src/lib/ui/components/primitives/TldrawUiInput.tsx +6 -3
  349. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +52 -32
  350. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +5 -1
  351. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +159 -123
  352. package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +4 -0
  353. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  354. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +0 -10
  355. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +14 -27
  356. package/src/lib/ui/context/actions.tsx +36 -10
  357. package/src/lib/ui/context/components.tsx +3 -0
  358. package/src/lib/ui/context/events.tsx +1 -1
  359. package/src/lib/ui/hooks/useClipboardEvents.ts +1 -2
  360. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  361. package/src/lib/ui/hooks/useTools.tsx +26 -4
  362. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +4 -0
  363. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +6 -2
  364. package/src/lib/ui/kbd-utils.ts +10 -3
  365. package/src/lib/ui/version.ts +3 -3
  366. package/src/lib/ui.css +270 -231
  367. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  368. package/src/lib/utils/export/copyAs.ts +1 -24
  369. package/src/lib/utils/export/export.ts +0 -36
  370. package/src/lib/utils/export/exportAs.ts +1 -32
  371. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  372. package/src/test/A11y.test.tsx +3 -2
  373. package/src/test/ClickManager.test.ts +7 -6
  374. package/src/test/Editor.test.tsx +20 -19
  375. package/src/test/EraserTool.test.ts +184 -13
  376. package/src/test/HandTool.test.ts +10 -9
  377. package/src/test/HighlightShape.test.ts +2 -1
  378. package/src/test/SelectTool.test.ts +3 -2
  379. package/src/test/TLUserPreferences.test.ts +4 -3
  380. package/src/test/TestEditor.ts +21 -17
  381. package/src/test/TldrawEditor.test.tsx +11 -10
  382. package/src/test/ZoomTool.test.ts +7 -6
  383. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  384. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  385. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  386. package/src/test/arrows-megabus.test.tsx +5 -4
  387. package/src/test/bindings.test.tsx +24 -37
  388. package/src/test/bookmark-shapes.test.ts +1 -8
  389. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  390. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  391. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  392. package/src/test/commands/alignShapes.test.tsx +25 -24
  393. package/src/test/commands/animationSpeed.test.ts +2 -1
  394. package/src/test/commands/centerOnPoint.test.ts +3 -2
  395. package/src/test/commands/clipboard.test.ts +3 -2
  396. package/src/test/commands/createShapes.test.ts +2 -1
  397. package/src/test/commands/deleteShapes.test.ts +2 -1
  398. package/src/test/commands/distributeShapes.test.tsx +11 -10
  399. package/src/test/commands/getSvgString.test.ts +2 -1
  400. package/src/test/commands/packShapes.test.ts +5 -4
  401. package/src/test/commands/resizeShape.test.ts +2 -1
  402. package/src/test/commands/rotateShapes.test.ts +7 -6
  403. package/src/test/commands/setCamera.test.ts +4 -3
  404. package/src/test/commands/setCurrentPage.test.ts +3 -2
  405. package/src/test/commands/stackShapes.test.ts +11 -10
  406. package/src/test/commands/stretch.test.tsx +13 -12
  407. package/src/test/createDeepLink.test.tsx +2 -1
  408. package/src/test/cropping.test.ts +3 -2
  409. package/src/test/custom-clipping.test.ts +436 -0
  410. package/src/test/drawing.test.ts +2 -1
  411. package/src/test/flipShapes.test.ts +4 -3
  412. package/src/test/frames.test.ts +25 -24
  413. package/src/test/getCulledShapes.test.tsx +74 -4
  414. package/src/test/groups.test.tsx +1 -1
  415. package/src/test/handleDeepLink.test.tsx +2 -1
  416. package/src/test/maxShapes.test.ts +3 -2
  417. package/src/test/modifiers.test.ts +5 -4
  418. package/src/test/navigation.test.ts +12 -11
  419. package/src/test/panning.test.ts +2 -1
  420. package/src/test/perf/perf.test.ts +2 -1
  421. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  422. package/src/test/resizing.test.ts +39 -38
  423. package/src/test/select.test.tsx +4 -3
  424. package/src/test/selection-omnibus.test.ts +11 -10
  425. package/src/test/shapeutils.test.ts +4 -3
  426. package/src/test/translating.test.ts +9 -8
  427. package/tldraw.css +578 -523
  428. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  429. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  430. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  431. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +0 -131
  432. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  433. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  434. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  435. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  436. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +0 -115
  437. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  438. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +0 -110
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,21 +142,21 @@
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
  }
@@ -168,12 +168,12 @@
168
168
  min-height: 40px;
169
169
  width: 100%;
170
170
  gap: 8px;
171
- margin: -4px 0px;
171
+ margin-top: -4px;
172
172
  }
173
173
 
174
174
  .tlui-button__menu::after {
175
175
  inset: 4px;
176
- border-radius: var(--radius-2);
176
+ border-radius: var(--tl-radius-2);
177
177
  }
178
178
 
179
179
  .tlui-button__menu > .tlui-icon + .tlui-button__label {
@@ -206,7 +206,7 @@
206
206
  pointer-events: all;
207
207
  height: 40px;
208
208
  width: 40px;
209
- border-radius: var(--radius-2);
209
+ border-radius: var(--tl-radius-2);
210
210
  }
211
211
 
212
212
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
@@ -240,15 +240,15 @@
240
240
  }
241
241
 
242
242
  .tlui-button__tool[aria-pressed='true'] {
243
- color: var(--color-selected-contrast);
243
+ color: var(--tl-color-selected-contrast);
244
244
  }
245
245
 
246
246
  .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
247
- color: var(--color-selected-contrast);
247
+ color: var(--tl-color-selected-contrast);
248
248
  }
249
249
 
250
250
  .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
251
- background: var(--color-selected);
251
+ background: var(--tl-color-selected);
252
252
  opacity: 1;
253
253
  }
254
254
 
@@ -321,9 +321,9 @@
321
321
  pointer-events: none;
322
322
  user-select: none;
323
323
  contain: strict;
324
- z-index: var(--layer-panels);
324
+ z-index: var(--tl-layer-panels);
325
325
  transform: translate3d(0, 0, 0);
326
- --sab: env(safe-area-inset-bottom);
326
+ --tl-sab: env(safe-area-inset-bottom);
327
327
  font-weight: 500;
328
328
  line-height: 1.6;
329
329
  -webkit-font-smoothing: antialiased;
@@ -376,11 +376,11 @@
376
376
  justify-content: flex-start;
377
377
  align-items: flex-start;
378
378
  width: min-content;
379
- gap: var(--space-3);
380
- margin: var(--space-2) var(--space-3);
379
+ gap: var(--tl-space-3);
380
+ margin: var(--tl-space-2) var(--tl-space-3);
381
381
  white-space: nowrap;
382
382
  pointer-events: none;
383
- z-index: var(--layer-panels);
383
+ z-index: var(--tl-layer-panels);
384
384
  }
385
385
 
386
386
  /* ---------------------- Icon ---------------------- */
@@ -408,7 +408,7 @@
408
408
 
409
409
  .tlui-slider__container {
410
410
  width: 100%;
411
- padding: 0px var(--space-4);
411
+ padding: 0px var(--tl-space-4);
412
412
  }
413
413
 
414
414
  .tlui-slider {
@@ -434,7 +434,7 @@
434
434
  content: '';
435
435
  height: 3px;
436
436
  width: 100%;
437
- background-color: var(--color-muted-1);
437
+ background-color: var(--tl-color-muted-1);
438
438
  border-radius: 14px;
439
439
  }
440
440
 
@@ -443,7 +443,7 @@
443
443
  top: calc(50% - 2px);
444
444
  left: 0px;
445
445
  height: 3px;
446
- background-color: var(--color-selected);
446
+ background-color: var(--tl-color-selected);
447
447
  border-radius: 14px;
448
448
  }
449
449
 
@@ -455,16 +455,16 @@
455
455
  height: 18px;
456
456
  position: relative;
457
457
  top: -1px;
458
- background-color: var(--color-panel);
458
+ background-color: var(--tl-color-panel);
459
459
  border-radius: 999px;
460
- box-shadow: inset 0px 0px 0px 2px var(--color-text-1);
460
+ box-shadow: inset 0px 0px 0px 2px var(--tl-color-text-1);
461
461
  }
462
462
 
463
463
  .tlui-slider__thumb:active {
464
464
  cursor: grabbing;
465
465
  box-shadow:
466
- inset 0px 0px 0px 2px var(--color-text-1),
467
- var(--shadow-1);
466
+ inset 0px 0px 0px 2px var(--tl-color-text-1),
467
+ var(--tl-shadow-1);
468
468
  }
469
469
 
470
470
  /* ---------------------- Input --------------------- */
@@ -473,7 +473,7 @@
473
473
  background: none;
474
474
  margin: 0px;
475
475
  position: relative;
476
- z-index: var(--layer-above);
476
+ z-index: var(--tl-layer-above);
477
477
  height: 40px;
478
478
  max-height: 40px;
479
479
  display: flex;
@@ -482,8 +482,8 @@
482
482
  font-family: inherit;
483
483
  font-size: 12px;
484
484
  font-weight: inherit;
485
- color: var(--color-text-1);
486
- padding: var(--space-4);
485
+ color: var(--tl-color-text-1);
486
+ padding: var(--tl-space-4);
487
487
  padding-left: 0px;
488
488
  border: none;
489
489
  outline: none;
@@ -494,13 +494,17 @@
494
494
  -webkit-user-select: auto !important;
495
495
  }
496
496
 
497
+ .tlui-input::placeholder {
498
+ color: var(--tl-color-text-3);
499
+ }
500
+
497
501
  .tlui-input__wrapper {
498
502
  width: 100%;
499
503
  height: 44px;
500
504
  display: flex;
501
505
  align-items: center;
502
- gap: var(--space-4);
503
- color: var(--color-text);
506
+ gap: var(--tl-space-4);
507
+ color: var(--tl-color-text);
504
508
  }
505
509
 
506
510
  .tlui-input__wrapper > .tlui-icon {
@@ -532,7 +536,7 @@
532
536
  grid-auto-columns: minmax(1em, auto);
533
537
  align-self: bottom;
534
538
  color: currentColor;
535
- margin-left: var(--space-4);
539
+ margin-left: var(--tl-space-4);
536
540
  }
537
541
 
538
542
  .tlui-kbd > span {
@@ -549,13 +553,13 @@
549
553
  }
550
554
 
551
555
  .tlui-kbd:not(:last-child) {
552
- margin-right: var(--space-2);
556
+ margin-right: var(--tl-space-2);
553
557
  }
554
558
 
555
559
  /* Focus Mode Button */
556
560
 
557
561
  .tlui-focus-button {
558
- z-index: var(--layer-panels);
562
+ z-index: var(--tl-layer-panels);
559
563
  pointer-events: all;
560
564
  }
561
565
 
@@ -566,16 +570,22 @@
566
570
  }
567
571
 
568
572
  .tlui-menu {
569
- z-index: var(--layer-menus);
573
+ z-index: var(--tl-layer-menus);
570
574
  height: fit-content;
571
575
  width: fit-content;
572
- border-radius: var(--radius-3);
576
+ border-radius: var(--tl-radius-3);
573
577
  pointer-events: all;
574
578
  touch-action: auto;
575
579
  overflow-y: auto;
576
580
  overscroll-behavior: none;
577
- background-color: var(--color-panel);
578
- 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
+ }
579
589
  }
580
590
 
581
591
  .tlui-menu::-webkit-scrollbar {
@@ -593,7 +603,7 @@
593
603
  }
594
604
 
595
605
  .tlui-menu__group {
596
- border-bottom: 1px solid var(--color-divider);
606
+ border-bottom: 1px solid var(--tl-color-divider);
597
607
  }
598
608
  .tlui-menu__group:nth-last-of-type(1) {
599
609
  border-bottom: none;
@@ -603,23 +613,23 @@
603
613
 
604
614
  .tlui-menu__submenu__trigger[data-state='open']::after {
605
615
  opacity: 1;
606
- 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%);
607
617
  }
608
618
 
609
619
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
610
620
  opacity: 1;
611
- 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%);
612
622
  }
613
623
 
614
624
  @media (hover: hover) {
615
625
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
616
626
  opacity: 1;
617
- 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%);
618
628
  }
619
629
 
620
630
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
621
631
  opacity: 1;
622
- 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%);
623
633
  }
624
634
  }
625
635
 
@@ -644,7 +654,7 @@
644
654
  .tlui-menu-click-capture {
645
655
  position: fixed;
646
656
  inset: 0;
647
- z-index: var(--layer-menu-click-capture);
657
+ z-index: var(--tl-layer-menu-click-capture);
648
658
  }
649
659
 
650
660
  /* --------------------- Popover -------------------- */
@@ -660,10 +670,10 @@
660
670
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
661
671
  margin: 0px;
662
672
  border: none;
663
- border-radius: var(--radius-3);
664
- background-color: var(--color-panel);
665
- box-shadow: var(--shadow-3);
666
- 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);
667
677
  overflow: hidden;
668
678
  overflow-y: auto;
669
679
  touch-action: auto;
@@ -676,22 +686,22 @@
676
686
 
677
687
  .tlui-menu-zone {
678
688
  position: relative;
679
- z-index: var(--layer-panels);
689
+ z-index: var(--tl-layer-panels);
680
690
  width: fit-content;
681
- border-right: 2px solid var(--color-background);
682
- border-bottom: 2px solid var(--color-background);
683
- border-bottom-right-radius: var(--radius-4);
684
- 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);
685
695
  }
686
696
 
687
697
  .tlui-menu-zone *[data-state='open']::after {
688
- 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%);
689
699
  opacity: 1;
690
700
  }
691
701
 
692
702
  @media (hover: hover) {
693
703
  .tlui-menu-zone *[data-state='open']:not(:hover)::after {
694
- 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%);
695
705
  opacity: 1;
696
706
  }
697
707
  }
@@ -717,8 +727,8 @@
717
727
  align-items: center;
718
728
  width: 100%;
719
729
  height: 40px;
720
- padding-left: var(--space-4);
721
- border-bottom: 1px solid var(--color-divider);
730
+ padding-left: var(--tl-space-4);
731
+ border-bottom: 1px solid var(--tl-color-divider);
722
732
  }
723
733
 
724
734
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -726,7 +736,7 @@
726
736
  }
727
737
 
728
738
  .tlui-page-menu__header__title {
729
- color: var(--color-text);
739
+ color: var(--tl-color-text);
730
740
  font-size: 12px;
731
741
  flex-grow: 2;
732
742
  }
@@ -811,7 +821,7 @@
811
821
  display: inline-flex;
812
822
  align-items: center;
813
823
  justify-content: center;
814
- color: var(--color-text);
824
+ color: var(--tl-color-text);
815
825
  }
816
826
 
817
827
  .tlui-page_menu__item__sortable {
@@ -824,7 +834,7 @@
824
834
  flex-direction: row;
825
835
  align-items: center;
826
836
  overflow: hidden;
827
- z-index: var(--layer-above);
837
+ z-index: var(--tl-layer-above);
828
838
  }
829
839
 
830
840
  .tlui-page_menu__item__sortable__title {
@@ -836,7 +846,7 @@
836
846
  }
837
847
 
838
848
  .tlui-page_menu__item__sortable:focus-visible {
839
- z-index: var(--layer-focused-input);
849
+ z-index: var(--tl-layer-focused-input);
840
850
  }
841
851
 
842
852
  .tlui-page_menu__item__sortable__handle {
@@ -845,7 +855,7 @@
845
855
  min-width: 0px;
846
856
  height: 40px;
847
857
  cursor: grab;
848
- color: var(--color-text-3);
858
+ color: var(--tl-color-text-3);
849
859
  flex-shrink: 0;
850
860
  margin-right: -9px;
851
861
  }
@@ -887,13 +897,13 @@
887
897
  }
888
898
 
889
899
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']::after {
890
- 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%);
891
901
  opacity: 1;
892
902
  }
893
903
 
894
904
  @media (hover: hover) {
895
905
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']:not(:hover)::after {
896
- 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%);
897
907
  opacity: 1;
898
908
  }
899
909
  }
@@ -929,7 +939,7 @@
929
939
  top: 48px;
930
940
  left: -9999px;
931
941
  padding: 8px 16px;
932
- z-index: var(--layer-toasts);
942
+ z-index: var(--tl-layer-toasts);
933
943
  }
934
944
 
935
945
  .tl-skip-to-main-content:focus {
@@ -941,11 +951,11 @@
941
951
  .tlui-offline-indicator {
942
952
  display: flex;
943
953
  flex-direction: row;
944
- gap: var(--space-3);
945
- color: var(--color-text);
946
- background-color: var(--color-low);
947
- border: 3px solid var(--color-background);
948
- 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);
949
959
  height: 42px;
950
960
  align-items: center;
951
961
  justify-content: center;
@@ -960,10 +970,10 @@
960
970
  /* ------------------- Style panel ------------------ */
961
971
 
962
972
  .tlui-style-panel__wrapper {
963
- box-shadow: var(--shadow-2);
964
- border-radius: var(--radius-3);
973
+ box-shadow: var(--tl-shadow-2);
974
+ border-radius: var(--tl-radius-3);
965
975
  pointer-events: all;
966
- background-color: var(--color-panel);
976
+ background-color: var(--tl-color-panel);
967
977
  height: fit-content;
968
978
  max-height: 100%;
969
979
  margin: 8px;
@@ -972,7 +982,7 @@
972
982
  overscroll-behavior: none;
973
983
  overflow-y: auto;
974
984
  overflow-x: hidden;
975
- color: var(--color-text);
985
+ color: var(--tl-color-text);
976
986
  }
977
987
  /* if the style panel is the only child (ie no share menu), increase the margin */
978
988
  .tlui-style-panel__wrapper:only-child {
@@ -981,7 +991,7 @@
981
991
 
982
992
  .tlui-style-panel {
983
993
  position: relative;
984
- z-index: var(--layer-panels);
994
+ z-index: var(--tl-layer-panels);
985
995
  pointer-events: all;
986
996
  width: 148px;
987
997
  max-width: 148px;
@@ -989,7 +999,7 @@
989
999
 
990
1000
  .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
991
1001
  border-radius: 10px;
992
- outline: 2px solid var(--color-text);
1002
+ outline: 2px solid var(--tl-color-text);
993
1003
  outline-offset: -5px;
994
1004
  }
995
1005
 
@@ -1007,29 +1017,56 @@
1007
1017
  flex-direction: column;
1008
1018
  }
1009
1019
 
1010
- .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
1011
- 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;
1012
1036
  }
1013
1037
 
1014
1038
  .tlui-style-panel__section:empty {
1015
1039
  display: none;
1016
1040
  }
1017
1041
 
1042
+ /*
1043
+ * This is used in a couple places, like Align and Vertical Align.
1044
+ * It's because we have a toolbar with a Toggle Group but then an adjacent button
1045
+ * next to it that opens a popup.
1046
+ */
1047
+ .tlui-style-panel__section .tlui-toolbar:has(.tlui-toolbar) {
1048
+ flex-wrap: wrap;
1049
+ }
1050
+
1051
+ .tlui-style-panel__section .tlui-toolbar:has(.tlui-toolbar) .tlui-style-panel__subheading {
1052
+ margin-left: -2px;
1053
+ }
1054
+
1018
1055
  .tlui-style-panel__section__common:not(:only-child) {
1019
1056
  margin-bottom: 7px;
1020
- border-bottom: 1px solid var(--color-divider);
1057
+ border-bottom: 1px solid var(--tl-color-divider);
1021
1058
  }
1022
1059
 
1023
1060
  .tlui-style-panel__dropdown-picker:only-child {
1024
- width: 100%;
1061
+ flex: 1;
1025
1062
  }
1026
1063
 
1027
1064
  .tlui-style-panel__double-select-picker {
1028
1065
  display: flex;
1029
1066
  grid-template-columns: 1fr auto;
1030
1067
  align-items: center;
1031
- padding-left: var(--space-4);
1032
- color: var(--color-text-1);
1068
+ padding-left: var(--tl-space-4);
1069
+ color: var(--tl-color-text-1);
1033
1070
  font-size: 12px;
1034
1071
  }
1035
1072
 
@@ -1043,13 +1080,16 @@
1043
1080
 
1044
1081
  .tlui-style-panel .tlui-button[data-state='open']::after {
1045
1082
  opacity: 1;
1046
- 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%);
1047
1084
  }
1048
1085
 
1049
1086
  @media (hover: hover) {
1087
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
1088
+ background: none;
1089
+ }
1050
1090
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
1051
1091
  opacity: 1;
1052
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1092
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1053
1093
  }
1054
1094
  }
1055
1095
 
@@ -1059,14 +1099,14 @@
1059
1099
  .tlui-style-panel__section__common .tlui-style-panel__subheading,
1060
1100
  .tlui-style-panel__subheading + .tlui-slider__container {
1061
1101
  margin: 0;
1062
- padding: var(--space-2) var(--space-3) 0px var(--space-4);
1102
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
1063
1103
  font-size: 12px;
1064
1104
  font-weight: inherit;
1065
1105
  line-height: inherit;
1066
1106
  }
1067
1107
 
1068
1108
  .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1069
- padding-top: var(--space-3);
1109
+ padding-top: var(--tl-space-3);
1070
1110
  }
1071
1111
 
1072
1112
  .tlui-style-panel__subheading + .tlui-slider__container {
@@ -1078,7 +1118,6 @@
1078
1118
  .tlui-layout__bottom {
1079
1119
  grid-row: 2;
1080
1120
  width: 100%;
1081
- overflow: hidden;
1082
1121
  }
1083
1122
 
1084
1123
  .tlui-layout__bottom__main {
@@ -1094,7 +1133,7 @@
1094
1133
  display: flex;
1095
1134
  width: min-content;
1096
1135
  flex-direction: column;
1097
- z-index: var(--layer-panels);
1136
+ z-index: var(--tl-layer-panels);
1098
1137
  pointer-events: all;
1099
1138
  position: absolute;
1100
1139
  left: 0px;
@@ -1107,10 +1146,10 @@
1107
1146
  z-index: -1;
1108
1147
  inset: -2px -2px 0px 0px;
1109
1148
  border-radius: 0;
1110
- border-top: 2px solid var(--color-background);
1111
- border-right: 2px solid var(--color-background);
1112
- border-top-right-radius: var(--radius-4);
1113
- background-color: var(--color-low);
1149
+ border-top: 2px solid var(--tl-color-background);
1150
+ border-right: 2px solid var(--tl-color-background);
1151
+ border-top-right-radius: var(--tl-radius-4);
1152
+ background-color: var(--tl-color-low);
1114
1153
  }
1115
1154
 
1116
1155
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -1124,7 +1163,7 @@
1124
1163
  height: 96px;
1125
1164
  min-height: 96px;
1126
1165
  overflow: hidden;
1127
- padding: var(--space-3);
1166
+ padding: var(--tl-space-3);
1128
1167
  padding-top: 0px;
1129
1168
  }
1130
1169
 
@@ -1147,7 +1186,7 @@
1147
1186
  }
1148
1187
 
1149
1188
  .tlui-main-toolbar--horizontal {
1150
- padding-bottom: calc(var(--space-3) + var(--sab));
1189
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
1151
1190
  max-width: 100%;
1152
1191
  }
1153
1192
 
@@ -1156,7 +1195,7 @@
1156
1195
  left: 0;
1157
1196
  top: 90px; /* height of page menu + 'back to content' button */
1158
1197
  bottom: 140px; /* height of expanded mini-map */
1159
- padding-left: calc(var(--space-3) + var(--sab));
1198
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
1160
1199
  }
1161
1200
 
1162
1201
  [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
@@ -1168,7 +1207,7 @@
1168
1207
  position: relative;
1169
1208
  width: fit-content;
1170
1209
  display: flex;
1171
- gap: var(--space-3);
1210
+ gap: var(--tl-space-3);
1172
1211
  align-items: flex-start;
1173
1212
  }
1174
1213
 
@@ -1187,7 +1226,7 @@
1187
1226
  /* Row of controls + lock button */
1188
1227
  .tlui-main-toolbar__extras {
1189
1228
  position: relative;
1190
- z-index: var(--layer-above);
1229
+ z-index: var(--tl-layer-above);
1191
1230
  pointer-events: none;
1192
1231
  align-self: stretch;
1193
1232
  }
@@ -1208,23 +1247,23 @@
1208
1247
 
1209
1248
  .tlui-main-toolbar__extras__controls {
1210
1249
  position: relative;
1211
- z-index: var(--layer-above);
1212
- background-color: var(--color-low);
1213
- border: 2px solid var(--color-background);
1250
+ z-index: var(--tl-layer-above);
1251
+ background-color: var(--tl-color-low);
1252
+ border: 2px solid var(--tl-color-background);
1214
1253
  pointer-events: all;
1215
1254
  }
1216
1255
 
1217
1256
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
1218
- border-top-left-radius: var(--radius-4);
1219
- border-top-right-radius: var(--radius-4);
1257
+ border-top-left-radius: var(--tl-radius-4);
1258
+ border-top-right-radius: var(--tl-radius-4);
1220
1259
  margin-left: 8px;
1221
1260
  margin-right: 0px;
1222
1261
  width: fit-content;
1223
1262
  }
1224
1263
 
1225
1264
  .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
1226
- border-top-right-radius: var(--radius-4);
1227
- border-bottom-right-radius: var(--radius-4);
1265
+ border-top-right-radius: var(--tl-radius-4);
1266
+ border-bottom-right-radius: var(--tl-radius-4);
1228
1267
  margin-top: 8px;
1229
1268
  margin-left: -2px;
1230
1269
  margin-bottom: 0px;
@@ -1232,12 +1271,12 @@
1232
1271
  }
1233
1272
 
1234
1273
  .tlui-main-toolbar__tools {
1235
- border-radius: var(--radius-4);
1236
- z-index: var(--layer-panels);
1274
+ border-radius: var(--tl-radius-4);
1275
+ z-index: var(--tl-layer-panels);
1237
1276
  pointer-events: all;
1238
1277
  position: relative;
1239
- background: var(--color-panel);
1240
- box-shadow: var(--shadow-2);
1278
+ background: var(--tl-color-panel);
1279
+ box-shadow: var(--tl-shadow-2);
1241
1280
  }
1242
1281
 
1243
1282
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
@@ -1262,14 +1301,18 @@
1262
1301
  }
1263
1302
 
1264
1303
  .tlui-main-toolbar--horizontal *[data-state='open']::after {
1265
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1304
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1266
1305
  opacity: 1;
1267
1306
  }
1268
1307
  .tlui-main-toolbar--vertical *[data-state='open']::after {
1269
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1308
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1270
1309
  opacity: 1;
1271
1310
  }
1272
1311
 
1312
+ .tlui-main-toolbar__overflow-content {
1313
+ touch-action: none;
1314
+ }
1315
+
1273
1316
  .tlui-main-toolbar__tools [data-toolbar-visible='false'],
1274
1317
  .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
1275
1318
  display: none;
@@ -1298,11 +1341,11 @@
1298
1341
 
1299
1342
  @media (hover: hover) {
1300
1343
  .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
1301
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1344
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1302
1345
  opacity: 1;
1303
1346
  }
1304
1347
  .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
1305
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1348
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1306
1349
  opacity: 1;
1307
1350
  }
1308
1351
  }
@@ -1313,44 +1356,40 @@
1313
1356
  font-size: 12px;
1314
1357
  padding: 2px 8px;
1315
1358
  border-radius: 4px;
1316
- background-color: var(--color-tooltip);
1359
+ background-color: var(--tl-color-tooltip);
1317
1360
  box-shadow: none;
1318
- color: var(--color-text-shadow);
1361
+ color: var(--tl-color-text-shadow);
1319
1362
  max-width: 400px;
1320
1363
  width: fit-content;
1321
1364
  text-align: center;
1322
- pointer-events: none;
1323
1365
  will-change: transform, opacity;
1324
1366
  z-index: 2;
1325
1367
  }
1326
1368
 
1327
1369
  .tlui-tooltip__arrow {
1328
- fill: var(--color-tooltip);
1370
+ fill: var(--tl-color-tooltip);
1329
1371
  will-change: opacity;
1330
1372
  }
1331
1373
 
1332
1374
  [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
1333
- z-index: var(--layer-toasts) !important;
1334
- }
1335
-
1336
- [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
1337
- transition: all 0.1s ease-out;
1375
+ z-index: var(--tl-layer-toasts) !important;
1376
+ pointer-events: none;
1338
1377
  }
1339
1378
 
1340
1379
  /* ------------------- Debug panel ------------------ */
1341
1380
 
1342
1381
  .tlui-debug-panel {
1343
- background-color: var(--color-low);
1382
+ background-color: var(--tl-color-low);
1344
1383
  width: 100%;
1345
1384
  display: grid;
1346
1385
  align-items: center;
1347
1386
  grid-template-columns: 1fr auto auto auto;
1348
1387
  justify-content: space-between;
1349
- padding-left: var(--space-4);
1350
- border-top: 1px solid var(--color-background);
1388
+ padding-left: var(--tl-space-4);
1389
+ border-top: 1px solid var(--tl-color-background);
1351
1390
  font-size: 12px;
1352
- color: var(--color-text-1);
1353
- z-index: var(--layer-panels);
1391
+ color: var(--tl-color-text-1);
1392
+ z-index: var(--tl-layer-panels);
1354
1393
  pointer-events: all;
1355
1394
  }
1356
1395
 
@@ -1366,7 +1405,7 @@
1366
1405
 
1367
1406
  .tlui-debug-panel__fps__slow {
1368
1407
  font-weight: bold;
1369
- color: var(--color-danger);
1408
+ color: var(--tl-color-danger);
1370
1409
  }
1371
1410
 
1372
1411
  .tlui-a11y-audit {
@@ -1376,7 +1415,7 @@
1376
1415
  .tlui-a11y-audit th,
1377
1416
  .tlui-a11y-audit td {
1378
1417
  padding: 8px;
1379
- border: 1px solid var(--color-low-border);
1418
+ border: 1px solid var(--tl-color-low-border);
1380
1419
  }
1381
1420
 
1382
1421
  /* --------------------- Toasts --------------------- */
@@ -1389,10 +1428,10 @@
1389
1428
  align-items: flex-end;
1390
1429
  justify-content: flex-end;
1391
1430
  flex-direction: column;
1392
- gap: var(--space-3);
1431
+ gap: var(--tl-space-3);
1393
1432
  pointer-events: none;
1394
- padding: 0px var(--space-3) 64px 0px;
1395
- z-index: var(--layer-toasts);
1433
+ padding: 0px var(--tl-space-3) 64px 0px;
1434
+ z-index: var(--tl-layer-toasts);
1396
1435
  }
1397
1436
 
1398
1437
  .tlui-toast__viewport > * {
@@ -1401,34 +1440,34 @@
1401
1440
 
1402
1441
  .tlui-toast__icon {
1403
1442
  padding-top: 11px;
1404
- padding-left: var(--space-4);
1405
- color: var(--color-text-1);
1443
+ padding-left: var(--tl-space-4);
1444
+ color: var(--tl-color-text-1);
1406
1445
  }
1407
1446
 
1408
1447
  .tlui-toast__container {
1409
1448
  min-width: 200px;
1410
1449
  display: flex;
1411
1450
  flex-direction: row;
1412
- background-color: var(--color-panel);
1413
- box-shadow: var(--shadow-2);
1414
- border-radius: var(--radius-3);
1451
+ background-color: var(--tl-color-panel);
1452
+ box-shadow: var(--tl-shadow-2);
1453
+ border-radius: var(--tl-radius-3);
1415
1454
  font-size: 12px;
1416
1455
  }
1417
1456
 
1418
1457
  .tlui-toast__container[data-severity='success'] .tlui-icon {
1419
- color: var(--color-success);
1458
+ color: var(--tl-color-success);
1420
1459
  }
1421
1460
 
1422
1461
  .tlui-toast__container[data-severity='info'] .tlui-icon {
1423
- color: var(--color-info);
1462
+ color: var(--tl-color-info);
1424
1463
  }
1425
1464
 
1426
1465
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
1427
- color: var(--color-warning);
1466
+ color: var(--tl-color-warning);
1428
1467
  }
1429
1468
 
1430
1469
  .tlui-toast__container[data-severity='error'] .tlui-icon {
1431
- color: var(--color-danger);
1470
+ color: var(--tl-color-danger);
1432
1471
  }
1433
1472
 
1434
1473
  .tlui-toast__main {
@@ -1437,27 +1476,27 @@
1437
1476
  }
1438
1477
 
1439
1478
  .tlui-toast__content {
1440
- padding: var(--space-4);
1479
+ padding: var(--tl-space-4);
1441
1480
  display: flex;
1442
1481
  line-height: 1.4;
1443
1482
  flex-direction: column;
1444
- gap: var(--space-3);
1483
+ gap: var(--tl-space-3);
1445
1484
  }
1446
1485
 
1447
1486
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
1448
- padding-bottom: var(--space-2);
1487
+ padding-bottom: var(--tl-space-2);
1449
1488
  }
1450
1489
 
1451
1490
  .tlui-toast__title {
1452
1491
  font-weight: bold;
1453
- color: var(--color-text-1);
1492
+ color: var(--tl-color-text-1);
1454
1493
  /* this makes the default toast look better */
1455
1494
  line-height: 16px;
1456
1495
  }
1457
1496
 
1458
1497
  .tlui-toast__description {
1459
- color: var(--color-text-1);
1460
- padding: var(--space-3);
1498
+ color: var(--tl-color-text-1);
1499
+ padding: var(--tl-space-3);
1461
1500
  margin: 0px;
1462
1501
  padding: 0px;
1463
1502
  }
@@ -1509,14 +1548,14 @@
1509
1548
  left: 0px;
1510
1549
  width: 100%;
1511
1550
  height: 100%;
1512
- z-index: var(--layer-canvas-overlays);
1513
- background-color: var(--color-overlay);
1551
+ z-index: var(--tl-layer-canvas-overlays);
1552
+ background-color: var(--tl-color-overlay);
1514
1553
  pointer-events: all;
1515
1554
  animation: tl-fade-in 0.12s ease-out;
1516
1555
  display: grid;
1517
1556
  place-items: center;
1518
1557
  overflow-y: auto;
1519
- padding: 0px var(--space-3);
1558
+ padding: 0px var(--tl-space-3);
1520
1559
  }
1521
1560
 
1522
1561
  .tlui-dialog__content {
@@ -1524,9 +1563,9 @@
1524
1563
  flex-direction: column;
1525
1564
  position: relative;
1526
1565
  cursor: default;
1527
- background-color: var(--color-panel);
1528
- box-shadow: var(--shadow-3);
1529
- border-radius: var(--radius-3);
1566
+ background-color: var(--tl-color-panel);
1567
+ box-shadow: var(--tl-shadow-3);
1568
+ border-radius: var(--tl-radius-3);
1530
1569
  font-size: 12px;
1531
1570
  overflow: hidden;
1532
1571
  min-width: 300px;
@@ -1539,9 +1578,9 @@
1539
1578
  display: flex;
1540
1579
  align-items: center;
1541
1580
  flex: 0;
1542
- z-index: var(--layer-header-footer);
1543
- padding-left: var(--space-4);
1544
- color: var(--color-text);
1581
+ z-index: var(--tl-layer-header-footer);
1582
+ padding-left: var(--tl-space-4);
1583
+ color: var(--tl-color-text);
1545
1584
  height: 40px;
1546
1585
  }
1547
1586
 
@@ -1550,7 +1589,7 @@
1550
1589
  font-weight: inherit;
1551
1590
  font-size: 12px;
1552
1591
  margin: 0px;
1553
- color: var(--color-text-1);
1592
+ color: var(--tl-color-text-1);
1554
1593
  }
1555
1594
 
1556
1595
  .tlui-dialog__header__close {
@@ -1558,16 +1597,16 @@
1558
1597
  }
1559
1598
 
1560
1599
  .tlui-dialog__body {
1561
- padding: var(--space-4) var(--space-4);
1600
+ padding: var(--tl-space-4) var(--tl-space-4);
1562
1601
  flex: 0 1;
1563
1602
  overflow-y: auto;
1564
1603
  overflow-x: hidden;
1565
- color: var(--color-text-1);
1604
+ color: var(--tl-color-text-1);
1566
1605
  user-select: all;
1567
1606
  -webkit-user-select: text;
1568
1607
  }
1569
1608
  .tlui-dialog__body a {
1570
- color: var(--color-selected);
1609
+ color: var(--tl-color-selected);
1571
1610
  }
1572
1611
 
1573
1612
  .tlui-dialog__body ul,
@@ -1575,13 +1614,13 @@
1575
1614
  padding-left: 16px;
1576
1615
  display: flex;
1577
1616
  flex-direction: column;
1578
- gap: var(--space-2);
1617
+ gap: var(--tl-space-2);
1579
1618
  }
1580
1619
 
1581
1620
  .tlui-dialog__footer {
1582
1621
  position: relative;
1583
1622
  min-height: 12px;
1584
- z-index: var(--layer-header-footer);
1623
+ z-index: var(--tl-layer-header-footer);
1585
1624
  }
1586
1625
 
1587
1626
  .tlui-dialog__footer__actions {
@@ -1601,15 +1640,15 @@
1601
1640
  .tlui-edit-link-dialog {
1602
1641
  display: flex;
1603
1642
  flex-direction: column;
1604
- gap: var(--space-4);
1605
- color: var(--color-text);
1643
+ gap: var(--tl-space-4);
1644
+ color: var(--tl-color-text);
1606
1645
  }
1607
1646
 
1608
1647
  .tlui-edit-link-dialog__input {
1609
- background-color: var(--color-muted-2);
1648
+ background-color: var(--tl-color-muted-2);
1610
1649
  flex-grow: 2;
1611
- border-radius: var(--radius-2);
1612
- padding: 0px var(--space-4);
1650
+ border-radius: var(--tl-radius-2);
1651
+ padding: 0px var(--tl-space-4);
1613
1652
  }
1614
1653
 
1615
1654
  /* Embed Dialog */
@@ -1617,15 +1656,15 @@
1617
1656
  .tlui-embed__spacer {
1618
1657
  flex-grow: 2;
1619
1658
  min-height: 0px;
1620
- margin-left: calc(-1 * var(--space-4));
1621
- margin-top: calc(-1 * var(--space-4));
1659
+ margin-left: calc(-1 * var(--tl-space-4));
1660
+ margin-top: calc(-1 * var(--tl-space-4));
1622
1661
  pointer-events: none;
1623
1662
  }
1624
1663
 
1625
1664
  .tlui-embed-dialog__list {
1626
1665
  display: flex;
1627
1666
  flex-direction: column;
1628
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
1667
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
1629
1668
  }
1630
1669
 
1631
1670
  .tlui-embed-dialog__item__image {
@@ -1637,49 +1676,49 @@
1637
1676
  background-size: contain;
1638
1677
  background-repeat: no-repeat;
1639
1678
  background-position: center center;
1640
- background-color: var(--color-selected-contrast);
1641
- border-radius: var(--radius-1);
1679
+ background-color: var(--tl-color-selected-contrast);
1680
+ border-radius: var(--tl-radius-1);
1642
1681
  }
1643
1682
 
1644
1683
  .tlui-embed-dialog__enter {
1645
1684
  display: flex;
1646
1685
  flex-direction: column;
1647
- gap: var(--space-4);
1648
- color: var(--color-text-1);
1686
+ gap: var(--tl-space-4);
1687
+ color: var(--tl-color-text-1);
1649
1688
  }
1650
1689
 
1651
1690
  .tlui-embed-dialog__input {
1652
- background-color: var(--color-muted-2);
1691
+ background-color: var(--tl-color-muted-2);
1653
1692
  flex-grow: 2;
1654
- border-radius: var(--radius-2);
1655
- padding: 0px var(--space-4);
1693
+ border-radius: var(--tl-radius-2);
1694
+ padding: 0px var(--tl-space-4);
1656
1695
  }
1657
1696
 
1658
1697
  .tlui-embed-dialog__warning {
1659
- color: var(--color-danger);
1698
+ color: var(--tl-color-danger);
1660
1699
  text-shadow: none;
1661
1700
  }
1662
1701
 
1663
1702
  .tlui-embed-dialog__instruction__link {
1664
1703
  display: flex;
1665
- gap: var(--space-1);
1666
- margin-top: var(--space-4);
1704
+ gap: var(--tl-space-1);
1705
+ margin-top: var(--tl-space-4);
1667
1706
  }
1668
1707
 
1669
1708
  .tlui-embed-dialog__enter a {
1670
- color: var(--color-text-1);
1709
+ color: var(--tl-color-text-1);
1671
1710
  }
1672
1711
 
1673
1712
  /* --------------- Keyboard shortcuts --------------- */
1674
1713
 
1675
1714
  .tlui-shortcuts-dialog__header {
1676
- border-bottom: 1px solid var(--color-divider);
1715
+ border-bottom: 1px solid var(--tl-color-divider);
1677
1716
  }
1678
1717
 
1679
1718
  .tlui-shortcuts-dialog__body {
1680
1719
  position: relative;
1681
1720
  columns: 3;
1682
- column-gap: var(--space-9);
1721
+ column-gap: var(--tl-space-9);
1683
1722
  pointer-events: all;
1684
1723
  touch-action: auto;
1685
1724
 
@@ -1697,14 +1736,14 @@
1697
1736
 
1698
1737
  .tlui-shortcuts-dialog__group {
1699
1738
  break-inside: avoid-column;
1700
- padding-bottom: var(--space-6);
1739
+ padding-bottom: var(--tl-space-6);
1701
1740
  }
1702
1741
 
1703
1742
  .tlui-shortcuts-dialog__group__title {
1704
1743
  font-size: inherit;
1705
1744
  font-weight: inherit;
1706
1745
  margin: 0px;
1707
- color: var(--color-text-3);
1746
+ color: var(--tl-color-text-3);
1708
1747
  height: 32px;
1709
1748
  display: flex;
1710
1749
  align-items: center;
@@ -1713,12 +1752,12 @@
1713
1752
  .tlui-shortcuts-dialog__group__content {
1714
1753
  display: flex;
1715
1754
  flex-direction: column;
1716
- color: var(--color-text-1);
1755
+ color: var(--tl-color-text-1);
1717
1756
  }
1718
1757
 
1719
1758
  .tlui-shortcuts-dialog__key-pair {
1720
1759
  display: flex;
1721
- gap: var(--space-4);
1760
+ gap: var(--tl-space-4);
1722
1761
  align-items: center;
1723
1762
  justify-content: space-between;
1724
1763
  height: 32px;
@@ -1745,12 +1784,12 @@
1745
1784
  height: 24px;
1746
1785
  background: linear-gradient(
1747
1786
  to bottom,
1748
- var(--color-panel-transparent) 0%,
1749
- var(--color-panel) 90%,
1750
- var(--color-panel) 100%
1787
+ var(--tl-color-panel-transparent) 0%,
1788
+ var(--tl-color-panel) 90%,
1789
+ var(--tl-color-panel) 100%
1751
1790
  );
1752
- border-bottom-left-radius: var(--radius-3);
1753
- border-bottom-right-radius: var(--radius-3);
1791
+ border-bottom-left-radius: var(--tl-radius-3);
1792
+ border-bottom-right-radius: var(--tl-radius-3);
1754
1793
  pointer-events: none;
1755
1794
  }
1756
1795
 
@@ -1765,10 +1804,10 @@
1765
1804
  .tlui-help-menu {
1766
1805
  pointer-events: all;
1767
1806
  position: absolute;
1768
- bottom: var(--space-2);
1769
- right: var(--space-2);
1770
- z-index: var(--layer-panels);
1771
- border: 2px solid var(--color-background);
1807
+ bottom: var(--tl-space-2);
1808
+ right: var(--tl-space-2);
1809
+ z-index: var(--tl-layer-panels);
1810
+ border: 2px solid var(--tl-color-background);
1772
1811
  border-radius: 100%;
1773
1812
  }
1774
1813
 
@@ -1779,7 +1818,7 @@
1779
1818
  display: flex;
1780
1819
  flex-direction: row;
1781
1820
  justify-content: flex-end;
1782
- z-index: var(--layer-panels);
1821
+ z-index: var(--tl-layer-panels);
1783
1822
  align-items: center;
1784
1823
  padding-top: 2px;
1785
1824
  padding-right: 4px;
@@ -1795,7 +1834,7 @@
1795
1834
  border: none;
1796
1835
  cursor: pointer;
1797
1836
  pointer-events: all;
1798
- border-radius: var(--radius-1);
1837
+ border-radius: var(--tl-radius-1);
1799
1838
  padding-right: 1px;
1800
1839
  height: 100%;
1801
1840
  }
@@ -1808,8 +1847,8 @@
1808
1847
  .tlui-people-menu__avatar {
1809
1848
  height: 24px;
1810
1849
  width: 24px;
1811
- border: 2px solid var(--color-background);
1812
- background-color: var(--color-low);
1850
+ border: 2px solid var(--tl-color-background);
1851
+ background-color: var(--tl-color-low);
1813
1852
  border-radius: 100%;
1814
1853
  display: flex;
1815
1854
  align-items: center;
@@ -1818,7 +1857,7 @@
1818
1857
  font-size: 10px;
1819
1858
  font-weight: bold;
1820
1859
  text-align: center;
1821
- color: var(--color-selected-contrast);
1860
+ color: var(--tl-color-selected-contrast);
1822
1861
  z-index: 2;
1823
1862
  }
1824
1863
 
@@ -1832,7 +1871,7 @@
1832
1871
 
1833
1872
  @media (hover: hover) {
1834
1873
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
1835
- border-color: var(--color-low);
1874
+ border-color: var(--tl-color-low);
1836
1875
  }
1837
1876
  }
1838
1877
 
@@ -1840,12 +1879,12 @@
1840
1879
  min-width: 0px;
1841
1880
  font-size: 11px;
1842
1881
  font-weight: 600;
1843
- color: var(--color-text-1);
1882
+ color: var(--tl-color-text-1);
1844
1883
  font-family: inherit;
1845
1884
  padding: 0px 4px;
1846
1885
  }
1847
1886
  .tlui-people-menu__more::after {
1848
- border-radius: var(--radius-2);
1887
+ border-radius: var(--tl-radius-2);
1849
1888
  inset: 0px;
1850
1889
  }
1851
1890
 
@@ -1874,7 +1913,7 @@
1874
1913
  }
1875
1914
 
1876
1915
  .tlui-people-menu__section:not(:last-child) {
1877
- border-bottom: 1px solid var(--color-divider);
1916
+ border-bottom: 1px solid var(--tl-color-divider);
1878
1917
  }
1879
1918
 
1880
1919
  .tlui-people-menu__user {
@@ -1893,7 +1932,7 @@
1893
1932
  text-overflow: ellipsis;
1894
1933
  white-space: nowrap;
1895
1934
  font-size: 12px;
1896
- color: var(--color-text-1);
1935
+ color: var(--tl-color-text-1);
1897
1936
  max-width: 100%;
1898
1937
  flex-grow: 1;
1899
1938
  flex-shrink: 100;
@@ -1905,7 +1944,7 @@
1905
1944
  text-overflow: ellipsis;
1906
1945
  white-space: nowrap;
1907
1946
  font-size: 12px;
1908
- color: var(--color-text-3);
1947
+ color: var(--tl-color-text-3);
1909
1948
  flex-grow: 100;
1910
1949
  flex-shrink: 0;
1911
1950
  margin-left: 4px;
@@ -1996,7 +2035,7 @@
1996
2035
  inset: 0px;
1997
2036
  border-width: 2px;
1998
2037
  border-style: solid;
1999
- z-index: var(--layer-following-indicator);
2038
+ z-index: var(--tl-layer-following-indicator);
2000
2039
  pointer-events: none;
2001
2040
  }
2002
2041
 
@@ -2015,7 +2054,7 @@
2015
2054
  }
2016
2055
 
2017
2056
  .tlui-contextual-toolbar [data-isactive='true']::after {
2018
- background-color: var(--color-muted-2);
2057
+ background-color: var(--tl-color-muted-2);
2019
2058
  opacity: 1;
2020
2059
  }
2021
2060
 
@@ -2031,7 +2070,7 @@
2031
2070
 
2032
2071
  .tlui-contextual-toolbar[data-visible='true'] {
2033
2072
  opacity: 1;
2034
- z-index: var(--layer-menus);
2073
+ z-index: var(--tl-layer-menus);
2035
2074
  }
2036
2075
 
2037
2076
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -2090,7 +2129,7 @@
2090
2129
 
2091
2130
  @keyframes tlui-slide-in {
2092
2131
  from {
2093
- transform: translateX(calc(100% + var(--space-3)));
2132
+ transform: translateX(calc(100% + var(--tl-space-3)));
2094
2133
  }
2095
2134
  to {
2096
2135
  transform: translateX(0px);
@@ -2102,6 +2141,6 @@
2102
2141
  transform: translateX(var(--radix-toast-swipe-end-x));
2103
2142
  }
2104
2143
  to {
2105
- transform: translateX(calc(100% + var(--space-3)));
2144
+ transform: translateX(calc(100% + var(--tl-space-3)));
2106
2145
  }
2107
2146
  }