tldraw 3.16.0-canary.7f4043b128a3 → 3.16.0-canary.887377ec7acc

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 (349) hide show
  1. package/dist-cjs/index.d.ts +228 -104
  2. package/dist-cjs/index.js +33 -14
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/Tldraw.js +12 -2
  5. package/dist-cjs/lib/Tldraw.js.map +2 -2
  6. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  8. package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -4
  9. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  10. package/dist-cjs/lib/shapes/arrow/arrowLabel.js +6 -0
  11. package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
  12. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  13. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  14. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  15. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  16. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -5
  17. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  19. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  20. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +1 -0
  21. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  22. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  23. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +2 -1
  25. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  26. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  27. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  28. package/dist-cjs/lib/shapes/shared/ShapeFill.js +1 -1
  29. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  30. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  31. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +0 -2
  32. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  33. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  34. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  35. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  36. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  37. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  38. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  39. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  40. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  41. package/dist-cjs/lib/ui/TldrawUi.js +13 -12
  42. package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
  43. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  44. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  45. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  46. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  47. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  48. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  49. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  50. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  51. package/dist-cjs/lib/ui/components/MobileStylePanel.js +1 -1
  52. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  53. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +9 -4
  54. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  55. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
  56. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  57. package/dist-cjs/lib/ui/components/{primitives/TldrawUiButtonPicker.js → StylePanel/StylePanelButtonPicker.js} +52 -45
  58. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  59. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  60. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  61. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +23 -22
  62. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  63. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +24 -21
  64. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  65. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  66. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  67. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +3 -2
  68. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  69. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  70. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  72. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +3 -3
  74. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  75. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +10 -1
  76. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  77. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +18 -5
  78. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +2 -0
  80. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  81. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +125 -122
  82. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  83. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  84. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +0 -10
  85. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  86. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +8 -24
  87. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  88. package/dist-cjs/lib/ui/context/actions.js +23 -10
  89. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  90. package/dist-cjs/lib/ui/context/components.js +2 -0
  91. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  92. package/dist-cjs/lib/ui/context/events.js.map +1 -1
  93. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  94. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  95. package/dist-cjs/lib/ui/hooks/useTools.js +22 -4
  96. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  97. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  98. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +4 -2
  99. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  100. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  101. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  102. package/dist-cjs/lib/ui/version.js +3 -3
  103. package/dist-cjs/lib/ui/version.js.map +1 -1
  104. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  105. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  106. package/dist-cjs/lib/utils/export/export.js +0 -20
  107. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  108. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  109. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  110. package/dist-esm/index.d.mts +228 -104
  111. package/dist-esm/index.mjs +61 -29
  112. package/dist-esm/index.mjs.map +2 -2
  113. package/dist-esm/lib/Tldraw.mjs +14 -4
  114. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  115. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  116. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  117. package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
  118. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  119. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  120. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  121. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  122. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  123. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  124. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  125. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +12 -5
  126. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  127. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  128. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  129. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +1 -0
  130. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  131. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  132. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  133. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +2 -1
  134. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  135. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  136. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  137. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +1 -1
  138. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  139. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  140. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +0 -2
  141. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  142. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  143. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  144. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  145. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  146. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  147. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  148. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  149. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  150. package/dist-esm/lib/ui/TldrawUi.mjs +13 -12
  151. package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
  152. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  153. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  154. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  155. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  156. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  157. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  158. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  159. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  160. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +1 -1
  161. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  162. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +14 -5
  163. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  164. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
  165. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  166. package/dist-esm/lib/ui/components/{primitives/TldrawUiButtonPicker.mjs → StylePanel/StylePanelButtonPicker.mjs} +54 -43
  167. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  168. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  169. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  170. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +20 -19
  171. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  172. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +21 -18
  173. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  174. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  175. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  176. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +3 -2
  177. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  178. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  179. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  180. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  181. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  182. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +3 -3
  183. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  184. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +10 -1
  185. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  186. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +18 -5
  187. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  188. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +2 -0
  189. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  190. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +135 -124
  191. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  192. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  193. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +0 -10
  194. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  195. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +8 -24
  196. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  197. package/dist-esm/lib/ui/context/actions.mjs +23 -10
  198. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  199. package/dist-esm/lib/ui/context/components.mjs +2 -0
  200. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  201. package/dist-esm/lib/ui/context/events.mjs.map +1 -1
  202. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  203. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  204. package/dist-esm/lib/ui/hooks/useTools.mjs +23 -4
  205. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  206. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +4 -2
  207. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  208. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  209. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  210. package/dist-esm/lib/ui/version.mjs +3 -3
  211. package/dist-esm/lib/ui/version.mjs.map +1 -1
  212. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  213. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  214. package/dist-esm/lib/utils/export/export.mjs +0 -20
  215. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  216. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  217. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  218. package/package.json +11 -34
  219. package/src/index.ts +44 -22
  220. package/src/lib/Tldraw.tsx +15 -2
  221. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  222. package/src/lib/defaultExternalContentHandlers.ts +12 -4
  223. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  224. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +6 -5
  225. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +48 -6
  226. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  227. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  228. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  229. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  230. package/src/lib/shapes/frame/FrameShapeUtil.tsx +21 -4
  231. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  232. package/src/lib/shapes/geo/GeoShapeUtil.tsx +1 -0
  233. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  234. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  235. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  236. package/src/lib/shapes/note/NoteShapeUtil.tsx +1 -0
  237. package/src/lib/shapes/shared/PlainTextLabel.tsx +0 -6
  238. package/src/lib/shapes/shared/ShapeFill.tsx +1 -1
  239. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  240. package/src/lib/shapes/shared/useEditablePlainText.ts +0 -6
  241. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  242. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  243. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  244. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  245. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  246. package/src/lib/ui/TldrawUi.tsx +16 -10
  247. package/src/lib/ui/assetUrls.ts +13 -10
  248. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  249. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  250. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  251. package/src/lib/ui/components/MobileStylePanel.tsx +1 -1
  252. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +27 -13
  253. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -381
  254. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +63 -50
  255. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  256. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +28 -19
  257. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  258. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  259. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +4 -3
  260. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  261. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  262. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +5 -5
  263. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +6 -1
  264. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +52 -32
  265. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +3 -0
  266. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +146 -124
  267. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  268. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +0 -10
  269. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +11 -24
  270. package/src/lib/ui/context/actions.tsx +23 -10
  271. package/src/lib/ui/context/components.tsx +3 -0
  272. package/src/lib/ui/context/events.tsx +1 -1
  273. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  274. package/src/lib/ui/hooks/useTools.tsx +26 -4
  275. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +2 -0
  276. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +4 -2
  277. package/src/lib/ui/kbd-utils.ts +10 -3
  278. package/src/lib/ui/version.ts +3 -3
  279. package/src/lib/ui.css +246 -230
  280. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  281. package/src/lib/utils/export/copyAs.ts +1 -24
  282. package/src/lib/utils/export/export.ts +0 -36
  283. package/src/lib/utils/export/exportAs.ts +1 -32
  284. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  285. package/src/test/A11y.test.tsx +3 -2
  286. package/src/test/ClickManager.test.ts +7 -6
  287. package/src/test/Editor.test.tsx +20 -19
  288. package/src/test/EraserTool.test.ts +184 -13
  289. package/src/test/HandTool.test.ts +10 -9
  290. package/src/test/HighlightShape.test.ts +2 -1
  291. package/src/test/SelectTool.test.ts +3 -2
  292. package/src/test/TLUserPreferences.test.ts +4 -3
  293. package/src/test/TestEditor.ts +13 -15
  294. package/src/test/TldrawEditor.test.tsx +11 -10
  295. package/src/test/ZoomTool.test.ts +7 -6
  296. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  297. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  298. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  299. package/src/test/arrows-megabus.test.tsx +5 -4
  300. package/src/test/bindings.test.tsx +24 -37
  301. package/src/test/bookmark-shapes.test.ts +1 -8
  302. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  303. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  304. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  305. package/src/test/commands/alignShapes.test.tsx +25 -24
  306. package/src/test/commands/animationSpeed.test.ts +2 -1
  307. package/src/test/commands/centerOnPoint.test.ts +3 -2
  308. package/src/test/commands/clipboard.test.ts +3 -2
  309. package/src/test/commands/createShapes.test.ts +2 -1
  310. package/src/test/commands/deleteShapes.test.ts +2 -1
  311. package/src/test/commands/distributeShapes.test.tsx +11 -10
  312. package/src/test/commands/getSvgString.test.ts +2 -1
  313. package/src/test/commands/packShapes.test.ts +5 -4
  314. package/src/test/commands/resizeShape.test.ts +2 -1
  315. package/src/test/commands/rotateShapes.test.ts +7 -6
  316. package/src/test/commands/setCamera.test.ts +4 -3
  317. package/src/test/commands/setCurrentPage.test.ts +3 -2
  318. package/src/test/commands/stackShapes.test.ts +11 -10
  319. package/src/test/commands/stretch.test.tsx +13 -12
  320. package/src/test/createDeepLink.test.tsx +2 -1
  321. package/src/test/cropping.test.ts +3 -2
  322. package/src/test/custom-clipping.test.ts +436 -0
  323. package/src/test/drawing.test.ts +2 -1
  324. package/src/test/flipShapes.test.ts +4 -3
  325. package/src/test/frames.test.ts +25 -24
  326. package/src/test/getCulledShapes.test.tsx +74 -4
  327. package/src/test/groups.test.tsx +1 -1
  328. package/src/test/handleDeepLink.test.tsx +2 -1
  329. package/src/test/maxShapes.test.ts +3 -2
  330. package/src/test/modifiers.test.ts +5 -4
  331. package/src/test/navigation.test.ts +12 -11
  332. package/src/test/panning.test.ts +2 -1
  333. package/src/test/perf/perf.test.ts +2 -1
  334. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  335. package/src/test/resizing.test.ts +39 -38
  336. package/src/test/select.test.tsx +4 -3
  337. package/src/test/selection-omnibus.test.ts +11 -10
  338. package/src/test/shapeutils.test.ts +4 -3
  339. package/src/test/translating.test.ts +9 -8
  340. package/tldraw.css +554 -522
  341. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  342. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  343. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  344. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  345. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  346. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  347. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  348. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  349. 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
  }
