tldraw 3.16.0-canary.39bd199a7aa6 → 3.16.0-canary.555a872cc1c7

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 (271) hide show
  1. package/dist-cjs/index.d.ts +130 -6
  2. package/dist-cjs/index.js +14 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  5. package/dist-cjs/lib/canvas/TldrawScribble.js.map +2 -2
  6. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  7. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  8. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js +3 -3
  9. package/dist-cjs/lib/shapes/arrow/elbow/ElbowArrowDebug.js.map +1 -1
  10. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  11. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -1
  13. package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
  14. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -12
  15. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  16. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -1
  17. package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +2 -2
  18. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  19. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  21. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  22. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  23. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  24. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +3 -3
  25. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +1 -1
  26. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  27. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  29. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/shapes/shared/ShapeFill.js +5 -5
  31. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  32. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  33. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  34. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  35. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  36. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +3 -3
  37. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
  38. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  39. package/dist-cjs/lib/ui/TldrawUi.js +14 -0
  40. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  41. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  42. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  43. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  44. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  45. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  46. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  47. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  48. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  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 +5 -3
  52. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  53. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  54. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  55. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  56. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  57. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  58. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  59. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  60. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  61. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +2 -0
  62. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  63. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +171 -140
  64. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  65. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
  66. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
  67. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
  68. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
  69. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +1 -1
  70. package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
  71. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  72. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  73. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  74. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  75. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  76. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  77. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  78. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +5 -16
  80. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
  81. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  82. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  83. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  84. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  85. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +30 -7
  86. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  87. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +253 -0
  88. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  89. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  90. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  91. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuContext.js.map +2 -2
  92. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +25 -12
  93. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  94. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +152 -20
  95. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  96. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  97. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  98. package/dist-cjs/lib/ui/context/actions.js +15 -0
  99. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  100. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  101. package/dist-cjs/lib/ui/hooks/useTools.js +76 -9
  102. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  103. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  104. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +3 -0
  105. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  106. package/dist-cjs/lib/ui/version.js +3 -3
  107. package/dist-cjs/lib/ui/version.js.map +1 -1
  108. package/dist-esm/index.d.mts +130 -6
  109. package/dist-esm/index.mjs +25 -1
  110. package/dist-esm/index.mjs.map +2 -2
  111. package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -1
  112. package/dist-esm/lib/canvas/TldrawScribble.mjs.map +2 -2
  113. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  114. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  115. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs +3 -3
  116. package/dist-esm/lib/shapes/arrow/elbow/ElbowArrowDebug.mjs.map +1 -1
  117. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  118. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  119. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -1
  120. package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
  121. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +13 -12
  122. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  123. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -1
  124. package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +2 -2
  125. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  126. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  127. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  128. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  129. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  130. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  131. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +3 -3
  132. package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +1 -1
  133. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  134. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  135. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  136. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  137. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +6 -5
  138. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  139. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  140. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  141. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  142. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  143. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +3 -3
  144. package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
  145. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  146. package/dist-esm/lib/ui/TldrawUi.mjs +16 -2
  147. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  148. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  149. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  150. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  151. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  152. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  153. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  154. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  155. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  156. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs +4 -4
  157. package/dist-esm/lib/ui/components/Minimap/MinimapManager.mjs.map +2 -2
  158. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +6 -3
  159. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  160. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  161. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  162. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  163. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  164. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  165. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  166. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  167. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  168. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +3 -1
  169. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  170. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +171 -140
  171. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  172. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
  173. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
  174. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
  175. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  176. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +1 -1
  177. package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
  178. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  179. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  180. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  181. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  182. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  183. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  184. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  185. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  186. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +6 -6
  187. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  188. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
  189. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  190. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  191. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  192. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +30 -7
  193. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  194. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +230 -0
  195. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  196. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  197. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  198. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuContext.mjs.map +2 -2
  199. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +25 -12
  200. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  201. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +160 -22
  202. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  203. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  204. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  205. package/dist-esm/lib/ui/context/actions.mjs +15 -0
  206. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  207. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  208. package/dist-esm/lib/ui/hooks/useTools.mjs +83 -10
  209. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  210. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +3 -0
  211. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  212. package/dist-esm/lib/ui/version.mjs +3 -3
  213. package/dist-esm/lib/ui/version.mjs.map +1 -1
  214. package/package.json +3 -3
  215. package/src/index.ts +20 -0
  216. package/src/lib/canvas/TldrawScribble.tsx +1 -1
  217. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  218. package/src/lib/shapes/arrow/elbow/ElbowArrowDebug.tsx +3 -3
  219. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  220. package/src/lib/shapes/embed/EmbedShapeUtil.tsx +1 -1
  221. package/src/lib/shapes/frame/FrameShapeUtil.tsx +21 -14
  222. package/src/lib/shapes/frame/components/FrameHeading.tsx +1 -1
  223. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  224. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  225. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  226. package/src/lib/shapes/image/ImageShapeUtil.tsx +3 -3
  227. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  228. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  229. package/src/lib/shapes/shared/ShapeFill.tsx +6 -5
  230. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  231. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  232. package/src/lib/shapes/video/VideoShapeUtil.tsx +3 -3
  233. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  234. package/src/lib/ui/TldrawUi.tsx +17 -2
  235. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  236. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  237. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  238. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  239. package/src/lib/ui/components/Minimap/MinimapManager.ts +4 -4
  240. package/src/lib/ui/components/MobileStylePanel.tsx +9 -6
  241. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  242. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  243. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  244. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  245. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +3 -1
  246. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +146 -107
  247. package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
  248. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
  249. package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +1 -1
  250. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  251. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  252. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +14 -11
  253. package/src/lib/ui/components/menu-items.tsx +8 -0
  254. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +40 -37
  255. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
  256. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  257. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +51 -12
  258. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +301 -0
  259. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  260. package/src/lib/ui/components/primitives/menus/TldrawUiMenuContext.tsx +0 -1
  261. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +29 -16
  262. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +218 -19
  263. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  264. package/src/lib/ui/context/actions.tsx +15 -0
  265. package/src/lib/ui/context/events.tsx +2 -0
  266. package/src/lib/ui/hooks/useTools.tsx +118 -10
  267. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +3 -0
  268. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +3 -0
  269. package/src/lib/ui/version.ts +3 -3
  270. package/src/lib/ui.css +402 -292
  271. package/tldraw.css +695 -580
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
- .tlui-button[aria-expanded='true'][data-direction='left']::after {
101
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
100
+ .tlui-button[aria-expanded='true'][data-direction='left'] {
101
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
102
102
  opacity: 1;
103
103
  }
104
104
 
105
105
  @media (hover: hover) {
106
106
  .tlui-button[aria-expanded='true'][data-direction='left']:not(:hover)::after {
107
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
107
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
108
108
  opacity: 1;
109
109
  }
110
110
 
@@ -118,18 +118,18 @@
118
118
  }
119
119
 
120
120
  .tlui-button__icon + .tlui-button__label {
121
- margin-left: var(--space-2);
121
+ margin-left: var(--tl-space-2);
122
122
  }
123
123
 
124
124
  /* Low button */
125
125
 
126
126
  .tlui-button__low {
127
- border-radius: var(--radius-3);
128
- background-color: var(--color-low);
127
+ border-radius: var(--tl-radius-3);
128
+ background-color: var(--tl-color-low);
129
129
  }
130
130
 
131
131
  .tlui-button__low::after {
132
- background-color: var(--color-muted-2);
132
+ background-color: var(--tl-color-muted-2);
133
133
  opacity: 0;
134
134
  }
135
135
 
@@ -142,31 +142,25 @@
142
142
  /* Primary / danger buttons */
143
143
 
144
144
  .tlui-button__primary {
145
- color: var(--color-primary);
145
+ color: var(--tl-color-primary);
146
146
  }
147
147
 
148
148
  .tlui-button__danger {
149
- color: var(--color-danger);
149
+ color: var(--tl-color-danger);
150
150
  text-shadow: none;
151
151
  }
152
152
 
153
153
  @media (hover: hover) {
154
154
  .tlui-button__primary:not(:disabled, :focus-visible):hover {
155
- color: var(--color-primary);
155
+ color: var(--tl-color-primary);
156
156
  }
157
157
 
158
158
  .tlui-button__danger:not(:disabled, :focus-visible):hover {
159
- color: var(--color-danger);
159
+ color: var(--tl-color-danger);
160
160
  text-shadow: none;
161
161
  }
162
162
  }
163
163
 
164
- /* Panel button */
165
-
166
- .tlui-button__panel {
167
- position: relative;
168
- }
169
-
170
164
  /* Menu button */
171
165
 
172
166
  .tlui-button__menu {
@@ -179,7 +173,7 @@
179
173
 
180
174
  .tlui-button__menu::after {
181
175
  inset: 4px;
182
- border-radius: var(--radius-2);
176
+ border-radius: var(--tl-radius-2);
183
177
  }
184
178
 
185
179
  .tlui-button__menu > .tlui-icon + .tlui-button__label {
@@ -207,18 +201,26 @@
207
201
 
208
202
  /* Tool lock button */
209
203
 
210
- .tlui-toolbar__lock-button {
204
+ .tlui-main-toolbar__lock-button {
211
205
  position: absolute;
212
- top: 4px;
213
- right: 0px;
214
206
  pointer-events: all;
215
207
  height: 40px;
216
208
  width: 40px;
209
+ border-radius: var(--tl-radius-2);
210
+ }
211
+
212
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
213
+ top: 4px;
214
+ right: 0px;
217
215
  min-width: 0px;
218
- border-radius: var(--radius-2);
219
216
  }
220
217
 
221
- .tlui-toolbar__lock-button::after {
218
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__lock-button {
219
+ bottom: 0px;
220
+ min-height: 0px;
221
+ }
222
+
223
+ .tlui-main-toolbar__lock-button::after {
222
224
  top: 4px;
223
225
  left: 8px;
224
226
  inset: 4px;
@@ -230,16 +232,6 @@
230
232
  position: relative;
231
233
  height: 48px;
232
234
  width: 48px;
233
- margin-left: -2px;
234
- margin-right: -2px;
235
- }
236
-
237
- .tlui-button__tool:nth-of-type(1) {
238
- margin-left: 0px;
239
- }
240
-
241
- .tlui-button__tool:nth-last-of-type(1) {
242
- margin-right: 0px;
243
235
  }
244
236
 
245
237
  .tlui-button__tool::after {
@@ -248,69 +240,64 @@
248
240
  }
249
241
 
250
242
  .tlui-button__tool[aria-pressed='true'] {
251
- color: var(--color-selected-contrast);
243
+ color: var(--tl-color-selected-contrast);
252
244
  }
253
245
 
254
246
  .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
255
- color: var(--color-selected-contrast);
247
+ color: var(--tl-color-selected-contrast);
256
248
  }
257
249
 
258
250
  .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
259
- background: var(--color-selected);
251
+ background: var(--tl-color-selected);
260
252
  opacity: 1;
261
253
  }
262
254
 
263
- .tlui-layout__mobile .tlui-button__tool {
255
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool {
264
256
  height: 48px;
265
257
  width: 43px;
266
258
  }
267
259
 
268
- .tlui-layout__mobile .tlui-button__tool > .tlui-icon {
260
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool > .tlui-icon {
269
261
  height: 16px;
270
262
  width: 16px;
271
263
  }
272
264
 
273
- /* Button Row */
265
+ /* Row layout */
274
266
 
275
- .tlui-buttons__horizontal {
267
+ .tlui-row {
276
268
  display: flex;
277
269
  flex-direction: row;
270
+ padding: 0 2px;
278
271
  }
279
- .tlui-buttons__horizontal > * {
272
+ .tlui-row > * {
280
273
  margin-left: -2px;
281
274
  margin-right: -2px;
282
275
  }
283
- .tlui-buttons__horizontal > *:nth-child(1) {
284
- margin-left: 0px;
276
+
277
+ /* Column layout */
278
+
279
+ .tlui-column {
280
+ display: flex;
281
+ flex-direction: column;
282
+ padding: 2px 0;
285
283
  }
286
- .tlui-buttons__horizontal > *:nth-last-child(1) {
287
- margin-right: 0px;
284
+ .tlui-column > * {
285
+ margin-top: -2px;
286
+ margin-bottom: -2px;
288
287
  }
289
288
 
290
- /* Button Grid */
289
+ /* Grid layout */
291
290
 
292
- .tlui-buttons__grid {
291
+ .tlui-grid {
293
292
  display: grid;
294
- grid-template-columns: repeat(4, auto);
293
+ grid-template-columns: repeat(4, 1fr);
295
294
  grid-auto-flow: row;
296
295
  overflow: hidden;
296
+ padding: 2px;
297
297
  }
298
- .tlui-buttons__grid > .tlui-button {
298
+ .tlui-grid > * {
299
299
  margin: -2px;
300
300
  }
301
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n),
302
- .tlui-buttons__vertical-align > .tlui-button:nth-of-type(3n) {
303
- margin-right: 0px;
304
- }
305
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n - 3) {
306
- margin-left: 0px;
307
- }
308
- .tlui-buttons__grid > .tlui-button:nth-of-type(-n + 4) {
309
- margin-top: 0px;
310
- }
311
- .tlui-buttons__grid > .tlui-button:nth-last-of-type(-n + 4) {
312
- margin-bottom: 0px;
313
- }
314
301
 
315
302
  /* Zoom button */
316
303
 
@@ -334,9 +321,9 @@
334
321
  pointer-events: none;
335
322
  user-select: none;
336
323
  contain: strict;
337
- z-index: var(--layer-panels);
324
+ z-index: var(--tl-layer-panels);
338
325
  transform: translate3d(0, 0, 0);
339
- --sab: env(safe-area-inset-bottom);
326
+ --tl-sab: env(safe-area-inset-bottom);
340
327
  font-weight: 500;
341
328
  line-height: 1.6;
342
329
  -webkit-font-smoothing: antialiased;
@@ -389,11 +376,11 @@
389
376
  justify-content: flex-start;
390
377
  align-items: flex-start;
391
378
  width: min-content;
392
- gap: var(--space-3);
393
- margin: var(--space-2) var(--space-3);
379
+ gap: var(--tl-space-3);
380
+ margin: var(--tl-space-2) var(--tl-space-3);
394
381
  white-space: nowrap;
395
382
  pointer-events: none;
396
- z-index: var(--layer-panels);
383
+ z-index: var(--tl-layer-panels);
397
384
  }
398
385
 
399
386
  /* ---------------------- Icon ---------------------- */
@@ -421,7 +408,7 @@
421
408
 
422
409
  .tlui-slider__container {
423
410
  width: 100%;
424
- padding: 0px var(--space-4);
411
+ padding: 0px var(--tl-space-4);
425
412
  }
426
413
 
427
414
  .tlui-slider {
@@ -447,7 +434,7 @@
447
434
  content: '';
448
435
  height: 3px;
449
436
  width: 100%;
450
- background-color: var(--color-muted-1);
437
+ background-color: var(--tl-color-muted-1);
451
438
  border-radius: 14px;
452
439
  }
453
440
 
@@ -456,7 +443,7 @@
456
443
  top: calc(50% - 2px);
457
444
  left: 0px;
458
445
  height: 3px;
459
- background-color: var(--color-selected);
446
+ background-color: var(--tl-color-selected);
460
447
  border-radius: 14px;
461
448
  }
462
449
 
@@ -468,16 +455,16 @@
468
455
  height: 18px;
469
456
  position: relative;
470
457
  top: -1px;
471
- background-color: var(--color-panel);
458
+ background-color: var(--tl-color-panel);
472
459
  border-radius: 999px;
473
- box-shadow: inset 0px 0px 0px 2px var(--color-text-1);
460
+ box-shadow: inset 0px 0px 0px 2px var(--tl-color-text-1);
474
461
  }
475
462
 
476
463
  .tlui-slider__thumb:active {
477
464
  cursor: grabbing;
478
465
  box-shadow:
479
- inset 0px 0px 0px 2px var(--color-text-1),
480
- var(--shadow-1);
466
+ inset 0px 0px 0px 2px var(--tl-color-text-1),
467
+ var(--tl-shadow-1);
481
468
  }
482
469
 
483
470
  /* ---------------------- Input --------------------- */
@@ -486,7 +473,7 @@
486
473
  background: none;
487
474
  margin: 0px;
488
475
  position: relative;
489
- z-index: var(--layer-above);
476
+ z-index: var(--tl-layer-above);
490
477
  height: 40px;
491
478
  max-height: 40px;
492
479
  display: flex;
@@ -495,8 +482,8 @@
495
482
  font-family: inherit;
496
483
  font-size: 12px;
497
484
  font-weight: inherit;
498
- color: var(--color-text-1);
499
- padding: var(--space-4);
485
+ color: var(--tl-color-text-1);
486
+ padding: var(--tl-space-4);
500
487
  padding-left: 0px;
501
488
  border: none;
502
489
  outline: none;
@@ -512,8 +499,8 @@
512
499
  height: 44px;
513
500
  display: flex;
514
501
  align-items: center;
515
- gap: var(--space-4);
516
- color: var(--color-text);
502
+ gap: var(--tl-space-4);
503
+ color: var(--tl-color-text);
517
504
  }
518
505
 
519
506
  .tlui-input__wrapper > .tlui-icon {
@@ -545,7 +532,7 @@
545
532
  grid-auto-columns: minmax(1em, auto);
546
533
  align-self: bottom;
547
534
  color: currentColor;
548
- margin-left: var(--space-4);
535
+ margin-left: var(--tl-space-4);
549
536
  }
550
537
 
551
538
  .tlui-kbd > span {
@@ -562,13 +549,13 @@
562
549
  }
563
550
 
564
551
  .tlui-kbd:not(:last-child) {
565
- margin-right: var(--space-2);
552
+ margin-right: var(--tl-space-2);
566
553
  }
567
554
 
568
555
  /* Focus Mode Button */
569
556
 
570
557
  .tlui-focus-button {
571
- z-index: var(--layer-panels);
558
+ z-index: var(--tl-layer-panels);
572
559
  pointer-events: all;
573
560
  }
574
561
 
@@ -579,16 +566,16 @@
579
566
  }
580
567
 
581
568
  .tlui-menu {
582
- z-index: var(--layer-menus);
569
+ z-index: var(--tl-layer-menus);
583
570
  height: fit-content;
584
571
  width: fit-content;
585
- border-radius: var(--radius-3);
572
+ border-radius: var(--tl-radius-3);
586
573
  pointer-events: all;
587
574
  touch-action: auto;
588
575
  overflow-y: auto;
589
576
  overscroll-behavior: none;
590
- background-color: var(--color-panel);
591
- box-shadow: var(--shadow-3);
577
+ background-color: var(--tl-color-panel);
578
+ box-shadow: var(--tl-shadow-3);
592
579
  }
593
580
 
594
581
  .tlui-menu::-webkit-scrollbar {
@@ -606,7 +593,7 @@
606
593
  }
607
594
 
608
595
  .tlui-menu__group {
609
- border-bottom: 1px solid var(--color-divider);
596
+ border-bottom: 1px solid var(--tl-color-divider);
610
597
  }
611
598
  .tlui-menu__group:nth-last-of-type(1) {
612
599
  border-bottom: none;
@@ -616,23 +603,23 @@
616
603
 
617
604
  .tlui-menu__submenu__trigger[data-state='open']::after {
618
605
  opacity: 1;
619
- 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%);
620
607
  }
621
608
 
622
609
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
623
610
  opacity: 1;
624
- 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%);
625
612
  }
626
613
 
627
614
  @media (hover: hover) {
628
615
  .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
629
616
  opacity: 1;
630
- 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%);
631
618
  }
