tldraw 3.16.0-canary.7f4043b128a3 → 3.16.0-canary.806d674b7d7a

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 (421) hide show
  1. package/dist-cjs/index.d.ts +234 -108
  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 +15 -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/bookmark/BookmarkShapeUtil.js +4 -4
  15. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  16. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  17. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  18. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -5
  19. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  21. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  22. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +2 -2
  23. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +2 -2
  24. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +1 -0
  25. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  26. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +6 -3
  27. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +2 -1
  29. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +4 -4
  31. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  32. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -3
  33. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  34. package/dist-cjs/lib/shapes/shared/ShapeFill.js +1 -1
  35. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  36. package/dist-cjs/lib/shapes/shared/freehand/svg.js.map +2 -2
  37. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +3 -4
  38. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  39. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
  40. package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js.map +2 -2
  41. package/dist-cjs/lib/shapes/text/PlainTextArea.js +2 -2
  42. package/dist-cjs/lib/shapes/text/PlainTextArea.js.map +2 -2
  43. package/dist-cjs/lib/shapes/text/RichTextArea.js +3 -3
  44. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  45. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  46. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  47. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +25 -1
  48. package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +2 -2
  49. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js +12 -0
  50. package/dist-cjs/lib/tools/EraserTool/childStates/Pointing.js.map +2 -2
  51. package/dist-cjs/lib/ui/TldrawUi.js +13 -12
  52. package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
  53. package/dist-cjs/lib/ui/assetUrls.js +13 -10
  54. package/dist-cjs/lib/ui/assetUrls.js.map +2 -2
  55. package/dist-cjs/lib/ui/components/A11y.js +1 -1
  56. package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
  57. package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
  58. package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
  59. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +6 -6
  60. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
  61. package/dist-cjs/lib/ui/components/LanguageMenu.js +1 -0
  62. package/dist-cjs/lib/ui/components/LanguageMenu.js.map +2 -2
  63. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -0
  64. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
  65. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js +4 -4
  66. package/dist-cjs/lib/ui/components/Minimap/MinimapManager.js.map +2 -2
  67. package/dist-cjs/lib/ui/components/MobileStylePanel.js +1 -1
  68. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  69. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +1 -1
  70. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +9 -4
  72. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
  74. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  75. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js +147 -0
  76. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
  77. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
  78. package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
  79. package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +23 -22
  80. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
  81. package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +24 -21
  82. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
  83. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
  84. package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
  85. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +2 -0
  86. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  87. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +39 -10
  88. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  89. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
  90. package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
  91. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +2 -1
  92. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  93. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +1 -1
  94. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +2 -2
  95. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +6 -2
  96. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  97. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +11 -2
  98. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  99. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +5 -3
  100. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
  101. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +18 -5
  102. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  103. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +3 -0
  104. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  105. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +137 -122
  106. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  107. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js +3 -0
  108. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
  109. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  110. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +0 -10
  111. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  112. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +8 -24
  113. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  114. package/dist-cjs/lib/ui/context/actions.js +29 -10
  115. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  116. package/dist-cjs/lib/ui/context/components.js +2 -0
  117. package/dist-cjs/lib/ui/context/components.js.map +2 -2
  118. package/dist-cjs/lib/ui/context/events.js.map +1 -1
  119. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  120. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  121. package/dist-cjs/lib/ui/hooks/useExportAs.js +3 -2
  122. package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
  123. package/dist-cjs/lib/ui/hooks/useTools.js +22 -4
  124. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  125. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  126. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +6 -2
  127. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  128. package/dist-cjs/lib/ui/kbd-utils.js +9 -3
  129. package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
  130. package/dist-cjs/lib/ui/version.js +3 -3
  131. package/dist-cjs/lib/ui/version.js.map +1 -1
  132. package/dist-cjs/lib/utils/export/copyAs.js +1 -2
  133. package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
  134. package/dist-cjs/lib/utils/export/export.js +0 -20
  135. package/dist-cjs/lib/utils/export/export.js.map +2 -2
  136. package/dist-cjs/lib/utils/export/exportAs.js +1 -2
  137. package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
  138. package/dist-esm/index.d.mts +234 -108
  139. package/dist-esm/index.mjs +61 -29
  140. package/dist-esm/index.mjs.map +2 -2
  141. package/dist-esm/lib/Tldraw.mjs +14 -4
  142. package/dist-esm/lib/Tldraw.mjs.map +2 -2
  143. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  144. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  145. package/dist-esm/lib/defaultExternalContentHandlers.mjs +15 -4
  146. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  147. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs +6 -0
  148. package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
  149. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  150. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  151. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +5 -5
  152. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  153. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  154. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  155. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +12 -5
  156. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  157. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  158. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  159. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +3 -3
  160. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +2 -2
  161. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +1 -0
  162. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  163. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +6 -3
  164. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
  165. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +2 -1
  166. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  167. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +5 -5
  168. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  169. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -3
  170. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  171. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +1 -1
  172. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  173. package/dist-esm/lib/shapes/shared/freehand/svg.mjs.map +2 -2
  174. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +4 -5
  175. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  176. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
  177. package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs.map +2 -2
  178. package/dist-esm/lib/shapes/text/PlainTextArea.mjs +3 -3
  179. package/dist-esm/lib/shapes/text/PlainTextArea.mjs.map +2 -2
  180. package/dist-esm/lib/shapes/text/RichTextArea.mjs +3 -4
  181. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  182. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  183. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  184. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +26 -1
  185. package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +2 -2
  186. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs +13 -0
  187. package/dist-esm/lib/tools/EraserTool/childStates/Pointing.mjs.map +2 -2
  188. package/dist-esm/lib/ui/TldrawUi.mjs +13 -12
  189. package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
  190. package/dist-esm/lib/ui/assetUrls.mjs +13 -10
  191. package/dist-esm/lib/ui/assetUrls.mjs.map +2 -2
  192. package/dist-esm/lib/ui/components/A11y.mjs +2 -2
  193. package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
  194. package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
  195. package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
  196. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +6 -6
  197. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
  198. package/dist-esm/lib/ui/components/LanguageMenu.mjs +1 -0
  199. package/dist-esm/lib/ui/components/LanguageMenu.mjs.map +2 -2
  200. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +1 -0
  201. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
  202. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  203. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  204. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +1 -1
  205. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  206. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -2
  207. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  208. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +14 -5
  209. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  210. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
  211. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  212. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +135 -0
  213. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
  214. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
  215. package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
  216. package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +20 -19
  217. package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
  218. package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +21 -18
  219. package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
  220. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
  221. package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
  222. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +2 -0
  223. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  224. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +39 -10
  225. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  226. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
  227. package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
  228. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +2 -1
  229. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  230. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +1 -1
  231. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +2 -2
  232. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +6 -2
  233. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  234. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +12 -3
  235. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  236. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +6 -4
  237. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
  238. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +18 -5
  239. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  240. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +3 -0
  241. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  242. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +147 -124
  243. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  244. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs +3 -0
  245. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
  246. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  247. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +0 -10
  248. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  249. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +8 -24
  250. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  251. package/dist-esm/lib/ui/context/actions.mjs +29 -10
  252. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  253. package/dist-esm/lib/ui/context/components.mjs +2 -0
  254. package/dist-esm/lib/ui/context/components.mjs.map +2 -2
  255. package/dist-esm/lib/ui/context/events.mjs.map +1 -1
  256. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +2 -2
  257. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  258. package/dist-esm/lib/ui/hooks/useExportAs.mjs +3 -2
  259. package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
  260. package/dist-esm/lib/ui/hooks/useTools.mjs +23 -4
  261. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  262. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +6 -2
  263. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  264. package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
  265. package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
  266. package/dist-esm/lib/ui/version.mjs +3 -3
  267. package/dist-esm/lib/ui/version.mjs.map +1 -1
  268. package/dist-esm/lib/utils/export/copyAs.mjs +1 -2
  269. package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
  270. package/dist-esm/lib/utils/export/export.mjs +0 -20
  271. package/dist-esm/lib/utils/export/export.mjs.map +2 -2
  272. package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
  273. package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
  274. package/package.json +11 -34
  275. package/src/index.ts +44 -22
  276. package/src/lib/Tldraw.tsx +15 -2
  277. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  278. package/src/lib/defaultExternalContentHandlers.ts +26 -4
  279. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +2 -1
  280. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +6 -5
  281. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +48 -6
  282. package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
  283. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  284. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +5 -5
  285. package/src/lib/shapes/draw/DrawShapeTool.test.ts +0 -5
  286. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  287. package/src/lib/shapes/frame/FrameShapeUtil.tsx +21 -4
  288. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  289. package/src/lib/shapes/frame/components/FrameLabelInput.tsx +3 -3
  290. package/src/lib/shapes/geo/GeoShapeUtil.tsx +1 -0
  291. package/src/lib/shapes/image/ImageShapeUtil.tsx +6 -3
  292. package/src/lib/shapes/line/LineShapeUtil.test.tsx +4 -3
  293. package/src/lib/shapes/line/__snapshots__/LineShapeUtil.test.tsx.snap +2 -2
  294. package/src/lib/shapes/note/NoteShapeUtil.tsx +1 -0
  295. package/src/lib/shapes/shared/HyperlinkButton.tsx +5 -5
  296. package/src/lib/shapes/shared/PlainTextLabel.tsx +0 -6
  297. package/src/lib/shapes/shared/ShapeFill.tsx +1 -1
  298. package/src/lib/shapes/shared/freehand/svg.ts +2 -0
  299. package/src/lib/shapes/shared/useEditablePlainText.ts +5 -9
  300. package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
  301. package/src/lib/shapes/text/PlainTextArea.tsx +3 -3
  302. package/src/lib/shapes/text/RichTextArea.tsx +3 -4
  303. package/src/lib/shapes/text/TextShapeTool.test.ts +6 -5
  304. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  305. package/src/lib/tools/EraserTool/childStates/Erasing.ts +34 -1
  306. package/src/lib/tools/EraserTool/childStates/Pointing.ts +20 -0
  307. package/src/lib/ui/TldrawUi.tsx +16 -10
  308. package/src/lib/ui/assetUrls.ts +13 -10
  309. package/src/lib/ui/components/A11y.tsx +2 -2
  310. package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
  311. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +6 -6
  312. package/src/lib/ui/components/LanguageMenu.tsx +1 -0
  313. package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +1 -0
  314. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  315. package/src/lib/ui/components/MobileStylePanel.tsx +1 -1
  316. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +2 -2
  317. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +27 -13
  318. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -381
  319. package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +70 -50
  320. package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
  321. package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +28 -19
  322. package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
  323. package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
  324. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +2 -0
  325. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +33 -16
  326. package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
  327. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +1 -0
  328. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +1 -1
  329. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +9 -2
  330. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +8 -3
  331. package/src/lib/ui/components/primitives/TldrawUiInput.tsx +6 -3
  332. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +52 -32
  333. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +5 -1
  334. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +159 -123
  335. package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +4 -0
  336. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  337. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +0 -10
  338. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +11 -24
  339. package/src/lib/ui/context/actions.tsx +36 -10
  340. package/src/lib/ui/context/components.tsx +3 -0
  341. package/src/lib/ui/context/events.tsx +1 -1
  342. package/src/lib/ui/hooks/useClipboardEvents.ts +2 -2
  343. package/src/lib/ui/hooks/useExportAs.ts +3 -2
  344. package/src/lib/ui/hooks/useTools.tsx +26 -4
  345. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +4 -0
  346. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +6 -2
  347. package/src/lib/ui/kbd-utils.ts +10 -3
  348. package/src/lib/ui/version.ts +3 -3
  349. package/src/lib/ui.css +256 -230
  350. package/src/lib/utils/excalidraw/__snapshots__/putExcalidrawContent.test.tsx.snap +5 -5
  351. package/src/lib/utils/export/copyAs.ts +1 -24
  352. package/src/lib/utils/export/export.ts +0 -36
  353. package/src/lib/utils/export/exportAs.ts +1 -32
  354. package/src/lib/utils/tldr/__snapshots__/buildFromV1Document.test.ts.snap +4 -4
  355. package/src/test/A11y.test.tsx +3 -2
  356. package/src/test/ClickManager.test.ts +7 -6
  357. package/src/test/Editor.test.tsx +20 -19
  358. package/src/test/EraserTool.test.ts +184 -13
  359. package/src/test/HandTool.test.ts +10 -9
  360. package/src/test/HighlightShape.test.ts +2 -1
  361. package/src/test/SelectTool.test.ts +3 -2
  362. package/src/test/TLUserPreferences.test.ts +4 -3
  363. package/src/test/TestEditor.ts +13 -15
  364. package/src/test/TldrawEditor.test.tsx +11 -10
  365. package/src/test/ZoomTool.test.ts +7 -6
  366. package/src/test/__snapshots__/drawing.test.ts.snap +2 -2
  367. package/src/test/__snapshots__/groups.test.tsx.snap +6 -6
  368. package/src/test/__snapshots__/resizing.test.ts.snap +2 -2
  369. package/src/test/arrows-megabus.test.tsx +5 -4
  370. package/src/test/bindings.test.tsx +24 -37
  371. package/src/test/bookmark-shapes.test.ts +1 -8
  372. package/src/test/commands/__snapshots__/getSvgString.test.ts.snap +23 -7
  373. package/src/test/commands/__snapshots__/packShapes.test.ts.snap +8 -8
  374. package/src/test/commands/__snapshots__/zoomToFit.test.ts.snap +2 -2
  375. package/src/test/commands/alignShapes.test.tsx +25 -24
  376. package/src/test/commands/animationSpeed.test.ts +2 -1
  377. package/src/test/commands/centerOnPoint.test.ts +3 -2
  378. package/src/test/commands/clipboard.test.ts +3 -2
  379. package/src/test/commands/createShapes.test.ts +2 -1
  380. package/src/test/commands/deleteShapes.test.ts +2 -1
  381. package/src/test/commands/distributeShapes.test.tsx +11 -10
  382. package/src/test/commands/getSvgString.test.ts +2 -1
  383. package/src/test/commands/packShapes.test.ts +5 -4
  384. package/src/test/commands/resizeShape.test.ts +2 -1
  385. package/src/test/commands/rotateShapes.test.ts +7 -6
  386. package/src/test/commands/setCamera.test.ts +4 -3
  387. package/src/test/commands/setCurrentPage.test.ts +3 -2
  388. package/src/test/commands/stackShapes.test.ts +11 -10
  389. package/src/test/commands/stretch.test.tsx +13 -12
  390. package/src/test/createDeepLink.test.tsx +2 -1
  391. package/src/test/cropping.test.ts +3 -2
  392. package/src/test/custom-clipping.test.ts +436 -0
  393. package/src/test/drawing.test.ts +2 -1
  394. package/src/test/flipShapes.test.ts +4 -3
  395. package/src/test/frames.test.ts +25 -24
  396. package/src/test/getCulledShapes.test.tsx +74 -4
  397. package/src/test/groups.test.tsx +1 -1
  398. package/src/test/handleDeepLink.test.tsx +2 -1
  399. package/src/test/maxShapes.test.ts +3 -2
  400. package/src/test/modifiers.test.ts +5 -4
  401. package/src/test/navigation.test.ts +12 -11
  402. package/src/test/panning.test.ts +2 -1
  403. package/src/test/perf/perf.test.ts +2 -1
  404. package/src/test/registerDeepLinkListener.test.tsx +10 -9
  405. package/src/test/resizing.test.ts +39 -38
  406. package/src/test/select.test.tsx +4 -3
  407. package/src/test/selection-omnibus.test.ts +11 -10
  408. package/src/test/shapeutils.test.ts +4 -3
  409. package/src/test/translating.test.ts +9 -8
  410. package/tldraw.css +564 -522
  411. package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
  412. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
  413. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
  414. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +0 -131
  415. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
  416. package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
  417. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
  418. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
  419. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +0 -115
  420. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
  421. 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;