@@ -173,7 +173,7 @@
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;
@@ -499,8 +499,8 @@
499
499
  height: 44px;
500
500
  display: flex;
501
501
  align-items: center;
502
- gap: var(--space-4);
503
- color: var(--color-text);
502
+ gap: var(--tl-space-4);
503
+ color: var(--tl-color-text);
504
504
  }
505
505
 
506
506
  .tlui-input__wrapper > .tlui-icon {
@@ -532,7 +532,7 @@
532
532
  grid-auto-columns: minmax(1em, auto);
533
533
  align-self: bottom;
534
534
  color: currentColor;
535
- margin-left: var(--space-4);
535
+ margin-left: var(--tl-space-4);
536
536
  }
537
537
 
538
538
  .tlui-kbd > span {
@@ -549,13 +549,13 @@
549
549
  }
550
550
 
551
551
  .tlui-kbd:not(:last-child) {
552
- margin-right: var(--space-2);
552
+ margin-right: var(--tl-space-2);
553
553
  }
554
554
 
555
555
  /* Focus Mode Button */
556
556
 
557
557
  .tlui-focus-button {
558
- z-index: var(--layer-panels);
558
+ z-index: var(--tl-layer-panels);
559
559
  pointer-events: all;
560
560
  }
561
561
 
@@ -566,16 +566,16 @@
566
566
  }
567
567
 
568
568
  .tlui-menu {
569
- z-index: var(--layer-menus);
569
+ z-index: var(--tl-layer-menus);
570
570
  height: fit-content;
571
571
  width: fit-content;
572
- border-radius: var(--radius-3);
572
+ border-radius: var(--tl-radius-3);
573
573
  pointer-events: all;
574
574
  touch-action: auto;
575
575
  overflow-y: auto;
576
576
  overscroll-behavior: none;
577
- background-color: var(--color-panel);
578
- box-shadow: var(--shadow-3);
577
+ background-color: var(--tl-color-panel);
578
+ box-shadow: var(--tl-shadow-3);
579
579
  }
580
580
 
581
581
  .tlui-menu::-webkit-scrollbar {
@@ -593,7 +593,7 @@
593
593
  }
594
594
 
595
595
  .tlui-menu__group {
596
- border-bottom: 1px solid var(--color-divider);
596
+ border-bottom: 1px solid var(--tl-color-divider);
597
597
  }