632
619
 
633
620
  .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
634
621
  opacity: 1;
635
- 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%);
636
623
  }
637
624
  }
638
625
 
@@ -657,7 +644,7 @@
657
644
  .tlui-menu-click-capture {
658
645
  position: fixed;
659
646
  inset: 0;
660
- z-index: var(--layer-menu-click-capture);
647
+ z-index: var(--tl-layer-menu-click-capture);
661
648
  }
662
649
 
663
650
  /* --------------------- Popover -------------------- */
@@ -673,10 +660,10 @@
673
660
  max-height: calc(var(--radix-popover-content-available-height) - 8px);
674
661
  margin: 0px;
675
662
  border: none;
676
- border-radius: var(--radius-3);
677
- background-color: var(--color-panel);
678
- box-shadow: var(--shadow-3);
679
- z-index: var(--layer-menus);
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);
680
667
  overflow: hidden;
681
668
  overflow-y: auto;
682
669
  touch-action: auto;
@@ -689,22 +676,22 @@
689
676
 
690
677
  .tlui-menu-zone {
691
678
  position: relative;
692
- z-index: var(--layer-panels);
679
+ z-index: var(--tl-layer-panels);
693
680
  width: fit-content;
694
- border-right: 2px solid var(--color-background);
695
- border-bottom: 2px solid var(--color-background);
696
- border-bottom-right-radius: var(--radius-4);
697
- background-color: var(--color-low);
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);
698
685
  }