@@ -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,8 +1017,22 @@
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 {
@@ -1017,19 +1041,19 @@
1017
1041
 
1018
1042
  .tlui-style-panel__section__common:not(:only-child) {
1019
1043
  margin-bottom: 7px;
1020
- border-bottom: 1px solid var(--color-divider);
1044
+ border-bottom: 1px solid var(--tl-color-divider);
1021
1045
  }
1022
1046
 
1023
1047
  .tlui-style-panel__dropdown-picker:only-child {
1024
- width: 100%;
1048
+ flex: 1;
1025
1049
  }
1026
1050
 
1027
1051
  .tlui-style-panel__double-select-picker {
1028
1052
  display: flex;
1029
1053
  grid-template-columns: 1fr auto;
1030
1054
  align-items: center;
1031
- padding-left: var(--space-4);
1032
- color: var(--color-text-1);
1055
+ padding-left: var(--tl-space-4);
1056
+ color: var(--tl-color-text-1);
1033
1057
  font-size: 12px;
1034
1058
  }
1035
1059
 
@@ -1043,13 +1067,16 @@
1043
1067
 
1044
1068
  .tlui-style-panel .tlui-button[data-state='open']::after {
1045
1069
  opacity: 1;
1046
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1070
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1047
1071
  }
1048
1072
 
1049
1073
  @media (hover: hover) {
1074
+ .tlui-style-panel .tlui-button[aria-expanded='true'] {
1075
+ background: none;
1076
+ }
1050
1077
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
1051
1078
  opacity: 1;
1052
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1079
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1053
1080
  }
1054
1081
  }