598
598
  .tlui-menu__group:nth-last-of-type(1) {
599
599
  border-bottom: none;
@@ -603,23 +603,23 @@
603
603
 
604
604
  .tlui-menu__submenu__trigger[data-state='open']::after {
605
605
  opacity: 1;
606
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
606
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
607
607
  }
608
608
 
609
609
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
610
610
  opacity: 1;
611
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
611
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
612
612
  }
613
613
 
614
614
  @media (hover: hover) {
615
615
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
616
616
  opacity: 1;
617
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
617
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
618
618
  }
619
619
 
620
620
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
621
621
  opacity: 1;
622
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
622
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
623
623
  }
624
624
  }
625
625
 
@@ -644,7 +644,7 @@
644
644
  .tlui-menu-click-capture {
645
645
  position: fixed;
646
646
  inset: 0;
647
- z-index: var(--layer-menu-click-capture);
647
+ z-index: var(--tl-layer-menu-click-capture);
648
648
  }
649
649
 
650
650
  /* --------------------- Popover -------------------- */
@@ -660,10 +660,10 @@
660
660
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
661
661
  margin: 0px;
662
662
  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);
663
+ border-radius: var(--tl-radius-3);
664
+ background-color: var(--tl-color-panel);
665
+ box-shadow: var(--tl-shadow-3);
666
+ z-index: var(--tl-layer-menus);
667
667
  overflow: hidden;
668
668
  overflow-y: auto;
669
669
  touch-action: auto;
@@ -676,22 +676,22 @@
676
676
 
677
677
  .tlui-menu-zone {
678
678
  position: relative;
679
- z-index: var(--layer-panels);
679
+ z-index: var(--tl-layer-panels);
680
680
  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);
681
+ border-right: 2px solid var(--tl-color-background);
682
+ border-bottom: 2px solid var(--tl-color-background);
683
+ border-bottom-right-radius: var(--tl-radius-4);
684
+ background-color: var(--tl-color-low);
685
685
  }
686
686
 
687
687
  .tlui-menu-zone *[data-state='open']::after {
688
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
688
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
689
689
  opacity: 1;
690
690
  }
691
691
 
692
692
  @media (hover: hover) {
693
693
  .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%);
694
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
695
695
  opacity: 1;
696
696
  }
697
697
  }
@@ -717,8 +717,8 @@
717
717
  align-items: center;
718
718
  width: 100%;
719
719
  height: 40px;
720
- padding-left: var(--space-4);
721
- border-bottom: 1px solid var(--color-divider);
720
+ padding-left: var(--tl-space-4);
721
+ border-bottom: 1px solid var(--tl-color-divider);
722
722
  }
723
723
 
724
724
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -726,7 +726,7 @@
726
726
  }
727
727
 
728
728
  .tlui-page-menu__header__title {
729
- color: var(--color-text);
729
+ color: var(--tl-color-text);
730
730
  font-size: 12px;
731
731
  flex-grow: 2;
732
732
  }
@@ -811,7 +811,7 @@
811
811
  display: inline-flex;
812
812
  align-items: center;
813
813
  justify-content: center;
814
- color: var(--color-text);
814
+ color: var(--tl-color-text);
815
815
  }
816
816
 
817
817
  .tlui-page_menu__item__sortable {
@@ -824,7 +824,7 @@
824
824
  flex-direction: row;
825
825
  align-items: center;
826
826
  overflow: hidden;
827
- z-index: var(--layer-above);
827
+ z-index: var(--tl-layer-above);
828
828
  }
829
829
 
830
830
  .tlui-page_menu__item__sortable__title {
@@ -836,7 +836,7 @@
836
836
  }
837
837
 
838
838
  .tlui-page_menu__item__sortable:focus-visible {
839
- z-index: var(--layer-focused-input);
839
+ z-index: var(--tl-layer-focused-input);
840
840
  }
841
841
 
842
842
  .tlui-page_menu__item__sortable__handle {
@@ -845,7 +845,7 @@
845
845
  min-width: 0px;
846
846
  height: 40px;
847
847
  cursor: grab;
848
- color: var(--color-text-3);
848
+ color: var(--tl-color-text-3);
849
849
  flex-shrink: 0;
850
850
  margin-right: -9px;
851
851
  }
@@ -887,13 +887,13 @@
887
887
  }
888
888
 
889
889
  .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%);
890
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
891
891
  opacity: 1;
892
892
  }
893
893
 
894
894
  @media (hover: hover) {
895
895
  .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%);
896
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
897
897
  opacity: 1;
898
898
  }
899
899
  }
@@ -929,7 +929,7 @@
929
929
  top: 48px;
930
930
  left: -9999px;
931
931
  padding: 8px 16px;
932
- z-index: var(--layer-toasts);
932
+ z-index: var(--tl-layer-toasts);
933
933
  }
934
934
 
935
935
  .tl-skip-to-main-content:focus {
@@ -941,11 +941,11 @@
941
941
  .tlui-offline-indicator {
942
942
  display: flex;
943
943
  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);
944
+ gap: var(--tl-space-3);
945
+ color: var(--tl-color-text);
946
+ background-color: var(--tl-color-low);
947
+ border: 3px solid var(--tl-color-background);
948
+ padding: 0px var(--tl-space-5);
949
949
  height: 42px;
950
950
  align-items: center;
951
951
  justify-content: center;
@@ -960,10 +960,10 @@
960
960
  /* ------------------- Style panel ------------------ */
961
961
 
962
962
  .tlui-style-panel__wrapper {
963
- box-shadow: var(--shadow-2);
964
- border-radius: var(--radius-3);
963
+ box-shadow: var(--tl-shadow-2);
964
+ border-radius: var(--tl-radius-3);
965
965
  pointer-events: all;
966
- background-color: var(--color-panel);
966
+ background-color: var(--tl-color-panel);
967
967
  height: fit-content;
968
968
  max-height: 100%;
969
969
  margin: 8px;
@@ -972,7 +972,7 @@
972
972
  overscroll-behavior: none;
973
973
  overflow-y: auto;
974
974
  overflow-x: hidden;
975
- color: var(--color-text);
975
+ color: var(--tl-color-text);
976
976
  }
977
977
  /* if the style panel is the only child (ie no share menu), increase the margin */
978
978
  .tlui-style-panel__wrapper:only-child {
@@ -981,7 +981,7 @@
981
981
 
982
982
  .tlui-style-panel {
983
983
  position: relative;
984
- z-index: var(--layer-panels);
984
+ z-index: var(--tl-layer-panels);
985
985
  pointer-events: all;
986
986
  width: 148px;
987
987
  max-width: 148px;
@@ -989,7 +989,7 @@
989
989
 
990
990
  .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
991
991
  border-radius: 10px;
992
- outline: 2px solid var(--color-text);
992
+ outline: 2px solid var(--tl-color-text);
993
993
  outline-offset: -5px;
994
994
  }
995
995
 
@@ -1007,8 +1007,22 @@
1007
1007
  flex-direction: column;
1008
1008
  }
1009
1009
 
1010
- .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
1011
- border-bottom: 1px solid var(--color-divider);
1010
+ /*
1011
+ add a border to the bottom of all but the last section. we have to handle empty sections too, which
1012
+ are hidden and shouldn't be counted
1013
+ */
1014
+ .tlui-style-panel__section:not(:nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))) {
1015
+ border-bottom: 1px solid var(--tl-color-divider);
1016
+ }
1017
+ /*
1018
+ if a section ends with a slider and we're adding a border, we need some extra space for visual
1019
+ balance. we need to handle empty sections as above. is this the most complex css selector in all of
1020
+ tldraw? probably.
1021
+ */
1022
+ .tlui-style-panel__section:has(.tlui-slider__container:last-child):not(
1023
+ :nth-last-child(-n + 1 of .tlui-style-panel__section:not(:empty))
1024
+ ) {
1025
+ margin-bottom: 7px;
1012
1026
  }