699
686
 
700
687
  .tlui-menu-zone *[data-state='open']::after {
701
- 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%);
702
689
  opacity: 1;
703
690
  }
704
691
 
705
692
  @media (hover: hover) {
706
693
  .tlui-menu-zone *[data-state='open']:not(:hover)::after {
707
- background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
694
+ background: linear-gradient(180deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
708
695
  opacity: 1;
709
696
  }
710
697
  }
@@ -730,8 +717,8 @@
730
717
  align-items: center;
731
718
  width: 100%;
732
719
  height: 40px;
733
- padding-left: var(--space-4);
734
- border-bottom: 1px solid var(--color-divider);
720
+ padding-left: var(--tl-space-4);
721
+ border-bottom: 1px solid var(--tl-color-divider);
735
722
  }
736
723
 
737
724
  .tlui-page-menu__header > .tlui-button:nth-of-type(1) {
@@ -739,7 +726,7 @@
739
726
  }
740
727
 
741
728
  .tlui-page-menu__header__title {
742
- color: var(--color-text);
729
+ color: var(--tl-color-text);
743
730
  font-size: 12px;
744
731
  flex-grow: 2;
745
732
  }
@@ -824,7 +811,7 @@
824
811
  display: inline-flex;
825
812
  align-items: center;
826
813
  justify-content: center;
827
- color: var(--color-text);
814
+ color: var(--tl-color-text);
828
815
  }
829
816
 
830
817
  .tlui-page_menu__item__sortable {
@@ -837,7 +824,7 @@
837
824
  flex-direction: row;
838
825
  align-items: center;
839
826
  overflow: hidden;
840
- z-index: var(--layer-above);
827
+ z-index: var(--tl-layer-above);
841
828
  }
842
829
 