1055
1082
 
@@ -1059,14 +1086,14 @@
1059
1086
  .tlui-style-panel__section__common .tlui-style-panel__subheading,
1060
1087
  .tlui-style-panel__subheading + .tlui-slider__container {
1061
1088
  margin: 0;
1062
- padding: var(--space-2) var(--space-3) 0px var(--space-4);
1089
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
1063
1090
  font-size: 12px;
1064
1091
  font-weight: inherit;
1065
1092
  line-height: inherit;
1066
1093
  }
1067
1094
 
1068
1095
  .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1069
- padding-top: var(--space-3);
1096
+ padding-top: var(--tl-space-3);
1070
1097
  }
1071
1098
 
1072
1099
  .tlui-style-panel__subheading + .tlui-slider__container {
@@ -1078,7 +1105,6 @@
1078
1105
  .tlui-layout__bottom {
1079
1106
  grid-row: 2;
1080
1107
  width: 100%;
1081
- overflow: hidden;
1082
1108
  }
1083
1109
 
1084
1110
  .tlui-layout__bottom__main {
@@ -1094,7 +1120,7 @@
1094
1120
  display: flex;
1095
1121
  width: min-content;
1096
1122
  flex-direction: column;
1097
- z-index: var(--layer-panels);
1123
+ z-index: var(--tl-layer-panels);
1098
1124
  pointer-events: all;
1099
1125
  position: absolute;
1100
1126
  left: 0px;
@@ -1107,10 +1133,10 @@
1107
1133
  z-index: -1;
1108
1134
  inset: -2px -2px 0px 0px;
1109
1135
  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);
1136
+ border-top: 2px solid var(--tl-color-background);
1137
+ border-right: 2px solid var(--tl-color-background);
1138
+ border-top-right-radius: var(--tl-radius-4);
1139
+ background-color: var(--tl-color-low);
1114
1140
  }