1013
1027
 
1014
1028
  .tlui-style-panel__section:empty {
@@ -1017,19 +1031,19 @@
1017
1031
 
1018
1032
  .tlui-style-panel__section__common:not(:only-child) {
1019
1033
  margin-bottom: 7px;
1020
- border-bottom: 1px solid var(--color-divider);
1034
+ border-bottom: 1px solid var(--tl-color-divider);
1021
1035
  }
1022
1036
 
1023
1037
  .tlui-style-panel__dropdown-picker:only-child {
1024
- width: 100%;
1038
+ flex: 1;
1025
1039
  }
1026
1040
 
1027
1041
  .tlui-style-panel__double-select-picker {
1028
1042
  display: flex;
1029
1043
  grid-template-columns: 1fr auto;
1030
1044
  align-items: center;
1031
- padding-left: var(--space-4);
1032
- color: var(--color-text-1);
1045
+ padding-left: var(--tl-space-4);
1046
+ color: var(--tl-color-text-1);
1033
1047
  font-size: 12px;
1034
1048
  }
1035
1049
 
@@ -1043,13 +1057,16 @@
1043
1057
 
1044
1058
  .tlui-style-panel .tlui-button[data-state='open']::after {
1045
1059
  opacity: 1;
1046
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1060
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1047
1061
  }
1048
1062
 
1049
1063
  @media (hover: hover) {
1064
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
1065
+ background: none;
1066
+ }
1050
1067
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
1051
1068
  opacity: 1;
1052
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1069
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1053
1070
  }
1054
1071
  }
1055
1072
 
@@ -1059,14 +1076,14 @@
1059
1076
  .tlui-style-panel__section__common .tlui-style-panel__subheading,
1060
1077
  .tlui-style-panel__subheading + .tlui-slider__container {
1061
1078
  margin: 0;
1062
- padding: var(--space-2) var(--space-3) 0px var(--space-4);
1079
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
1063
1080
  font-size: 12px;
1064
1081
  font-weight: inherit;
1065
1082
  line-height: inherit;
1066
1083
  }
1067
1084
 
1068
1085
  .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1069
- padding-top: var(--space-3);
1086
+ padding-top: var(--tl-space-3);
1070
1087
  }
1071
1088
 
1072
1089
  .tlui-style-panel__subheading + .tlui-slider__container {
@@ -1078,7 +1095,6 @@
1078
1095
  .tlui-layout__bottom {
1079
1096
  grid-row: 2;
1080
1097
  width: 100%;
1081
- overflow: hidden;
1082
1098
  }
1083
1099
 
1084
1100
  .tlui-layout__bottom__main {
@@ -1094,7 +1110,7 @@
1094
1110
  display: flex;
1095
1111
  width: min-content;
1096
1112
  flex-direction: column;
1097
- z-index: var(--layer-panels);
1113
+ z-index: var(--tl-layer-panels);
1098
1114
  pointer-events: all;
1099
1115
  position: absolute;
1100
1116
  left: 0px;
@@ -1107,10 +1123,10 @@
1107
1123
  z-index: -1;
1108
1124
  inset: -2px -2px 0px 0px;
1109
1125
  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);
1126
+ border-top: 2px solid var(--tl-color-background);
1127
+ border-right: 2px solid var(--tl-color-background);
1128
+ border-top-right-radius: var(--tl-radius-4);
1129
+ background-color: var(--tl-color-low);
1114
1130
  }
1115
1131
 
1116
1132
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -1124,7 +1140,7 @@
1124
1140
  height: 96px;
1125
1141
  min-height: 96px;
1126
1142
  overflow: hidden;
1127
- padding: var(--space-3);
1143
+ padding: var(--tl-space-3);
1128
1144
  padding-top: 0px;
1129
1145
  }
1130
1146
 
@@ -1147,7 +1163,7 @@
1147
1163
  }
1148
1164
 
1149
1165
  .tlui-main-toolbar--horizontal {
1150
- padding-bottom: calc(var(--space-3) + var(--sab));
1166
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
1151
1167
  max-width: 100%;
1152
1168
  }
1153
1169
 
@@ -1156,7 +1172,7 @@
1156
1172
  left: 0;
1157
1173
  top: 90px; /* height of page menu + 'back to content' button */
1158
1174
  bottom: 140px; /* height of expanded mini-map */
1159
- padding-left: calc(var(--space-3) + var(--sab));
1175
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
1160
1176
  }
1161
1177
 
1162
1178
  [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
@@ -1168,7 +1184,7 @@
1168
1184
  position: relative;
1169
1185
  width: fit-content;
1170
1186
  display: flex;
1171
- gap: var(--space-3);
1187
+ gap: var(--tl-space-3);
1172
1188
  align-items: flex-start;
1173
1189
  }
1174
1190
 
@@ -1187,7 +1203,7 @@
1187
1203
  /* Row of controls + lock button */