843
830
  .tlui-page_menu__item__sortable__title {
@@ -849,7 +836,7 @@
849
836
  }
850
837
 
851
838
  .tlui-page_menu__item__sortable:focus-visible {
852
- z-index: var(--layer-focused-input);
839
+ z-index: var(--tl-layer-focused-input);
853
840
  }
854
841
 
855
842
  .tlui-page_menu__item__sortable__handle {
@@ -858,7 +845,7 @@
858
845
  min-width: 0px;
859
846
  height: 40px;
860
847
  cursor: grab;
861
- color: var(--color-text-3);
848
+ color: var(--tl-color-text-3);
862
849
  flex-shrink: 0;
863
850
  margin-right: -9px;
864
851
  }
@@ -900,13 +887,13 @@
900
887
  }
901
888
 
902
889
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']::after {
903
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
890
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
904
891
  opacity: 1;
905
892
  }
906
893
 
907
894
  @media (hover: hover) {
908
895
  .tlui-page_menu__item__submenu > .tlui-button[data-state='open']:not(:hover)::after {
909
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
896
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
910
897
  opacity: 1;
911
898
  }
912
899
  }
@@ -942,7 +929,7 @@
942
929
  top: 48px;
943
930
  left: -9999px;
944
931
  padding: 8px 16px;
945
- z-index: var(--layer-toasts);
932
+ z-index: var(--tl-layer-toasts);
946
933
  }
947
934
 
948
935
  .tl-skip-to-main-content:focus {
@@ -954,11 +941,11 @@
954
941
  .tlui-offline-indicator {
955
942
  display: flex;
956
943
  flex-direction: row;
957
- gap: var(--space-3);
958
- color: var(--color-text);
959
- background-color: var(--color-low);
960
- border: 3px solid var(--color-background);
961
- padding: 0px var(--space-5);
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);
962
949
  height: 42px;
963
950
  align-items: center;
964
951
  justify-content: center;
@@ -973,10 +960,10 @@
973
960
  /* ------------------- Style panel ------------------ */
974
961
 
975
962
  .tlui-style-panel__wrapper {
976
- box-shadow: var(--shadow-2);
977
- border-radius: var(--radius-3);
963
+ box-shadow: var(--tl-shadow-2);
964
+ border-radius: var(--tl-radius-3);
978
965
  pointer-events: all;
979
- background-color: var(--color-panel);
966
+ background-color: var(--tl-color-panel);
980
967
  height: fit-content;
981
968
  max-height: 100%;
982
969
  margin: 8px;
@@ -985,7 +972,7 @@
985
972
  overscroll-behavior: none;
986
973
  overflow-y: auto;
987
974
  overflow-x: hidden;
988
- color: var(--color-text);
975
+ color: var(--tl-color-text);
989
976
  }
990
977
  /* if the style panel is the only child (ie no share menu), increase the margin */
991
978
  .tlui-style-panel__wrapper:only-child {
@@ -994,12 +981,18 @@
994
981
 
995
982
  .tlui-style-panel {
996
983
  position: relative;
997
- z-index: var(--layer-panels);
984
+ z-index: var(--tl-layer-panels);
998
985
  pointer-events: all;
999
986
  width: 148px;
1000
987
  max-width: 148px;
1001
988
  }
1002
989
 
990
+ .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
991
+ border-radius: 10px;
992
+ outline: 2px solid var(--tl-color-text);
993
+ outline-offset: -5px;
994
+ }
995
+
1003
996
  .tlui-style-panel::-webkit-scrollbar {
1004
997
  display: none;
1005
998
  }
@@ -1015,7 +1008,7 @@
1015
1008
  }
1016
1009
 
1017
1010
  .tlui-style-panel__section:nth-of-type(n + 2):not(:last-child) {
1018
- border-bottom: 1px solid var(--color-divider);
1011
+ border-bottom: 1px solid var(--tl-color-divider);
1019
1012
  }
1020
1013
 
1021
1014
  .tlui-style-panel__section:empty {
@@ -1024,23 +1017,19 @@
1024
1017
 
1025
1018
  .tlui-style-panel__section__common:not(:only-child) {
1026
1019
  margin-bottom: 7px;
1027
- border-bottom: 1px solid var(--color-divider);
1020
+ border-bottom: 1px solid var(--tl-color-divider);
1028
1021
  }
1029
1022
 
1030
- .tlui-style-panel__row {
1031
- display: flex;
1032
- }
1033
- /* Only really used for the alignment picker */
1034
- .tlui-style-panel__row__extra-button {
1035
- margin-left: -2px;
1023
+ .tlui-style-panel__dropdown-picker:only-child {
1024
+ width: 100%;
1036
1025
  }
1037
1026
 
1038
1027
  .tlui-style-panel__double-select-picker {
1039
1028
  display: flex;
1040
1029
  grid-template-columns: 1fr auto;
1041
1030
  align-items: center;
1042
- padding-left: var(--space-4);
1043
- color: var(--color-text-1);
1031
+ padding-left: var(--tl-space-4);
1032
+ color: var(--tl-color-text-1);
1044
1033
  font-size: 12px;
1045
1034
  }
1046
1035
 
@@ -1054,25 +1043,45 @@
1054
1043
 
1055
1044
  .tlui-style-panel .tlui-button[data-state='open']::after {
1056
1045
  opacity: 1;
1057
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1046
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1058
1047
  }
1059
1048
 
1060
1049
  @media (hover: hover) {
1061
1050
  .tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
1062
1051
  opacity: 1;
1063
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1052
+ background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1064
1053
  }
1065
1054
  }
1066
1055
 
1056
+ /* Accessibility subheadings */
1057
+
1058
+ .tlui-style-panel__section .tlui-style-panel__subheading,
1059
+ .tlui-style-panel__section__common .tlui-style-panel__subheading,
1060
+ .tlui-style-panel__subheading + .tlui-slider__container {
1061
+ margin: 0;
1062
+ padding: var(--tl-space-2) var(--tl-space-3) 0px var(--tl-space-4);
1063
+ font-size: 12px;
1064
+ font-weight: inherit;
1065
+ line-height: inherit;
1066
+ }
1067
+
1068
+ .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1069
+ padding-top: var(--tl-space-3);
1070
+ }
1071
+
1072
+ .tlui-style-panel__subheading + .tlui-slider__container {
1073
+ padding-top: 0px;
1074
+ }
1075
+
1067
1076
  /* --------------------- Bottom --------------------- */
1068
1077
 
1069
1078
  .tlui-layout__bottom {
1070
1079
  grid-row: 2;
1080
+ width: 100%;
1071
1081
  }
1072
1082
 
1073
1083
  .tlui-layout__bottom__main {
1074
1084
  width: 100%;
1075
- position: relative;
1076
1085
  display: flex;
1077
1086
  align-items: flex-end;
1078
1087
  justify-content: center;
@@ -1084,11 +1093,10 @@
1084
1093
  display: flex;
1085
1094
  width: min-content;
1086
1095
  flex-direction: column;
1087
- z-index: var(--layer-panels);
1096
+ z-index: var(--tl-layer-panels);
1088
1097
  pointer-events: all;
1089
1098
  position: absolute;
1090
1099
  left: 0px;
1091
- bottom: 0px;
1092
1100
  }
1093
1101
 
1094
1102
  .tlui-navigation-panel::before {
@@ -1098,10 +1106,10 @@
1098
1106
  z-index: -1;
1099
1107
  inset: -2px -2px 0px 0px;
1100
1108
  border-radius: 0;
1101
- border-top: 2px solid var(--color-background);
1102
- border-right: 2px solid var(--color-background);
1103
- border-top-right-radius: var(--radius-4);
1104
- background-color: var(--color-low);
1109
+ border-top: 2px solid var(--tl-color-background);
1110
+ border-right: 2px solid var(--tl-color-background);
1111
+ border-top-right-radius: var(--tl-radius-4);
1112
+ background-color: var(--tl-color-low);
1105
1113
  }