1115
1141
 
1116
1142
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -1124,7 +1150,7 @@
1124
1150
  height: 96px;
1125
1151
  min-height: 96px;
1126
1152
  overflow: hidden;
1127
- padding: var(--space-3);
1153
+ padding: var(--tl-space-3);
1128
1154
  padding-top: 0px;
1129
1155
  }
1130
1156
 
@@ -1147,7 +1173,7 @@
1147
1173
  }
1148
1174
 
1149
1175
  .tlui-main-toolbar--horizontal {
1150
- padding-bottom: calc(var(--space-3) + var(--sab));
1176
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
1151
1177
  max-width: 100%;
1152
1178
  }
1153
1179
 
@@ -1156,7 +1182,7 @@
1156
1182
  left: 0;
1157
1183
  top: 90px; /* height of page menu + 'back to content' button */
1158
1184
  bottom: 140px; /* height of expanded mini-map */
1159
- padding-left: calc(var(--space-3) + var(--sab));
1185
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
1160
1186
  }
1161
1187
 
1162
1188
  [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
@@ -1168,7 +1194,7 @@
1168
1194
  position: relative;
1169
1195
  width: fit-content;
1170
1196
  display: flex;
1171
- gap: var(--space-3);
1197
+ gap: var(--tl-space-3);
1172
1198
  align-items: flex-start;
1173
1199
  }
1174
1200
 
@@ -1187,7 +1213,7 @@
1187
1213
  /* Row of controls + lock button */
1188
1214
  .tlui-main-toolbar__extras {
1189
1215
  position: relative;
1190
- z-index: var(--layer-above);
1216
+ z-index: var(--tl-layer-above);
1191
1217
  pointer-events: none;
1192
1218
  align-self: stretch;
1193
1219
  }
@@ -1208,23 +1234,23 @@
1208
1234
 
1209
1235
  .tlui-main-toolbar__extras__controls {
1210
1236
  position: relative;
1211
- z-index: var(--layer-above);
1212
- background-color: var(--color-low);
1213
- border: 2px solid var(--color-background);
1237
+ z-index: var(--tl-layer-above);
1238
+ background-color: var(--tl-color-low);
1239
+ border: 2px solid var(--tl-color-background);
1214
1240
  pointer-events: all;
1215
1241
  }
1216
1242
 
1217
1243
  .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);
1244
+ border-top-left-radius: var(--tl-radius-4);
1245
+ border-top-right-radius: var(--tl-radius-4);
1220
1246
  margin-left: 8px;
1221
1247
  margin-right: 0px;
1222
1248
  width: fit-content;
1223
1249
  }
1224
1250
 
1225
1251
  .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);
1252
+ border-top-right-radius: var(--tl-radius-4);
1253
+ border-bottom-right-radius: var(--tl-radius-4);
1228
1254
  margin-top: 8px;
1229
1255
  margin-left: -2px;
1230
1256
  margin-bottom: 0px;
@@ -1232,12 +1258,12 @@
1232
1258
  }
1233
1259
 
1234
1260
  .tlui-main-toolbar__tools {
1235
- border-radius: var(--radius-4);
1236
- z-index: var(--layer-panels);
1261
+ border-radius: var(--tl-radius-4);
1262
+ z-index: var(--tl-layer-panels);
1237
1263
  pointer-events: all;
1238
1264
  position: relative;
1239
- background: var(--color-panel);
1240
- box-shadow: var(--shadow-2);
1265
+ background: var(--tl-color-panel);
1266
+ box-shadow: var(--tl-shadow-2);
1241
1267
  }
1242
1268
 
1243
1269
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
@@ -1262,14 +1288,18 @@
1262
1288
  }