1188
1204
  .tlui-main-toolbar__extras {
1189
1205
  position: relative;
1190
- z-index: var(--layer-above);
1206
+ z-index: var(--tl-layer-above);
1191
1207
  pointer-events: none;
1192
1208
  align-self: stretch;
1193
1209
  }
@@ -1208,23 +1224,23 @@
1208
1224
 
1209
1225
  .tlui-main-toolbar__extras__controls {
1210
1226
  position: relative;
1211
- z-index: var(--layer-above);
1212
- background-color: var(--color-low);
1213
- border: 2px solid var(--color-background);
1227
+ z-index: var(--tl-layer-above);
1228
+ background-color: var(--tl-color-low);
1229
+ border: 2px solid var(--tl-color-background);
1214
1230
  pointer-events: all;
1215
1231
  }
1216
1232
 
1217
1233
  .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);
1234
+ border-top-left-radius: var(--tl-radius-4);
1235
+ border-top-right-radius: var(--tl-radius-4);
1220
1236
  margin-left: 8px;
1221
1237
  margin-right: 0px;
1222
1238
  width: fit-content;
1223
1239
  }
1224
1240
 
1225
1241
  .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);
1242
+ border-top-right-radius: var(--tl-radius-4);
1243
+ border-bottom-right-radius: var(--tl-radius-4);
1228
1244
  margin-top: 8px;
1229
1245
  margin-left: -2px;
1230
1246
  margin-bottom: 0px;
@@ -1232,12 +1248,12 @@
1232
1248
  }
1233
1249
 
1234
1250
  .tlui-main-toolbar__tools {
1235
- border-radius: var(--radius-4);
1236
- z-index: var(--layer-panels);
1251
+ border-radius: var(--tl-radius-4);
1252
+ z-index: var(--tl-layer-panels);
1237
1253
  pointer-events: all;
1238
1254
  position: relative;
1239
- background: var(--color-panel);
1240
- box-shadow: var(--shadow-2);
1255
+ background: var(--tl-color-panel);
1256
+ box-shadow: var(--tl-shadow-2);
1241
1257
  }
1242
1258
 
1243
1259
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
@@ -1262,14 +1278,18 @@
1262
1278
  }
1263
1279
 
1264
1280
  .tlui-main-toolbar--horizontal *[data-state='open']::after {
1265
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1281
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1266
1282
  opacity: 1;
1267
1283
  }
1268
1284
  .tlui-main-toolbar--vertical *[data-state='open']::after {
1269
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1285
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1270
1286
  opacity: 1;
1271
1287
  }
1272
1288
 
1289
+ .tlui-main-toolbar__overflow-content {
1290
+ touch-action: none;
1291
+ }
1292
+
1273
1293
  .tlui-main-toolbar__tools [data-toolbar-visible='false'],
1274
1294
  .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
1275
1295
  display: none;
@@ -1298,11 +1318,11 @@
1298
1318
 
1299
1319
  @media (hover: hover) {
1300
1320
  .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%);
1321
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1302
1322
  opacity: 1;
1303
1323
  }
1304
1324
  .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%);
1325
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1306
1326
  opacity: 1;
1307
1327
  }
1308
1328
  }
@@ -1313,44 +1333,40 @@
1313
1333
  font-size: 12px;
1314
1334
  padding: 2px 8px;
1315
1335
  border-radius: 4px;
1316
- background-color: var(--color-tooltip);
1336
+ background-color: var(--tl-color-tooltip);
1317
1337
  box-shadow: none;
1318
- color: var(--color-text-shadow);
1338
+ color: var(--tl-color-text-shadow);
1319
1339
  max-width: 400px;
1320
1340
  width: fit-content;
1321
1341
  text-align: center;
1322
- pointer-events: none;
1323
1342
  will-change: transform, opacity;
1324
1343
  z-index: 2;
1325
1344
  }
1326
1345
 
1327
1346
  .tlui-tooltip__arrow {
1328
- fill: var(--color-tooltip);
1347
+ fill: var(--tl-color-tooltip);
1329
1348
  will-change: opacity;
1330
1349
  }
1331
1350
 
1332
1351
  [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;
1352
+ z-index: var(--tl-layer-toasts) !important;
1353
+ pointer-events: none;
1338
1354
  }
1339
1355
 
1340
1356
  /* ------------------- Debug panel ------------------ */
1341
1357
 
1342
1358
  .tlui-debug-panel {
1343
- background-color: var(--color-low);
1359
+ background-color: var(--tl-color-low);
1344
1360
  width: 100%;
1345
1361
  display: grid;
1346
1362
  align-items: center;
1347
1363
  grid-template-columns: 1fr auto auto auto;
1348
1364
  justify-content: space-between;
1349
- padding-left: var(--space-4);
1350
- border-top: 1px solid var(--color-background);
1365
+ padding-left: var(--tl-space-4);
1366
+ border-top: 1px solid var(--tl-color-background);
1351
1367
  font-size: 12px;
1352
- color: var(--color-text-1);
1353
- z-index: var(--layer-panels);
1368
+ color: var(--tl-color-text-1);
1369
+ z-index: var(--tl-layer-panels);
1354
1370
  pointer-events: all;
1355
1371
  }
1356
1372
 
@@ -1366,7 +1382,7 @@
1366
1382
 
1367
1383
  .tlui-debug-panel__fps__slow {
1368
1384
  font-weight: bold;
1369
- color: var(--color-danger);
1385
+ color: var(--tl-color-danger);
1370
1386
  }
1371
1387
 
1372
1388
  .tlui-a11y-audit {
@@ -1376,7 +1392,7 @@
1376
1392
  .tlui-a11y-audit th,
1377
1393
  .tlui-a11y-audit td {
1378
1394
  padding: 8px;
1379
- border: 1px solid var(--color-low-border);
1395
+ border: 1px solid var(--tl-color-low-border);
1380
1396
  }
1381
1397
 
1382
1398
  /* --------------------- Toasts --------------------- */
@@ -1389,10 +1405,10 @@
1389
1405
  align-items: flex-end;
1390
1406
  justify-content: flex-end;
1391
1407
  flex-direction: column;
1392
- gap: var(--space-3);
1408
+ gap: var(--tl-space-3);
1393
1409
  pointer-events: none;
1394
- padding: 0px var(--space-3) 64px 0px;
1395
- z-index: var(--layer-toasts);
1410
+ padding: 0px var(--tl-space-3) 64px 0px;
1411
+ z-index: var(--tl-layer-toasts);
1396
1412
  }