1106
1114
 
1107
1115
  .tlui-navigation-panel[data-a11y='true']::before {
@@ -1115,7 +1123,7 @@
1115
1123
  height: 96px;
1116
1124
  min-height: 96px;
1117
1125
  overflow: hidden;
1118
- padding: var(--space-3);
1126
+ padding: var(--tl-space-3);
1119
1127
  padding-top: 0px;
1120
1128
  }
1121
1129
 
@@ -1128,114 +1136,216 @@
1128
1136
  /* --------------------- Toolbar -------------------- */
1129
1137
 
1130
1138
  /* Wide container */
1131
- .tlui-toolbar {
1139
+ .tlui-main-toolbar {
1132
1140
  grid-column: 1 / span 3;
1133
1141
  grid-row: 1;
1134
1142
  display: flex;
1135
1143
  align-items: center;
1136
1144
  justify-content: center;
1137
1145
  flex-grow: 2;
1138
- padding-bottom: calc(var(--space-3) + var(--sab));
1146
+ }
1147
+
1148
+ .tlui-main-toolbar--horizontal {
1149
+ padding-bottom: calc(var(--tl-space-3) + var(--tl-sab));
1150
+ max-width: 100%;
1151
+ }
1152
+
1153
+ .tlui-main-toolbar--vertical {
1154
+ position: absolute;
1155
+ left: 0;
1156
+ top: 90px; /* height of page menu + 'back to content' button */
1157
+ bottom: 140px; /* height of expanded mini-map */
1158
+ padding-left: calc(var(--tl-space-3) + var(--tl-sab));
1159
+ }
1160
+
1161
+ [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
1162
+ bottom: 90px; /* collapsed mini-map, but same as top to keep things looking even */
1139
1163
  }
1140
1164
 
1141
1165
  /* Centered Content */
1142
- .tlui-toolbar__inner {
1166
+ .tlui-main-toolbar__inner {
1143
1167
  position: relative;
1144
1168
  width: fit-content;
1145
1169
  display: flex;
1146
- gap: var(--space-3);
1147
- align-items: flex-end;
1170
+ gap: var(--tl-space-3);
1171
+ align-items: flex-start;
1148
1172
  }
1149
1173
 
1150
- .tlui-toolbar__left {
1174
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__inner {
1175
+ flex-direction: column;
1176
+ }
1177
+
1178
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__left {
1151
1179
  width: fit-content;
1152
1180
  }
1181
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__left {
1182
+ display: flex;
1183
+ height: fit-content;
1184
+ }
1153
1185
 
1154
1186
  /* Row of controls + lock button */
1155
- .tlui-toolbar__extras {
1187
+ .tlui-main-toolbar__extras {
1156
1188
  position: relative;
1157
- z-index: var(--layer-above);
1158
- width: 100%;
1189
+ z-index: var(--tl-layer-above);
1159
1190
  pointer-events: none;
1160
- top: 6px;
1161
- height: 48px;
1191
+ align-self: stretch;
1162
1192
  }
1163
1193
 
1164
- .tlui-toolbar__extras:empty {
1194
+ .tlui-main-toolbar__extras:empty {
1165
1195
  display: none;
1166
1196
  }
1167
1197
 
1168
- .tlui-toolbar__extras__controls {
1169
- display: flex;
1198
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras {
1199
+ height: 48px;
1200
+ top: 6px;
1201
+ }
1202
+
1203
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras {
1204
+ width: 48px;
1205
+ order: 1;
1206
+ }
1207
+
1208
+ .tlui-main-toolbar__extras__controls {
1170
1209
  position: relative;
1171
- flex-direction: row;
1172
- z-index: var(--layer-above);
1173
- background-color: var(--color-low);
1174
- border-top-left-radius: var(--radius-4);
1175
- border-top-right-radius: var(--radius-4);
1176
- border: 2px solid var(--color-background);
1210
+ z-index: var(--tl-layer-above);
1211
+ background-color: var(--tl-color-low);
1212
+ border: 2px solid var(--tl-color-background);
1213
+ pointer-events: all;
1214
+ }
1215
+
1216
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
1217
+ border-top-left-radius: var(--tl-radius-4);
1218
+ border-top-right-radius: var(--tl-radius-4);
1177
1219
  margin-left: 8px;
1178
1220
  margin-right: 0px;
1179
- pointer-events: all;
1180
1221
  width: fit-content;
1181
1222
  }
1182
1223
 
1183
- .tlui-toolbar__tools {
1184
- display: flex;
1185
- flex-direction: row;
1186
- align-items: center;
1187
- border-radius: var(--radius-4);
1188
- z-index: var(--layer-panels);
1224
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
1225
+ border-top-right-radius: var(--tl-radius-4);
1226
+ border-bottom-right-radius: var(--tl-radius-4);
1227
+ margin-top: 8px;
1228
+ margin-left: -2px;
1229
+ margin-bottom: 0px;
1230
+ width: fit-content;
1231
+ }
1232
+
1233
+ .tlui-main-toolbar__tools {
1234
+ border-radius: var(--tl-radius-4);
1235
+ z-index: var(--tl-layer-panels);
1189
1236
  pointer-events: all;
1190
1237
  position: relative;
1191
- background: var(--color-panel);
1192
- box-shadow: var(--shadow-2);
1238
+ background: var(--tl-color-panel);
1239
+ box-shadow: var(--tl-shadow-2);
1193
1240
  }
1194
- .tlui-toolbar__tools__list {
1195
- display: flex;
1196
- flex-direction: row;
1197
- align-items: center;
1241
+
1242
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
1243
+ align-self: flex-end;
1244
+ }
1245
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__mobile-style-panel {
1246
+ align-self: flex-start;
1198
1247
  }
1199
1248
 
1200
- .tlui-toolbar__overflow {
1249
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
1201
1250
  width: 40px;
1251
+ margin-left: 2px;
1252
+ }
1253
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__overflow {
1254
+ height: 40px;
1255
+ margin-top: 2px;
1202
1256
  }
1203
1257
 
1204
- .tlui-layout__mobile .tlui-toolbar__overflow {
1258
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
1205
1259
  width: 32px;
1206
1260
  padding: 0px;
1207
1261
  }
1208
1262
 
1209
- .tlui-toolbar *[data-state='open']::after {
1210
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1263
+ .tlui-main-toolbar--horizontal *[data-state='open']::after {
1264
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1265
+ opacity: 1;
1266
+ }
1267
+ .tlui-main-toolbar--vertical *[data-state='open']::after {
1268
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1211
1269
  opacity: 1;
1212
1270
  }
1213
1271
 
1272
+ .tlui-main-toolbar__tools [data-toolbar-visible='false'],
1273
+ .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
1274
+ display: none;
1275
+ }
1276
+
1277
+ .tlui-main-toolbar__group:empty {
1278
+ display: none;
1279
+ }
1280
+ .tlui-row.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
1281
+ border-right: 1px solid var(--color-divider);
1282
+ margin-right: 2px;
1283
+ }
1284
+ .tlui-column.tlui-main-toolbar__group:not(
1285
+ :nth-last-child(-n + 1 of [data-toolbar-visible='true'])
1286
+ ) {
1287
+ border-bottom: 1px solid var(--color-divider);
1288
+ margin-bottom: 2px;
1289
+ }
1290
+ .tlui-grid.tlui-main-toolbar__group {
1291
+ grid-column: 1 / span 4;
1292
+ }
1293
+ .tlui-grid.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
1294
+ border-bottom: 1px solid var(--color-divider);
1295
+ margin-bottom: 2px;
1296
+ }
1297
+
1214
1298
  @media (hover: hover) {
1215
- .tlui-toolbar *[data-state='open']:not(:hover)::after {
1216
- background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1299
+ .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
1300
+ background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1301
+ opacity: 1;
1302
+ }
1303
+ .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
1304
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
1217
1305
  opacity: 1;
1218
1306
  }
1219
1307
  }
1220
1308
 
1221
- .tlui-layout__mobile .tlui-toolbar {
1222
- transition: transform 0.15s ease-out 0.05s;
1309
+ /* ------------------- Tooltip -------------------- */
1310
+
1311
+ .tlui-tooltip {
1312
+ font-size: 12px;
1313
+ padding: 2px 8px;
1314
+ border-radius: 4px;
1315
+ background-color: var(--tl-color-tooltip);
1316
+ box-shadow: none;
1317
+ color: var(--tl-color-text-shadow);
1318
+ max-width: 400px;
1319
+ width: fit-content;
1320
+ text-align: center;
1321
+ will-change: transform, opacity;
1322
+ z-index: 2;
1323
+ }
1324
+
1325
+ .tlui-tooltip__arrow {
1326
+ fill: var(--tl-color-tooltip);
1327
+ will-change: opacity;
1328
+ }
1329
+
1330
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
1331
+ z-index: var(--tl-layer-toasts) !important;
1332
+ pointer-events: none;
1223
1333
  }
1224
1334
 
1225
1335
  /* ------------------- Debug panel ------------------ */
1226
1336
 
1227
1337
  .tlui-debug-panel {
1228
- background-color: var(--color-low);
1338
+ background-color: var(--tl-color-low);
1229
1339
  width: 100%;
1230
1340
  display: grid;
1231
1341
  align-items: center;
1232
1342
  grid-template-columns: 1fr auto auto auto;
1233
1343
  justify-content: space-between;
1234
- padding-left: var(--space-4);
1235
- border-top: 1px solid var(--color-background);
1344
+ padding-left: var(--tl-space-4);
1345
+ border-top: 1px solid var(--tl-color-background);
1236
1346
  font-size: 12px;
1237
- color: var(--color-text-1);
1238
- z-index: var(--layer-panels);
1347
+ color: var(--tl-color-text-1);
1348
+ z-index: var(--tl-layer-panels);
1239
1349
  pointer-events: all;
1240
1350
  }
1241
1351
 
@@ -1251,7 +1361,7 @@
1251
1361
 
1252
1362
  .tlui-debug-panel__fps__slow {
1253
1363
  font-weight: bold;
1254
- color: var(--color-danger);
1364
+ color: var(--tl-color-danger);
1255
1365
  }
1256
1366
 
1257
1367
  .tlui-a11y-audit {
@@ -1261,7 +1371,7 @@
1261
1371
  .tlui-a11y-audit th,
1262
1372
  .tlui-a11y-audit td {
1263
1373
  padding: 8px;
1264
- border: 1px solid var(--color-low-border);
1374
+ border: 1px solid var(--tl-color-low-border);
1265
1375
  }
1266
1376
 
1267
1377
  /* --------------------- Toasts --------------------- */
@@ -1274,10 +1384,10 @@
1274
1384
  align-items: flex-end;
1275
1385
  justify-content: flex-end;
1276
1386
  flex-direction: column;
1277
- gap: var(--space-3);
1387
+ gap: var(--tl-space-3);
1278
1388
  pointer-events: none;
1279
- padding: 0px var(--space-3) 64px 0px;
1280
- z-index: var(--layer-toasts);
1389
+ padding: 0px var(--tl-space-3) 64px 0px;
1390
+ z-index: var(--tl-layer-toasts);
1281
1391
  }
1282
1392
 
1283
1393
  .tlui-toast__viewport > * {
@@ -1286,34 +1396,34 @@
1286
1396
 
1287
1397
  .tlui-toast__icon {
1288
1398
  padding-top: 11px;
1289
- padding-left: var(--space-4);
1290
- color: var(--color-text-1);
1399
+ padding-left: var(--tl-space-4);
1400
+ color: var(--tl-color-text-1);
1291
1401
  }
1292
1402
 
1293
1403
  .tlui-toast__container {
1294
1404
  min-width: 200px;
1295
1405
  display: flex;
1296
1406
  flex-direction: row;
1297
- background-color: var(--color-panel);
1298
- box-shadow: var(--shadow-2);
1299
- border-radius: var(--radius-3);
1407
+ background-color: var(--tl-color-panel);
1408
+ box-shadow: var(--tl-shadow-2);
1409
+ border-radius: var(--tl-radius-3);
1300
1410
  font-size: 12px;
1301
1411
  }
1302
1412
 
1303
1413
  .tlui-toast__container[data-severity='success'] .tlui-icon {
1304
- color: var(--color-success);
1414
+ color: var(--tl-color-success);
1305
1415
  }
1306
1416
 
1307
1417
  .tlui-toast__container[data-severity='info'] .tlui-icon {
1308
- color: var(--color-info);
1418
+ color: var(--tl-color-info);
1309
1419
  }
1310
1420
 
1311
1421
  .tlui-toast__container[data-severity='warning'] .tlui-icon {
1312
- color: var(--color-warning);
1422
+ color: var(--tl-color-warning);
1313
1423
  }
1314
1424
 
1315
1425
  .tlui-toast__container[data-severity='error'] .tlui-icon {
1316
- color: var(--color-danger);
1426
+ color: var(--tl-color-danger);
1317
1427
  }
1318
1428
 
1319
1429
  .tlui-toast__main {
@@ -1322,27 +1432,27 @@
1322
1432
  }
1323
1433
 
1324
1434
  .tlui-toast__content {
1325
- padding: var(--space-4);
1435
+ padding: var(--tl-space-4);
1326
1436
  display: flex;
1327
1437
  line-height: 1.4;
1328
1438
  flex-direction: column;
1329
- gap: var(--space-3);
1439
+ gap: var(--tl-space-3);
1330
1440
  }
1331
1441
 
1332
1442
  .tlui-toast__main[data-actions='true'] .tlui-toast__content {
1333
- padding-bottom: var(--space-2);
1443
+ padding-bottom: var(--tl-space-2);
1334
1444
  }
1335
1445
 
1336
1446
  .tlui-toast__title {
1337
1447
  font-weight: bold;
1338
- color: var(--color-text-1);
1448
+ color: var(--tl-color-text-1);
1339
1449
  /* this makes the default toast look better */
1340
1450
  line-height: 16px;
1341
1451
  }
1342
1452
 
1343
1453
  .tlui-toast__description {
1344
- color: var(--color-text-1);
1345
- padding: var(--space-3);
1454
+ color: var(--tl-color-text-1);
1455
+ padding: var(--tl-space-3);
1346
1456
  margin: 0px;
1347
1457
  padding: 0px;
1348
1458
  }
@@ -1394,14 +1504,14 @@
1394
1504
  left: 0px;
1395
1505
  width: 100%;
1396
1506
  height: 100%;
1397
- z-index: var(--layer-canvas-overlays);
1398
- background-color: var(--color-overlay);
1507
+ z-index: var(--tl-layer-canvas-overlays);
1508
+ background-color: var(--tl-color-overlay);
1399
1509
  pointer-events: all;
1400
1510
  animation: tl-fade-in 0.12s ease-out;
1401
1511
  display: grid;
1402
1512
  place-items: center;
1403
1513
  overflow-y: auto;
1404
- padding: 0px var(--space-3);
1514
+ padding: 0px var(--tl-space-3);
1405
1515
  }
1406
1516
 
1407
1517
  .tlui-dialog__content {
@@ -1409,9 +1519,9 @@
1409
1519
  flex-direction: column;
1410
1520
  position: relative;
1411
1521
  cursor: default;
1412
- background-color: var(--color-panel);
1413
- box-shadow: var(--shadow-3);
1414
- border-radius: var(--radius-3);
1522
+ background-color: var(--tl-color-panel);
1523
+ box-shadow: var(--tl-shadow-3);
1524
+ border-radius: var(--tl-radius-3);
1415
1525
  font-size: 12px;
1416
1526
  overflow: hidden;
1417
1527
  min-width: 300px;
@@ -1424,9 +1534,9 @@
1424
1534
  display: flex;
1425
1535
  align-items: center;
1426
1536
  flex: 0;
1427
- z-index: var(--layer-header-footer);
1428
- padding-left: var(--space-4);
1429
- color: var(--color-text);
1537
+ z-index: var(--tl-layer-header-footer);
1538
+ padding-left: var(--tl-space-4);
1539
+ color: var(--tl-color-text);
1430
1540
  height: 40px;
1431
1541
  }
1432
1542
 
@@ -1435,7 +1545,7 @@
1435
1545
  font-weight: inherit;
1436
1546
  font-size: 12px;
1437
1547
  margin: 0px;
1438
- color: var(--color-text-1);
1548
+ color: var(--tl-color-text-1);
1439
1549
  }
1440
1550
 
1441
1551
  .tlui-dialog__header__close {
@@ -1443,16 +1553,16 @@
1443
1553
  }
1444
1554
 
1445
1555
  .tlui-dialog__body {
1446
- padding: var(--space-4) var(--space-4);
1556
+ padding: var(--tl-space-4) var(--tl-space-4);
1447
1557
  flex: 0 1;
1448
1558
  overflow-y: auto;
1449
1559
  overflow-x: hidden;
1450
- color: var(--color-text-1);
1560
+ color: var(--tl-color-text-1);
1451
1561
  user-select: all;
1452
1562
  -webkit-user-select: text;
1453
1563
  }
1454
1564
  .tlui-dialog__body a {
1455
- color: var(--color-selected);
1565
+ color: var(--tl-color-selected);
1456
1566
  }
1457
1567
 
1458
1568
  .tlui-dialog__body ul,
@@ -1460,13 +1570,13 @@
1460
1570
  padding-left: 16px;
1461
1571
  display: flex;
1462
1572
  flex-direction: column;
1463
- gap: var(--space-2);
1573
+ gap: var(--tl-space-2);
1464
1574
  }