1263
1289
 
1264
1290
  .tlui-main-toolbar--horizontal *[data-state='open']::after {
1265
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1291
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1266
1292
  opacity: 1;
1267
1293
  }
1268
1294
  .tlui-main-toolbar--vertical *[data-state='open']::after {
1269
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1295
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1270
1296
  opacity: 1;
1271
1297
  }
1272
1298
 
1299
+ .tlui-main-toolbar__overflow-content {
1300
+ touch-action: none;
1301
+ }
1302
+
1273
1303
  .tlui-main-toolbar__tools [data-toolbar-visible='false'],
1274
1304
  .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
1275
1305
  display: none;
@@ -1298,11 +1328,11 @@
1298
1328
 
1299
1329
  @media (hover: hover) {
1300
1330
  .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%);
1331
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1302
1332
  opacity: 1;
1303
1333
  }
1304
1334
  .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%);
1335
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1306
1336
  opacity: 1;
1307
1337
  }
1308
1338
  }
@@ -1313,44 +1343,40 @@
1313
1343
  font-size: 12px;
1314
1344
  padding: 2px 8px;
1315
1345
  border-radius: 4px;
1316
- background-color: var(--color-tooltip);
1346
+ background-color: var(--tl-color-tooltip);
1317
1347
  box-shadow: none;
1318
- color: var(--color-text-shadow);
1348
+ color: var(--tl-color-text-shadow);
1319
1349
  max-width: 400px;
1320
1350
  width: fit-content;
1321
1351
  text-align: center;
1322
- pointer-events: none;
1323
1352
  will-change: transform, opacity;
1324
1353
  z-index: 2;
1325
1354
  }
1326
1355
 
1327
1356
  .tlui-tooltip__arrow {
1328
- fill: var(--color-tooltip);
1357
+ fill: var(--tl-color-tooltip);
1329
1358
  will-change: opacity;
1330
1359
  }
1331
1360
 
1332
1361
  [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;
1362
+ z-index: var(--tl-layer-toasts) !important;
1363
+ pointer-events: none;
1338
1364
  }
1339
1365
 
1340
1366
  /* ------------------- Debug panel ------------------ */
1341
1367
 
1342
1368
  .tlui-debug-panel {
1343
- background-color: var(--color-low);
1369
+ background-color: var(--tl-color-low);
1344
1370
  width: 100%;
1345
1371
  display: grid;
1346
1372
  align-items: center;
1347
1373
  grid-template-columns: 1fr auto auto auto;
1348
1374
  justify-content: space-between;
1349
- padding-left: var(--space-4);
1350
- border-top: 1px solid var(--color-background);
1375
+ padding-left: var(--tl-space-4);
1376
+ border-top: 1px solid var(--tl-color-background);
1351
1377
  font-size: 12px;
1352
- color: var(--color-text-1);
1353
- z-index: var(--layer-panels);
1378
+ color: var(--tl-color-text-1);
1379
+ z-index: var(--tl-layer-panels);
1354
1380
  pointer-events: all;
1355
1381
  }
1356
1382
 
@@ -1366,7 +1392,7 @@
1366
1392
 
1367
1393
  .tlui-debug-panel__fps__slow {
1368
1394
  font-weight: bold;
1369
- color: var(--color-danger);
1395
+ color: var(--tl-color-danger);
1370
1396
  }
1371
1397
 
1372
1398
  .tlui-a11y-audit {
@@ -1376,7 +1402,7 @@
1376
1402
  .tlui-a11y-audit th,
1377
1403
  .tlui-a11y-audit td {
1378
1404
  padding: 8px;
1379
- border: 1px solid var(--color-low-border);
1405
+ border: 1px solid var(--tl-color-low-border);
1380
1406
  }
1381
1407
 
1382
1408
  /* --------------------- Toasts --------------------- */
@@ -1389,10 +1415,10 @@
1389
1415
  align-items: flex-end;
1390
1416
  justify-content: flex-end;
1391
1417
  flex-direction: column;
1392
- gap: var(--space-3);
1418
+ gap: var(--tl-space-3);
1393
1419
  pointer-events: none;
1394
- padding: 0px var(--space-3) 64px 0px;
1395
- z-index: var(--layer-toasts);
1420
+ padding: 0px var(--tl-space-3) 64px 0px;
1421
+ z-index: var(--tl-layer-toasts);
1396
1422
  }
1397
1423
 
1398
1424
  .tlui-toast__viewport > * {
@@ -1401,34 +1427,34 @@
1401
1427
 
1402
1428
  .tlui-toast__icon {
1403
1429
  padding-top: 11px;
1404
- padding-left: var(--space-4);
1405
- color: var(--color-text-1);
1430
+ padding-left: var(--tl-space-4);
1431
+ color: var(--tl-color-text-1);
1406
1432
  }
1407
1433
 
1408
1434
  .tlui-toast__container {
1409
1435
  min-width: 200px;
1410
1436
  display: flex;
1411
1437
  flex-direction: row;
1412
- background-color: var(--color-panel);
1413
- box-shadow: var(--shadow-2);
1414
- border-radius: var(--radius-3);
1438
+ background-color: var(--tl-color-panel);
1439
+ box-shadow: var(--tl-shadow-2);
1440
+ border-radius: var(--tl-radius-3);
1415
1441
  font-size: 12px;
1416
1442
  }
1417
1443
 
1418
1444
  .tlui-toast__container[data-severity='success'] .tlui-icon {
1419
- color: var(--color-success);
1445
+ color: var(--tl-color-success);
1420
1446
  }
1421
1447
 
1422
1448
  .tlui-toast__container[data-severity='info'] .tlui-icon {
1423
- color: var(--color-info);
1449
+ color: var(--tl-color-info);
1424
1450
  }
1425
1451
 
1426
1452
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
1427
- color: var(--color-warning);
1453
+ color: var(--tl-color-warning);
1428
1454
  }