1397
1413
 
1398
1414
  .tlui-toast__viewport > * {
@@ -1401,34 +1417,34 @@
1401
1417
 
1402
1418
  .tlui-toast__icon {
1403
1419
  padding-top: 11px;
1404
- padding-left: var(--space-4);
1405
- color: var(--color-text-1);
1420
+ padding-left: var(--tl-space-4);
1421
+ color: var(--tl-color-text-1);
1406
1422
  }
1407
1423
 
1408
1424
  .tlui-toast__container {
1409
1425
  min-width: 200px;
1410
1426
  display: flex;
1411
1427
  flex-direction: row;
1412
- background-color: var(--color-panel);
1413
- box-shadow: var(--shadow-2);
1414
- border-radius: var(--radius-3);
1428
+ background-color: var(--tl-color-panel);
1429
+ box-shadow: var(--tl-shadow-2);
1430
+ border-radius: var(--tl-radius-3);
1415
1431
  font-size: 12px;
1416
1432
  }
1417
1433
 
1418
1434
  .tlui-toast__container[data-severity='success'] .tlui-icon {
1419
- color: var(--color-success);
1435
+ color: var(--tl-color-success);
1420
1436
  }
1421
1437
 
1422
1438
  .tlui-toast__container[data-severity='info'] .tlui-icon {
1423
- color: var(--color-info);
1439
+ color: var(--tl-color-info);
1424
1440
  }
1425
1441
 
1426
1442
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
1427
- color: var(--color-warning);
1443
+ color: var(--tl-color-warning);
1428
1444
  }
1429
1445
 
1430
1446
  .tlui-toast__container[data-severity='error'] .tlui-icon {
1431
- color: var(--color-danger);
1447
+ color: var(--tl-color-danger);
1432
1448
  }
1433
1449
 
1434
1450
  .tlui-toast__main {
@@ -1437,27 +1453,27 @@
1437
1453
  }
1438
1454
 
1439
1455
  .tlui-toast__content {
1440
- padding: var(--space-4);
1456
+ padding: var(--tl-space-4);
1441
1457
  display: flex;
1442
1458
  line-height: 1.4;
1443
1459
  flex-direction: column;
1444
- gap: var(--space-3);
1460
+ gap: var(--tl-space-3);
1445
1461
  }
1446
1462
 
1447
1463
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
1448
- padding-bottom: var(--space-2);
1464
+ padding-bottom: var(--tl-space-2);
1449
1465
  }
1450
1466
 
1451
1467
  .tlui-toast__title {
1452
1468
  font-weight: bold;
1453
- color: var(--color-text-1);
1469
+ color: var(--tl-color-text-1);
1454
1470
  /* this makes the default toast look better */
1455
1471
  line-height: 16px;
1456
1472
  }
1457
1473
 
1458
1474
  .tlui-toast__description {
1459
- color: var(--color-text-1);
1460
- padding: var(--space-3);
1475
+ color: var(--tl-color-text-1);
1476
+ padding: var(--tl-space-3);
1461
1477
  margin: 0px;
1462
1478
  padding: 0px;
1463
1479
  }
@@ -1509,14 +1525,14 @@
1509
1525
  left: 0px;
1510
1526
  width: 100%;
1511
1527
  height: 100%;
1512
- z-index: var(--layer-canvas-overlays);
1513
- background-color: var(--color-overlay);
1528
+ z-index: var(--tl-layer-canvas-overlays);
1529
+ background-color: var(--tl-color-overlay);
1514
1530
  pointer-events: all;
1515
1531
  animation: tl-fade-in 0.12s ease-out;
1516
1532
  display: grid;
1517
1533
  place-items: center;
1518
1534
  overflow-y: auto;
1519
- padding: 0px var(--space-3);
1535
+ padding: 0px var(--tl-space-3);
1520
1536
  }
1521
1537
 
1522
1538
  .tlui-dialog__content {
@@ -1524,9 +1540,9 @@
1524
1540
  flex-direction: column;
1525
1541
  position: relative;
1526
1542
  cursor: default;
1527
- background-color: var(--color-panel);
1528
- box-shadow: var(--shadow-3);
1529
- border-radius: var(--radius-3);
1543
+ background-color: var(--tl-color-panel);
1544
+ box-shadow: var(--tl-shadow-3);
1545
+ border-radius: var(--tl-radius-3);
1530
1546
  font-size: 12px;
1531
1547
  overflow: hidden;
1532
1548
  min-width: 300px;
@@ -1539,9 +1555,9 @@
1539
1555
  display: flex;
1540
1556
  align-items: center;
1541
1557
  flex: 0;
1542
- z-index: var(--layer-header-footer);
1543
- padding-left: var(--space-4);
1544
- color: var(--color-text);
1558
+ z-index: var(--tl-layer-header-footer);
1559
+ padding-left: var(--tl-space-4);
1560
+ color: var(--tl-color-text);
1545
1561
  height: 40px;
1546
1562
  }
1547
1563
 
@@ -1550,7 +1566,7 @@
1550
1566
  font-weight: inherit;
1551
1567
  font-size: 12px;
1552
1568
  margin: 0px;
1553
- color: var(--color-text-1);
1569
+ color: var(--tl-color-text-1);
1554
1570
  }
1555
1571
 
1556
1572
  .tlui-dialog__header__close {
@@ -1558,16 +1574,16 @@
1558
1574
  }
1559
1575
 
1560
1576
  .tlui-dialog__body {
1561
- padding: var(--space-4) var(--space-4);
1577
+ padding: var(--tl-space-4) var(--tl-space-4);
1562
1578
  flex: 0 1;
1563
1579
  overflow-y: auto;
1564
1580
  overflow-x: hidden;
1565
- color: var(--color-text-1);
1581
+ color: var(--tl-color-text-1);
1566
1582
  user-select: all;
1567
1583
  -webkit-user-select: text;
1568
1584
  }
1569
1585
  .tlui-dialog__body a {
1570
- color: var(--color-selected);
1586
+ color: var(--tl-color-selected);
1571
1587
  }
1572
1588
 
1573
1589
  .tlui-dialog__body ul,
@@ -1575,13 +1591,13 @@
1575
1591
  padding-left: 16px;