1465
1575
 
1466
1576
  .tlui-dialog__footer {
1467
1577
  position: relative;
1468
1578
  min-height: 12px;
1469
- z-index: var(--layer-header-footer);
1579
+ z-index: var(--tl-layer-header-footer);
1470
1580
  }
1471
1581
 
1472
1582
  .tlui-dialog__footer__actions {
@@ -1486,15 +1596,15 @@
1486
1596
  .tlui-edit-link-dialog {
1487
1597
  display: flex;
1488
1598
  flex-direction: column;
1489
- gap: var(--space-4);
1490
- color: var(--color-text);
1599
+ gap: var(--tl-space-4);
1600
+ color: var(--tl-color-text);
1491
1601
  }
1492
1602
 
1493
1603
  .tlui-edit-link-dialog__input {
1494
- background-color: var(--color-muted-2);
1604
+ background-color: var(--tl-color-muted-2);
1495
1605
  flex-grow: 2;
1496
- border-radius: var(--radius-2);
1497
- padding: 0px var(--space-4);
1606
+ border-radius: var(--tl-radius-2);
1607
+ padding: 0px var(--tl-space-4);
1498
1608
  }
1499
1609
 
1500
1610
  /* Embed Dialog */
@@ -1502,15 +1612,15 @@
1502
1612
  .tlui-embed__spacer {
1503
1613
  flex-grow: 2;
1504
1614
  min-height: 0px;
1505
- margin-left: calc(-1 * var(--space-4));
1506
- margin-top: calc(-1 * var(--space-4));
1615
+ margin-left: calc(-1 * var(--tl-space-4));
1616
+ margin-top: calc(-1 * var(--tl-space-4));
1507
1617
  pointer-events: none;
1508
1618
  }
1509
1619
 
1510
1620
  .tlui-embed-dialog__list {
1511
1621
  display: flex;
1512
1622
  flex-direction: column;
1513
- padding: 0px var(--space-3) var(--space-4) var(--space-3);
1623
+ padding: 0px var(--tl-space-3) var(--tl-space-4) var(--tl-space-3);
1514
1624
  }
1515
1625
 
1516
1626
  .tlui-embed-dialog__item__image {
@@ -1522,49 +1632,49 @@
1522
1632
  background-size: contain;
1523
1633
  background-repeat: no-repeat;
1524
1634
  background-position: center center;
1525
- background-color: var(--color-selected-contrast);
1526
- border-radius: var(--radius-1);
1635
+ background-color: var(--tl-color-selected-contrast);
1636
+ border-radius: var(--tl-radius-1);
1527
1637
  }
1528
1638
 
1529
1639
  .tlui-embed-dialog__enter {
1530
1640
  display: flex;
1531
1641
  flex-direction: column;
1532
- gap: var(--space-4);
1533
- color: var(--color-text-1);
1642
+ gap: var(--tl-space-4);
1643
+ color: var(--tl-color-text-1);
1534
1644
  }
1535
1645
 
1536
1646
  .tlui-embed-dialog__input {
1537
- background-color: var(--color-muted-2);
1647
+ background-color: var(--tl-color-muted-2);
1538
1648
  flex-grow: 2;
1539
- border-radius: var(--radius-2);
1540
- padding: 0px var(--space-4);
1649
+ border-radius: var(--tl-radius-2);
1650
+ padding: 0px var(--tl-space-4);
1541
1651
  }
1542
1652
 
1543
1653
  .tlui-embed-dialog__warning {
1544
- color: var(--color-danger);
1654
+ color: var(--tl-color-danger);
1545
1655
  text-shadow: none;
1546
1656
  }
1547
1657
 
1548
1658
  .tlui-embed-dialog__instruction__link {
1549
1659
  display: flex;
1550
- gap: var(--space-1);
1551
- margin-top: var(--space-4);
1660
+ gap: var(--tl-space-1);
1661
+ margin-top: var(--tl-space-4);
1552
1662
  }
1553
1663
 
1554
1664
  .tlui-embed-dialog__enter a {
1555
- color: var(--color-text-1);
1665
+ color: var(--tl-color-text-1);
1556
1666
  }
1557
1667
 
1558
1668
  /* --------------- Keyboard shortcuts --------------- */
1559
1669
 
1560
1670
  .tlui-shortcuts-dialog__header {
1561
- border-bottom: 1px solid var(--color-divider);
1671
+ border-bottom: 1px solid var(--tl-color-divider);
1562
1672
  }
1563
1673
 
1564
1674
  .tlui-shortcuts-dialog__body {
1565
1675
  position: relative;
1566
1676
  columns: 3;
1567
- column-gap: var(--space-9);
1677
+ column-gap: var(--tl-space-9);
1568
1678
  pointer-events: all;
1569
1679
  touch-action: auto;
1570
1680
 
@@ -1582,14 +1692,14 @@
1582
1692
 
1583
1693
  .tlui-shortcuts-dialog__group {
1584
1694
  break-inside: avoid-column;
1585
- padding-bottom: var(--space-6);
1695
+ padding-bottom: var(--tl-space-6);
1586
1696
  }
1587
1697
 
1588
1698
  .tlui-shortcuts-dialog__group__title {
1589
1699
  font-size: inherit;
1590
1700
  font-weight: inherit;
1591
1701
  margin: 0px;
1592
- color: var(--color-text-3);
1702
+ color: var(--tl-color-text-3);
1593
1703
  height: 32px;
1594
1704
  display: flex;
1595
1705
  align-items: center;
@@ -1598,12 +1708,12 @@
1598
1708
  .tlui-shortcuts-dialog__group__content {
1599
1709
  display: flex;
1600
1710
  flex-direction: column;
1601
- color: var(--color-text-1);
1711
+ color: var(--tl-color-text-1);
1602
1712
  }
1603
1713
 
1604
1714
  .tlui-shortcuts-dialog__key-pair {
1605
1715
  display: flex;
1606
- gap: var(--space-4);
1716
+ gap: var(--tl-space-4);
1607
1717
  align-items: center;
1608
1718
  justify-content: space-between;
1609
1719
  height: 32px;
@@ -1630,12 +1740,12 @@
1630
1740
  height: 24px;
1631
1741
  background: linear-gradient(
1632
1742
  to bottom,
1633
- var(--color-panel-transparent) 0%,
1634
- var(--color-panel) 90%,
1635
- var(--color-panel) 100%
1743
+ var(--tl-color-panel-transparent) 0%,
1744
+ var(--tl-color-panel) 90%,
1745
+ var(--tl-color-panel) 100%
1636
1746
  );
1637
- border-bottom-left-radius: var(--radius-3);
1638
- border-bottom-right-radius: var(--radius-3);
1747
+ border-bottom-left-radius: var(--tl-radius-3);
1748
+ border-bottom-right-radius: var(--tl-radius-3);
1639
1749
  pointer-events: none;
1640
1750
  }
1641
1751
 
@@ -1650,10 +1760,10 @@
1650
1760
  .tlui-help-menu {
1651
1761
  pointer-events: all;
1652
1762
  position: absolute;
1653
- bottom: var(--space-2);
1654
- right: var(--space-2);
1655
- z-index: var(--layer-panels);
1656
- border: 2px solid var(--color-background);
1763
+ bottom: var(--tl-space-2);
1764
+ right: var(--tl-space-2);
1765
+ z-index: var(--tl-layer-panels);
1766
+ border: 2px solid var(--tl-color-background);
1657
1767
  border-radius: 100%;
1658
1768
  }
1659
1769
 
@@ -1664,7 +1774,7 @@
1664
1774
  display: flex;
1665
1775
  flex-direction: row;
1666
1776
  justify-content: flex-end;
1667
- z-index: var(--layer-panels);
1777
+ z-index: var(--tl-layer-panels);
1668
1778
  align-items: center;
1669
1779
  padding-top: 2px;
1670
1780
  padding-right: 4px;
@@ -1680,7 +1790,7 @@
1680
1790
  border: none;
1681
1791
  cursor: pointer;
1682
1792
  pointer-events: all;
1683
- border-radius: var(--radius-1);
1793
+ border-radius: var(--tl-radius-1);
1684
1794
  padding-right: 1px;
1685
1795
  height: 100%;
1686
1796
  }
@@ -1693,8 +1803,8 @@
1693
1803
  .tlui-people-menu__avatar {
1694
1804
  height: 24px;
1695
1805
  width: 24px;
1696
- border: 2px solid var(--color-background);
1697
- background-color: var(--color-low);
1806
+ border: 2px solid var(--tl-color-background);
1807
+ background-color: var(--tl-color-low);
1698
1808
  border-radius: 100%;
1699
1809
  display: flex;
1700
1810
  align-items: center;
@@ -1703,7 +1813,7 @@
1703
1813
  font-size: 10px;
1704
1814
  font-weight: bold;
1705
1815
  text-align: center;
1706
- color: var(--color-selected-contrast);
1816
+ color: var(--tl-color-selected-contrast);
1707
1817
  z-index: 2;
1708
1818
  }
1709
1819
 
@@ -1717,7 +1827,7 @@
1717
1827
 
1718
1828
  @media (hover: hover) {
1719
1829
  .tlui-people-menu__avatars-button:hover .tlui-people-menu__avatar {
1720
- border-color: var(--color-low);
1830
+ border-color: var(--tl-color-low);
1721
1831
  }
1722
1832
  }
1723
1833
 
@@ -1725,12 +1835,12 @@
1725
1835
  min-width: 0px;
1726
1836
  font-size: 11px;
1727
1837
  font-weight: 600;
1728
- color: var(--color-text-1);
1838
+ color: var(--tl-color-text-1);
1729
1839
  font-family: inherit;
1730
1840
  padding: 0px 4px;
1731
1841
  }
1732
1842
  .tlui-people-menu__more::after {
1733
- border-radius: var(--radius-2);
1843
+ border-radius: var(--tl-radius-2);
1734
1844
  inset: 0px;
1735
1845
  }
1736
1846
 
@@ -1759,7 +1869,7 @@
1759
1869
  }