1429
1455
 
1430
1456
  .tlui-toast__container[data-severity='error'] .tlui-icon {
1431
- color: var(--color-danger);
1457
+ color: var(--tl-color-danger);
1432
1458
  }
1433
1459
 
1434
1460
  .tlui-toast__main {
@@ -1437,27 +1463,27 @@
1437
1463
  }
1438
1464
 
1439
1465
  .tlui-toast__content {
1440
- padding: var(--space-4);
1466
+ padding: var(--tl-space-4);
1441
1467
  display: flex;
1442
1468
  line-height: 1.4;
1443
1469
  flex-direction: column;
1444
- gap: var(--space-3);
1470
+ gap: var(--tl-space-3);
1445
1471
  }
1446
1472
 
1447
1473
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
1448
- padding-bottom: var(--space-2);
1474
+ padding-bottom: var(--tl-space-2);
1449
1475
  }
1450
1476
 
1451
1477
  .tlui-toast__title {
1452
1478
  font-weight: bold;
1453
- color: var(--color-text-1);
1479
+ color: var(--tl-color-text-1);
1454
1480
  /* this makes the default toast look better */
1455
1481
  line-height: 16px;
1456
1482
  }
1457
1483
 
1458
1484
  .tlui-toast__description {
1459
- color: var(--color-text-1);
1460
- padding: var(--space-3);
1485
+ color: var(--tl-color-text-1);
1486
+ padding: var(--tl-space-3);
1461
1487
  margin: 0px;
1462
1488
  padding: 0px;
1463
1489
  }
@@ -1509,14 +1535,14 @@
1509
1535
  left: 0px;
1510
1536
  width: 100%;
1511
1537
  height: 100%;
1512
- z-index: var(--layer-canvas-overlays);
1513
- background-color: var(--color-overlay);
1538
+ z-index: var(--tl-layer-canvas-overlays);
1539
+ background-color: var(--tl-color-overlay);
1514
1540
  pointer-events: all;
1515
1541
  animation: tl-fade-in 0.12s ease-out;
1516
1542
  display: grid;
1517
1543
  place-items: center;
1518
1544
  overflow-y: auto;
1519
- padding: 0px var(--space-3);
1545
+ padding: 0px var(--tl-space-3);
1520
1546
  }
1521
1547
 
1522
1548
  .tlui-dialog__content {
@@ -1524,9 +1550,9 @@
1524
1550
  flex-direction: column;
1525
1551
  position: relative;
1526
1552
  cursor: default;
1527
- background-color: var(--color-panel);
1528
- box-shadow: var(--shadow-3);
1529
- border-radius: var(--radius-3);
1553
+ background-color: var(--tl-color-panel);
1554
+ box-shadow: var(--tl-shadow-3);
1555
+ border-radius: var(--tl-radius-3);
1530
1556
  font-size: 12px;
1531
1557
  overflow: hidden;
1532
1558
  min-width: 300px;
@@ -1539,9 +1565,9 @@
1539
1565
  display: flex;
1540
1566
  align-items: center;
1541
1567
  flex: 0;
1542
- z-index: var(--layer-header-footer);
1543
- padding-left: var(--space-4);
1544
- color: var(--color-text);
1568
+ z-index: var(--tl-layer-header-footer);
1569
+ padding-left: var(--tl-space-4);
1570
+ color: var(--tl-color-text);
1545
1571
  height: 40px;
1546
1572
  }
1547
1573
 
@@ -1550,7 +1576,7 @@
1550
1576
  font-weight: inherit;
1551
1577
  font-size: 12px;
1552
1578
  margin: 0px;
1553
- color: var(--color-text-1);
1579
+ color: var(--tl-color-text-1);
1554
1580
  }
1555
1581
 
1556
1582
  .tlui-dialog__header__close {
@@ -1558,16 +1584,16 @@
1558
1584
  }
1559
1585
 
1560
1586
  .tlui-dialog__body {
1561
- padding: var(--space-4) var(--space-4);
1587
+ padding: var(--tl-space-4) var(--tl-space-4);
1562
1588
  flex: 0 1;
1563
1589
  overflow-y: auto;
1564
1590
  overflow-x: hidden;
1565
- color: var(--color-text-1);
1591
+ color: var(--tl-color-text-1);
1566
1592
  user-select: all;
1567
1593
  -webkit-user-select: text;
1568
1594
  }
1569
1595
  .tlui-dialog__body a {
1570
- color: var(--color-selected);
1596
+ color: var(--tl-color-selected);
1571
1597
  }
1572
1598
 
1573
1599
  .tlui-dialog__body ul,
@@ -1575,13 +1601,13 @@
1575
1601
  padding-left: 16px;
1576
1602
  display: flex;
1577
1603
  flex-direction: column;
1578
- gap: var(--space-2);
1604
+ gap: var(--tl-space-2);
1579
1605
  }
1580
1606
 
1581
1607
  .tlui-dialog__footer {
1582
1608
  position: relative;
1583
1609
  min-height: 12px;
1584
- z-index: var(--layer-header-footer);
1610
+ z-index: var(--tl-layer-header-footer);
1585
1611
  }
1586
1612
 