1576
1592
  display: flex;
1577
1593
  flex-direction: column;
1578
- gap: var(--space-2);
1594
+ gap: var(--tl-space-2);
1579
1595
  }
1580
1596
 
1581
1597
  .tlui-dialog__footer {
1582
1598
  position: relative;
1583
1599
  min-height: 12px;
1584
- z-index: var(--layer-header-footer);
1600
+ z-index: var(--tl-layer-header-footer);
1585
1601
  }
1586
1602
 
1587
1603
  .tlui-dialog__footer__actions {
@@ -1601,15 +1617,15 @@
1601
1617
  .tlui-edit-link-dialog {
1602
1618
  display: flex;
1603
1619
  flex-direction: column;
1604
- gap: var(--space-4);
1605
- color: var(--color-text);
1620
+ gap: var(--tl-space-4);
1621
+ color: var(--tl-color-text);
1606
1622
  }
1607
1623
 
1608
1624
  .tlui-edit-link-dialog__input {
1609
- background-color: var(--color-muted-2);
1625
+ background-color: var(--tl-color-muted-2);
1610
1626
  flex-grow: 2;
1611
- border-radius: var(--radius-2);
1612
- padding: 0px var(--space-4);
1627
+ border-radius: var(--tl-radius-2);
1628
+ padding: 0px var(--tl-space-4);
1613
1629
  }
1614
1630
 
1615
1631
  /* Embed Dialog */
@@ -1617,15 +1633,15 @@
1617
1633
  .tlui-embed__spacer {
1618
1634
  flex-grow: 2;
1619
1635
  min-height: 0px;
1620
- margin-left: calc(-1 * var(--space-4));
1621
- margin-top: calc(-1 * var(--space-4));
1636
+ margin-left: calc(-1 * var(--tl-space-4));
1637
+ margin-top: calc(-1 * var(--tl-space-4));
1622
1638
  pointer-events: none;
1623
1639
  }
1624
1640
 
1625
1641
  .tlui-embed-dialog__list {
1626
1642
  display: flex;
1627
1643
  flex-direction: column;
1628
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
1644
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
1629
1645
  }
1630
1646
 
1631
1647
  .tlui-embed-dialog__item__image {
@@ -1637,49 +1653,49 @@
1637
1653
  background-size: contain;
1638
1654
  background-repeat: no-repeat;
1639
1655
  background-position: center center;
1640
- background-color: var(--color-selected-contrast);
1641
- border-radius: var(--radius-1);
1656
+ background-color: var(--tl-color-selected-contrast);
1657
+ border-radius: var(--tl-radius-1);
1642
1658
  }
1643
1659
 
1644
1660
  .tlui-embed-dialog__enter {
1645
1661
  display: flex;
1646
1662
  flex-direction: column;
1647
- gap: var(--space-4);
1648
- color: var(--color-text-1);
1663
+ gap: var(--tl-space-4);
1664
+ color: var(--tl-color-text-1);
1649
1665
  }
1650
1666
 
1651
1667
  .tlui-embed-dialog__input {
1652
- background-color: var(--color-muted-2);
1668
+ background-color: var(--tl-color-muted-2);
1653
1669
  flex-grow: 2;
1654
- border-radius: var(--radius-2);
1655
- padding: 0px var(--space-4);
1670
+ border-radius: var(--tl-radius-2);
1671
+ padding: 0px var(--tl-space-4);
1656
1672
  }
1657
1673
 
1658
1674
  .tlui-embed-dialog__warning {
1659
- color: var(--color-danger);
1675
+ color: var(--tl-color-danger);
1660
1676
  text-shadow: none;
1661
1677
  }
1662
1678
 
1663
1679
  .tlui-embed-dialog__instruction__link {
1664
1680
  display: flex;
1665
- gap: var(--space-1);
1666
- margin-top: var(--space-4);
1681
+ gap: var(--tl-space-1);
1682
+ margin-top: var(--tl-space-4);
1667
1683
  }
1668
1684
 
1669
1685
  .tlui-embed-dialog__enter a {
1670
- color: var(--color-text-1);
1686
+ color: var(--tl-color-text-1);
1671
1687
  }
1672
1688
 
1673
1689
  /* --------------- Keyboard shortcuts --------------- */
1674
1690
 
1675
1691
  .tlui-shortcuts-dialog__header {
1676
- border-bottom: 1px solid var(--color-divider);
1692
+ border-bottom: 1px solid var(--tl-color-divider);
1677
1693
  }
1678
1694
 
1679
1695
  .tlui-shortcuts-dialog__body {
1680
1696
  position: relative;
1681
1697
  columns: 3;
1682
- column-gap: var(--space-9);
1698
+ column-gap: var(--tl-space-9);
1683
1699
  pointer-events: all;
1684
1700
  touch-action: auto;
1685
1701
 
@@ -1697,14 +1713,14 @@
1697
1713
 
1698
1714
  .tlui-shortcuts-dialog__group {
1699
1715
  break-inside: avoid-column;
1700
- padding-bottom: var(--space-6);
1716
+ padding-bottom: var(--tl-space-6);
1701
1717
  }
1702
1718
 
1703
1719
  .tlui-shortcuts-dialog__group__title {
1704
1720
  font-size: inherit;
1705
1721
  font-weight: inherit;
1706
1722
  margin: 0px;
1707
- color: var(--color-text-3);
1723
+ color: var(--tl-color-text-3);
1708
1724
  height: 32px;
1709
1725
  display: flex;
1710
1726
  align-items: center;
@@ -1713,12 +1729,12 @@
1713
1729
  .tlui-shortcuts-dialog__group__content {
1714
1730
  display: flex;
1715
1731
  flex-direction: column;
1716
- color: var(--color-text-1);
1732
+ color: var(--tl-color-text-1);
1717
1733
  }
1718
1734
 
1719
1735
  .tlui-shortcuts-dialog__key-pair {
1720
1736
  display: flex;
1721
- gap: var(--space-4);
1737
+ gap: var(--tl-space-4);
1722
1738
  align-items: center;
1723
1739
  justify-content: space-between;
1724
1740
  height: 32px;
@@ -1745,12 +1761,12 @@
1745
1761
  height: 24px;
1746
1762
  background: linear-gradient(
1747
1763
  to bottom,
1748
- var(--color-panel-transparent) 0%,
1749
- var(--color-panel) 90%,
1750
- var(--color-panel) 100%
1764
+ var(--tl-color-panel-transparent) 0%,
1765
+ var(--tl-color-panel) 90%,
1766
+ var(--tl-color-panel) 100%
1751
1767
  );
1752
- border-bottom-left-radius: var(--radius-3);
1753
- border-bottom-right-radius: var(--radius-3);
1768
+ border-bottom-left-radius: var(--tl-radius-3);
1769
+ border-bottom-right-radius: var(--tl-radius-3);
1754
1770
  pointer-events: none;
1755
1771
  }
1756
1772
 
@@ -1765,10 +1781,10 @@
1765
1781
  .tlui-help-menu {
1766
1782
  pointer-events: all;
1767
1783
  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);
1784
+ bottom: var(--tl-space-2);
1785
+ right: var(--tl-space-2);
1786
+ z-index: var(--tl-layer-panels);
1787
+ border: 2px solid var(--tl-color-background);
1772
1788
  border-radius: 100%;
1773
1789
  }
1774
1790
 
@@ -1779,7 +1795,7 @@
1779
1795
  display: flex;
1780
1796
  flex-direction: row;
1781
1797
  justify-content: flex-end;
1782
- z-index: var(--layer-panels);
1798
+ z-index: var(--tl-layer-panels);
1783
1799
  align-items: center;
1784
1800
  padding-top: 2px;
1785
1801
  padding-right: 4px;
@@ -1795,7 +1811,7 @@
1795
1811
  border: none;
1796
1812
  cursor: pointer;
1797
1813
  pointer-events: all;
1798
- border-radius: var(--radius-1);
1814
+ border-radius: var(--tl-radius-1);
1799
1815
  padding-right: 1px;
1800
1816
  height: 100%;
1801
1817
  }
@@ -1808,8 +1824,8 @@
1808
1824
  .tlui-people-menu__avatar {
1809
1825
  height: 24px;
1810
1826
  width: 24px;
1811
- border: 2px solid var(--color-background);
1812
- background-color: var(--color-low);
1827
+ border: 2px solid var(--tl-color-background);
1828
+ background-color: var(--tl-color-low);
1813
1829
  border-radius: 100%;
1814
1830
  display: flex;
1815
1831
  align-items: center;
@@ -1818,7 +1834,7 @@
1818
1834
  font-size: 10px;
1819
1835
  font-weight: bold;
1820
1836
  text-align: center;
1821
- color: var(--color-selected-contrast);
1837
+ color: var(--tl-color-selected-contrast);
1822
1838
  z-index: 2;
1823
1839
  }
1824
1840
 
@@ -1832,7 +1848,7 @@
1832
1848
 
1833
1849
  @media (hover: hover) {
1834
1850
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
1835
- border-color: var(--color-low);
1851
+ border-color: var(--tl-color-low);
1836
1852
  }
1837
1853
  }