1760
1870
 
1761
1871
  .tlui-people-menu__section:not(:last-child) {
1762
- border-bottom: 1px solid var(--color-divider);
1872
+ border-bottom: 1px solid var(--tl-color-divider);
1763
1873
  }
1764
1874
 
1765
1875
  .tlui-people-menu__user {
@@ -1778,7 +1888,7 @@
1778
1888
  text-overflow: ellipsis;
1779
1889
  white-space: nowrap;
1780
1890
  font-size: 12px;
1781
- color: var(--color-text-1);
1891
+ color: var(--tl-color-text-1);
1782
1892
  max-width: 100%;
1783
1893
  flex-grow: 1;
1784
1894
  flex-shrink: 100;
@@ -1790,7 +1900,7 @@
1790
1900
  text-overflow: ellipsis;
1791
1901
  white-space: nowrap;
1792
1902
  font-size: 12px;
1793
- color: var(--color-text-3);
1903
+ color: var(--tl-color-text-3);
1794
1904
  flex-grow: 100;
1795
1905
  flex-shrink: 0;
1796
1906
  margin-left: 4px;
@@ -1881,7 +1991,7 @@
1881
1991
  inset: 0px;
1882
1992
  border-width: 2px;
1883
1993
  border-style: solid;
1884
- z-index: var(--layer-following-indicator);
1994
+ z-index: var(--tl-layer-following-indicator);
1885
1995
  pointer-events: none;
1886
1996
  }