1587
1613
  .tlui-dialog__footer__actions {
@@ -1601,15 +1627,15 @@
1601
1627
  .tlui-edit-link-dialog {
1602
1628
  display: flex;
1603
1629
  flex-direction: column;
1604
- gap: var(--space-4);
1605
- color: var(--color-text);
1630
+ gap: var(--tl-space-4);
1631
+ color: var(--tl-color-text);
1606
1632
  }
1607
1633
 
1608
1634
  .tlui-edit-link-dialog__input {
1609
- background-color: var(--color-muted-2);
1635
+ background-color: var(--tl-color-muted-2);
1610
1636
  flex-grow: 2;
1611
- border-radius: var(--radius-2);
1612
- padding: 0px var(--space-4);
1637
+ border-radius: var(--tl-radius-2);
1638
+ padding: 0px var(--tl-space-4);
1613
1639
  }
1614
1640
 
1615
1641
  /* Embed Dialog */
@@ -1617,15 +1643,15 @@
1617
1643
  .tlui-embed__spacer {
1618
1644
  flex-grow: 2;
1619
1645
  min-height: 0px;
1620
- margin-left: calc(-1 * var(--space-4));
1621
- margin-top: calc(-1 * var(--space-4));
1646
+ margin-left: calc(-1 * var(--tl-space-4));
1647
+ margin-top: calc(-1 * var(--tl-space-4));
1622
1648
  pointer-events: none;
1623
1649
  }
1624
1650
 
1625
1651
  .tlui-embed-dialog__list {
1626
1652
  display: flex;
1627
1653
  flex-direction: column;
1628
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
1654
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
1629
1655
  }
1630
1656
 
1631
1657
  .tlui-embed-dialog__item__image {
@@ -1637,49 +1663,49 @@
1637
1663
  background-size: contain;
1638
1664
  background-repeat: no-repeat;
1639
1665
  background-position: center center;
1640
- background-color: var(--color-selected-contrast);
1641
- border-radius: var(--radius-1);
1666
+ background-color: var(--tl-color-selected-contrast);
1667
+ border-radius: var(--tl-radius-1);
1642
1668
  }
1643
1669
 
1644
1670
  .tlui-embed-dialog__enter {
1645
1671
  display: flex;
1646
1672
  flex-direction: column;
1647
- gap: var(--space-4);
1648
- color: var(--color-text-1);
1673
+ gap: var(--tl-space-4);
1674
+ color: var(--tl-color-text-1);
1649
1675
  }
1650
1676
 
1651
1677
  .tlui-embed-dialog__input {
1652
- background-color: var(--color-muted-2);
1678
+ background-color: var(--tl-color-muted-2);
1653
1679
  flex-grow: 2;
1654
- border-radius: var(--radius-2);
1655
- padding: 0px var(--space-4);
1680
+ border-radius: var(--tl-radius-2);
1681
+ padding: 0px var(--tl-space-4);
1656
1682
  }
1657
1683
 
1658
1684
  .tlui-embed-dialog__warning {
1659
- color: var(--color-danger);
1685
+ color: var(--tl-color-danger);
1660
1686
  text-shadow: none;
1661
1687
  }
1662
1688
 
1663
1689
  .tlui-embed-dialog__instruction__link {
1664
1690
  display: flex;
1665
- gap: var(--space-1);
1666
- margin-top: var(--space-4);
1691
+ gap: var(--tl-space-1);
1692
+ margin-top: var(--tl-space-4);
1667
1693
  }
1668
1694
 
1669
1695
  .tlui-embed-dialog__enter a {
1670
- color: var(--color-text-1);
1696
+ color: var(--tl-color-text-1);
1671
1697
  }
1672
1698
 
1673
1699
  /* --------------- Keyboard shortcuts --------------- */
1674
1700
 
1675
1701
  .tlui-shortcuts-dialog__header {
1676
- border-bottom: 1px solid var(--color-divider);
1702
+ border-bottom: 1px solid var(--tl-color-divider);
1677
1703
  }
1678
1704
 
1679
1705
  .tlui-shortcuts-dialog__body {
1680
1706
  position: relative;
1681
1707
  columns: 3;
1682
- column-gap: var(--space-9);
1708
+ column-gap: var(--tl-space-9);
1683
1709
  pointer-events: all;
1684
1710
  touch-action: auto;
1685
1711
 
@@ -1697,14 +1723,14 @@
1697
1723
 
1698
1724
  .tlui-shortcuts-dialog__group {
1699
1725
  break-inside: avoid-column;
1700
- padding-bottom: var(--space-6);
1726
+ padding-bottom: var(--tl-space-6);
1701
1727
  }
1702
1728
 
1703
1729
  .tlui-shortcuts-dialog__group__title {
1704
1730
  font-size: inherit;
1705
1731
  font-weight: inherit;
1706
1732
  margin: 0px;
1707
- color: var(--color-text-3);
1733
+ color: var(--tl-color-text-3);
1708
1734
  height: 32px;
1709
1735
  display: flex;
1710
1736
  align-items: center;
@@ -1713,12 +1739,12 @@
1713
1739
  .tlui-shortcuts-dialog__group__content {
1714
1740
  display: flex;
1715
1741
  flex-direction: column;
1716
- color: var(--color-text-1);
1742
+ color: var(--tl-color-text-1);
1717
1743
  }
1718
1744
 
1719
1745
  .tlui-shortcuts-dialog__key-pair {
1720
1746
  display: flex;
1721
- gap: var(--space-4);
1747
+ gap: var(--tl-space-4);
1722
1748
  align-items: center;
1723
1749
  justify-content: space-between;
1724
1750
  height: 32px;
@@ -1745,12 +1771,12 @@
1745
1771
  height: 24px;
1746
1772
  background: linear-gradient(
1747
1773
  to bottom,
1748
- var(--color-panel-transparent) 0%,
1749
- var(--color-panel) 90%,
1750
- var(--color-panel) 100%
1774
+ var(--tl-color-panel-transparent) 0%,
1775
+ var(--tl-color-panel) 90%,
1776
+ var(--tl-color-panel) 100%
1751
1777
  );
1752
- border-bottom-left-radius: var(--radius-3);
1753
- border-bottom-right-radius: var(--radius-3);
1778
+ border-bottom-left-radius: var(--tl-radius-3);
1779
+ border-bottom-right-radius: var(--tl-radius-3);
1754
1780
  pointer-events: none;
1755
1781
  }
1756
1782
 
@@ -1765,10 +1791,10 @@
1765
1791
  .tlui-help-menu {
1766
1792
  pointer-events: all;
1767
1793
  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);
1794
+ bottom: var(--tl-space-2);
1795
+ right: var(--tl-space-2);
1796
+ z-index: var(--tl-layer-panels);
1797
+ border: 2px solid var(--tl-color-background);
1772
1798
  border-radius: 100%;
1773
1799
  }
1774
1800
 
@@ -1779,7 +1805,7 @@
1779
1805
  display: flex;
1780
1806
  flex-direction: row;
1781
1807
  justify-content: flex-end;
1782
- z-index: var(--layer-panels);
1808
+ z-index: var(--tl-layer-panels);
1783
1809
  align-items: center;
1784
1810
  padding-top: 2px;
1785
1811
  padding-right: 4px;
@@ -1795,7 +1821,7 @@
1795
1821
  border: none;
1796
1822
  cursor: pointer;
1797
1823
  pointer-events: all;
1798
- border-radius: var(--radius-1);
1824
+ border-radius: var(--tl-radius-1);
1799
1825
  padding-right: 1px;
1800
1826
  height: 100%;
1801
1827
  }
@@ -1808,8 +1834,8 @@
1808
1834
  .tlui-people-menu__avatar {
1809
1835
  height: 24px;
1810
1836
  width: 24px;
1811
- border: 2px solid var(--color-background);
1812
- background-color: var(--color-low);
1837
+ border: 2px solid var(--tl-color-background);
1838
+ background-color: var(--tl-color-low);
1813
1839
  border-radius: 100%;
1814
1840
  display: flex;
1815
1841
  align-items: center;
@@ -1818,7 +1844,7 @@
1818
1844
  font-size: 10px;
1819
1845
  font-weight: bold;
1820
1846
  text-align: center;
1821
- color: var(--color-selected-contrast);
1847
+ color: var(--tl-color-selected-contrast);
1822
1848
  z-index: 2;
1823
1849
  }
1824
1850
 
@@ -1832,7 +1858,7 @@
1832
1858
 
1833
1859
  @media (hover: hover) {
1834
1860
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
1835
- border-color: var(--color-low);
1861
+ border-color: var(--tl-color-low);
1836
1862
  }
1837
1863
  }