1838
1854
 
@@ -1840,12 +1856,12 @@
1840
1856
  min-width: 0px;
1841
1857
  font-size: 11px;
1842
1858
  font-weight: 600;
1843
- color: var(--color-text-1);
1859
+ color: var(--tl-color-text-1);
1844
1860
  font-family: inherit;
1845
1861
  padding: 0px 4px;
1846
1862
  }
1847
1863
  .tlui-people-menu__more::after {
1848
- border-radius: var(--radius-2);
1864
+ border-radius: var(--tl-radius-2);
1849
1865
  inset: 0px;
1850
1866
  }
1851
1867
 
@@ -1874,7 +1890,7 @@
1874
1890
  }
1875
1891
 
1876
1892
  .tlui-people-menu__section:not(:last-child) {
1877
- border-bottom: 1px solid var(--color-divider);
1893
+ border-bottom: 1px solid var(--tl-color-divider);
1878
1894
  }
1879
1895
 
1880
1896
  .tlui-people-menu__user {
@@ -1893,7 +1909,7 @@
1893
1909
  text-overflow: ellipsis;
1894
1910
  white-space: nowrap;
1895
1911
  font-size: 12px;
1896
- color: var(--color-text-1);
1912
+ color: var(--tl-color-text-1);
1897
1913
  max-width: 100%;
1898
1914
  flex-grow: 1;
1899
1915
  flex-shrink: 100;
@@ -1905,7 +1921,7 @@
1905
1921
  text-overflow: ellipsis;
1906
1922
  white-space: nowrap;
1907
1923
  font-size: 12px;
1908
- color: var(--color-text-3);
1924
+ color: var(--tl-color-text-3);
1909
1925
  flex-grow: 100;
1910
1926
  flex-shrink: 0;
1911
1927
  margin-left: 4px;
@@ -1996,7 +2012,7 @@
1996
2012
  inset: 0px;
1997
2013
  border-width: 2px;
1998
2014
  border-style: solid;
1999
- z-index: var(--layer-following-indicator);
2015
+ z-index: var(--tl-layer-following-indicator);
2000
2016
  pointer-events: none;
2001
2017
  }
2002
2018
 
@@ -2015,7 +2031,7 @@
2015
2031
  }
2016
2032
 
2017
2033
  .tlui-contextual-toolbar [data-isactive='true']::after {
2018
- background-color: var(--color-muted-2);
2034
+ background-color: var(--tl-color-muted-2);
2019
2035
  opacity: 1;
2020
2036
  }
2021
2037
 
@@ -2031,7 +2047,7 @@
2031
2047
 
2032
2048
  .tlui-contextual-toolbar[data-visible='true'] {
2033
2049
  opacity: 1;
2034
- z-index: var(--layer-menus);
2050
+ z-index: var(--tl-layer-menus);
2035
2051
  }
2036
2052
 
2037
2053
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -2090,7 +2106,7 @@
2090
2106
 
2091
2107
  @keyframes tlui-slide-in {
2092
2108
  from {
2093
- transform: translateX(calc(100% + var(--space-3)));
2109
+ transform: translateX(calc(100% + var(--tl-space-3)));
2094
2110
  }
2095
2111
  to {
2096
2112
  transform: translateX(0px);
@@ -2102,6 +2118,6 @@
2102
2118
  transform: translateX(var(--radix-toast-swipe-end-x));
2103
2119
  }
2104
2120
  to {
2105
- transform: translateX(calc(100% + var(--space-3)));
2121
+ transform: translateX(calc(100% + var(--tl-space-3)));
2106
2122
  }
2107
2123
  }