1887
1997
 
@@ -1900,7 +2010,7 @@
1900
2010
  }
1901
2011
 
1902
2012
  .tlui-contextual-toolbar [data-isactive='true']::after {
1903
- background-color: var(--color-muted-2);
2013
+ background-color: var(--tl-color-muted-2);
1904
2014
  opacity: 1;
1905
2015
  }
1906
2016
 
@@ -1916,7 +2026,7 @@
1916
2026
 
1917
2027
  .tlui-contextual-toolbar[data-visible='true'] {
1918
2028
  opacity: 1;
1919
- z-index: var(--layer-menus);
2029
+ z-index: var(--tl-layer-menus);
1920
2030
  }
1921
2031
 
1922
2032
  .tlui-contextual-toolbar[data-interactive='true'],
@@ -1975,7 +2085,7 @@
1975
2085
 
1976
2086
  @keyframes tlui-slide-in {
1977
2087
  from {
1978
- transform: translateX(calc(100% + var(--space-3)));
2088
+ transform: translateX(calc(100% + var(--tl-space-3)));
1979
2089
  }
1980
2090
  to {
1981
2091
  transform: translateX(0px);
@@ -1987,6 +2097,6 @@
1987
2097
  transform: translateX(var(--radix-toast-swipe-end-x));
1988
2098
  }
1989
2099
  to {
1990
- transform: translateX(calc(100% + var(--space-3)));
2100
+ transform: translateX(calc(100% + var(--tl-space-3)));
1991
2101
  }
1992
2102
  }