1838
1864
 
@@ -1840,12 +1866,12 @@
1840
1866
  min-width: 0px;
1841
1867
  font-size: 11px;
1842
1868
  font-weight: 600;
1843
- color: var(--color-text-1);
1869
+ color: var(--tl-color-text-1);
1844
1870
  font-family: inherit;
1845
1871
  padding: 0px 4px;
1846
1872
  }
1847
1873
  .tlui-people-menu__more::after {
1848
- border-radius: var(--radius-2);
1874
+ border-radius: var(--tl-radius-2);
1849
1875
  inset: 0px;
1850
1876
  }
1851
1877
 
@@ -1874,7 +1900,7 @@
1874
1900
  }
1875
1901
 
1876
1902
  .tlui-people-menu__section:not(:last-child) {
1877
- border-bottom: 1px solid var(--color-divider);
1903
+ border-bottom: 1px solid var(--tl-color-divider);
1878
1904
  }
1879
1905
 
1880
1906
  .tlui-people-menu__user {
@@ -1893,7 +1919,7 @@
1893
1919
  text-overflow: ellipsis;
1894
1920
  white-space: nowrap;
1895
1921
  font-size: 12px;
1896
- color: var(--color-text-1);
1922
+ color: var(--tl-color-text-1);
1897
1923
  max-width: 100%;
1898
1924
  flex-grow: 1;
1899
1925
  flex-shrink: 100;
@@ -1905,7 +1931,7 @@
1905
1931
  text-overflow: ellipsis;
1906
1932
  white-space: nowrap;
1907
1933
  font-size: 12px;
1908
- color: var(--color-text-3);
1934
+ color: var(--tl-color-text-3);
1909
1935
  flex-grow: 100;
1910
1936
  flex-shrink: 0;
1911
1937
  margin-left: 4px;
@@ -1996,7 +2022,7 @@
1996
2022
  inset: 0px;
1997
2023
  border-width: 2px;
1998
2024
  border-style: solid;
1999
- z-index: var(--layer-following-indicator);
2025
+ z-index: var(--tl-layer-following-indicator);
2000
2026
  pointer-events: none;
2001
2027
  }
2002
2028
 
@@ -2015,7 +2041,7 @@
2015
2041
  }
2016
2042
 
2017
2043
  .tlui-contextual-toolbar [data-isactive='true']::after {
2018
- background-color: var(--color-muted-2);
2044
+ background-color: var(--tl-color-muted-2);
2019
2045
  opacity: 1;
2020
2046
  }
2021
2047
 
@@ -2031,7 +2057,7 @@
2031
2057
 
2032
2058
  .tlui-contextual-toolbar[data-visible='true'] {
2033
2059
  opacity: 1;
2034
- z-index: var(--layer-menus);
2060
+ z-index: var(--tl-layer-menus);
2035
2061
  }
2036
2062
 
2037
2063
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -2090,7 +2116,7 @@
2090
2116
 
2091
2117
  @keyframes tlui-slide-in {
2092
2118
  from {
2093
- transform: translateX(calc(100% + var(--space-3)));
2119
+ transform: translateX(calc(100% + var(--tl-space-3)));
2094
2120
  }
2095
2121
  to {
2096
2122
  transform: translateX(0px);
@@ -2102,6 +2128,6 @@
2102
2128
  transform: translateX(var(--radix-toast-swipe-end-x));
2103
2129
  }
2104
2130
  to {
2105
- transform: translateX(calc(100% + var(--space-3)));
2131
+ transform: translateX(calc(100% + var(--tl-space-3)));
2106
2132
  }
2107
2133
  }