tldraw 3.16.0-canary.ca347c5375a5 → 3.16.0-canary.cf24aedcd577

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 (235) hide show
  1. package/dist-cjs/index.d.ts +129 -5
  2. package/dist-cjs/index.js +14 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +3 -3
  5. package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +2 -2
  6. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +1 -1
  7. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  8. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js +3 -3
  9. package/dist-cjs/lib/shapes/draw/DrawShapeUtil.js.map +2 -2
  10. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +12 -12
  11. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +2 -2
  13. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  14. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js +2 -1
  15. package/dist-cjs/lib/shapes/geo/components/GeoShapeBody.js.map +2 -2
  16. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js +5 -1
  17. package/dist-cjs/lib/shapes/highlight/HighlightShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/shapes/line/LineShapeUtil.js +5 -1
  19. package/dist-cjs/lib/shapes/line/LineShapeUtil.js.map +2 -2
  20. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +4 -4
  21. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  22. package/dist-cjs/lib/shapes/shared/ShapeFill.js +5 -5
  23. package/dist-cjs/lib/shapes/shared/ShapeFill.js.map +2 -2
  24. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  25. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  26. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +2 -2
  27. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  29. package/dist-cjs/lib/ui/TldrawUi.js +14 -0
  30. package/dist-cjs/lib/ui/TldrawUi.js.map +3 -3
  31. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  32. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  33. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +12 -3
  34. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  35. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  36. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  37. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  38. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  39. package/dist-cjs/lib/ui/components/MobileStylePanel.js +4 -2
  40. package/dist-cjs/lib/ui/components/MobileStylePanel.js.map +2 -2
  41. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  42. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  43. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  44. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  45. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  46. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  47. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  48. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  49. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +2 -0
  50. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  51. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +171 -140
  52. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  53. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
  54. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
  55. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
  56. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
  57. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +66 -21
  58. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +3 -3
  59. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +189 -80
  60. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +3 -3
  61. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  62. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  63. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  64. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  65. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +5 -16
  66. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
  67. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  68. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  69. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  70. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  71. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +30 -7
  72. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  73. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +291 -0
  74. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  75. package/dist-cjs/lib/ui/components/primitives/layout.js +76 -0
  76. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  77. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +30 -7
  78. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js.map +2 -2
  79. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +152 -2
  80. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  81. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  82. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  83. package/dist-cjs/lib/ui/context/actions.js +15 -0
  84. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  85. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  86. package/dist-cjs/lib/ui/hooks/useTools.js +76 -9
  87. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  88. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  89. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +3 -0
  90. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  91. package/dist-cjs/lib/ui/version.js +3 -3
  92. package/dist-cjs/lib/ui/version.js.map +1 -1
  93. package/dist-esm/index.d.mts +129 -5
  94. package/dist-esm/index.mjs +25 -1
  95. package/dist-esm/index.mjs.map +2 -2
  96. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +4 -3
  97. package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +2 -2
  98. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +1 -1
  99. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  100. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs +4 -3
  101. package/dist-esm/lib/shapes/draw/DrawShapeUtil.mjs.map +2 -2
  102. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +13 -12
  103. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  104. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +3 -2
  105. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  106. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs +2 -1
  107. package/dist-esm/lib/shapes/geo/components/GeoShapeBody.mjs.map +2 -2
  108. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs +6 -1
  109. package/dist-esm/lib/shapes/highlight/HighlightShapeUtil.mjs.map +2 -2
  110. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs +6 -1
  111. package/dist-esm/lib/shapes/line/LineShapeUtil.mjs.map +2 -2
  112. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +5 -4
  113. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  114. package/dist-esm/lib/shapes/shared/ShapeFill.mjs +6 -5
  115. package/dist-esm/lib/shapes/shared/ShapeFill.mjs.map +2 -2
  116. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  117. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  118. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +3 -2
  119. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  120. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  121. package/dist-esm/lib/ui/TldrawUi.mjs +16 -2
  122. package/dist-esm/lib/ui/TldrawUi.mjs.map +3 -3
  123. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  124. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  125. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +12 -3
  126. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  127. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  128. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  129. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  130. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  131. package/dist-esm/lib/ui/components/MobileStylePanel.mjs +5 -2
  132. package/dist-esm/lib/ui/components/MobileStylePanel.mjs.map +2 -2
  133. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  134. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  135. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  136. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  137. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  138. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  139. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  140. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  141. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +3 -1
  142. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  143. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +171 -140
  144. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  145. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
  146. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
  147. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
  148. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  149. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +56 -21
  150. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  151. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +192 -81
  152. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +3 -3
  153. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  154. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  155. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  156. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  157. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +6 -6
  158. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  159. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
  160. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  161. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  162. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  163. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +30 -7
  164. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  165. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +261 -0
  166. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  167. package/dist-esm/lib/ui/components/primitives/layout.mjs +46 -0
  168. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  169. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs +30 -7
  170. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuGroup.mjs.map +2 -2
  171. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +160 -4
  172. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  173. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  174. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  175. package/dist-esm/lib/ui/context/actions.mjs +15 -0
  176. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  177. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  178. package/dist-esm/lib/ui/hooks/useTools.mjs +83 -10
  179. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  180. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +3 -0
  181. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  182. package/dist-esm/lib/ui/version.mjs +3 -3
  183. package/dist-esm/lib/ui/version.mjs.map +1 -1
  184. package/package.json +3 -3
  185. package/src/index.ts +20 -0
  186. package/src/lib/shapes/arrow/ArrowShapeUtil.tsx +4 -3
  187. package/src/lib/shapes/arrow/arrowTargetState.ts +2 -1
  188. package/src/lib/shapes/draw/DrawShapeUtil.tsx +4 -3
  189. package/src/lib/shapes/frame/FrameShapeUtil.tsx +13 -14
  190. package/src/lib/shapes/geo/GeoShapeUtil.tsx +3 -2
  191. package/src/lib/shapes/geo/components/GeoShapeBody.tsx +2 -2
  192. package/src/lib/shapes/highlight/HighlightShapeUtil.tsx +7 -1
  193. package/src/lib/shapes/line/LineShapeUtil.tsx +6 -1
  194. package/src/lib/shapes/note/NoteShapeUtil.tsx +9 -4
  195. package/src/lib/shapes/shared/ShapeFill.tsx +6 -5
  196. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  197. package/src/lib/shapes/text/TextShapeUtil.tsx +3 -2
  198. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  199. package/src/lib/ui/TldrawUi.tsx +17 -2
  200. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  201. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +15 -3
  202. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  203. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  204. package/src/lib/ui/components/MobileStylePanel.tsx +8 -5
  205. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  206. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  207. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  208. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  209. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +3 -1
  210. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +146 -107
  211. package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
  212. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
  213. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +55 -23
  214. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +212 -61
  215. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +14 -11
  216. package/src/lib/ui/components/menu-items.tsx +8 -0
  217. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +40 -37
  218. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
  219. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  220. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +51 -12
  221. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +343 -0
  222. package/src/lib/ui/components/primitives/layout.tsx +107 -0
  223. package/src/lib/ui/components/primitives/menus/TldrawUiMenuGroup.tsx +30 -7
  224. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +218 -3
  225. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  226. package/src/lib/ui/context/actions.tsx +15 -0
  227. package/src/lib/ui/context/events.tsx +2 -0
  228. package/src/lib/ui/hooks/useTools.tsx +118 -10
  229. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +3 -0
  230. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +3 -0
  231. package/src/lib/ui/version.ts +3 -3
  232. package/src/lib/ui.css +199 -84
  233. package/src/test/arrows-megabus.test.tsx +12 -6
  234. package/src/test/inner-outer-margin.test.ts +315 -0
  235. package/tldraw.css +201 -84
package/tldraw.css CHANGED
@@ -167,6 +167,7 @@
167
167
  --color-selected: hsl(214, 84%, 56%);
168
168
  --color-selected-contrast: hsl(0, 0%, 100%);
169
169
  --color-focus: hsl(219, 65%, 50%);
170
+ --color-tooltip: hsla(200, 14%, 4%, 1);
170
171
  /* Text */
171
172
  --color-text: hsl(0, 0%, 0%);
172
173
  --color-text-0: hsl(0, 0%, 11%);
@@ -222,6 +223,7 @@
222
223
  --color-selected: hsl(217, 89%, 61%);
223
224
  --color-selected-contrast: hsl(0, 0%, 100%);
224
225
  --color-focus: hsl(217, 76%, 80%);
226
+ --color-tooltip: hsla(0, 0%, 100%, 1);
225
227
  /* Text */
226
228
  --color-text: hsl(210, 17%, 98%);
227
229
  --color-text-0: hsl(0, 9%, 94%);
@@ -1875,7 +1877,7 @@ it from receiving any pointer events or affecting the cursor. */
1875
1877
  opacity: 1;
1876
1878
  }
1877
1879
 
1878
- .tlui-button[aria-expanded='true'][data-direction='left']::after {
1880
+ .tlui-button[aria-expanded='true'][data-direction='left'] {
1879
1881
  background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1880
1882
  opacity: 1;
1881
1883
  }
@@ -1939,12 +1941,6 @@ it from receiving any pointer events or affecting the cursor. */
1939
1941
  }
1940
1942
  }
1941
1943
 
1942
- /* Panel button */
1943
-
1944
- .tlui-button__panel {
1945
- position: relative;
1946
- }
1947
-
1948
1944
  /* Menu button */
1949
1945
 
1950
1946
  .tlui-button__menu {
@@ -1985,18 +1981,26 @@ it from receiving any pointer events or affecting the cursor. */
1985
1981
 
1986
1982
  /* Tool lock button */
1987
1983
 
1988
- .tlui-toolbar__lock-button {
1984
+ .tlui-main-toolbar__lock-button {
1989
1985
  position: absolute;
1990
- top: 4px;
1991
- right: 0px;
1992
1986
  pointer-events: all;
1993
1987
  height: 40px;
1994
1988
  width: 40px;
1995
- min-width: 0px;
1996
1989
  border-radius: var(--radius-2);
1997
1990
  }
1998
1991
 
1999
- .tlui-toolbar__lock-button::after {
1992
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__lock-button {
1993
+ top: 4px;
1994
+ right: 0px;
1995
+ min-width: 0px;
1996
+ }
1997
+
1998
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__lock-button {
1999
+ bottom: 0px;
2000
+ min-height: 0px;
2001
+ }
2002
+
2003
+ .tlui-main-toolbar__lock-button::after {
2000
2004
  top: 4px;
2001
2005
  left: 8px;
2002
2006
  inset: 4px;
@@ -2008,16 +2012,6 @@ it from receiving any pointer events or affecting the cursor. */
2008
2012
  position: relative;
2009
2013
  height: 48px;
2010
2014
  width: 48px;
2011
- margin-left: -2px;
2012
- margin-right: -2px;
2013
- }
2014
-
2015
- .tlui-button__tool:nth-of-type(1) {
2016
- margin-left: 0px;
2017
- }
2018
-
2019
- .tlui-button__tool:nth-last-of-type(1) {
2020
- margin-right: 0px;
2021
2015
  }
2022
2016
 
2023
2017
  .tlui-button__tool::after {
@@ -2038,57 +2032,52 @@ it from receiving any pointer events or affecting the cursor. */
2038
2032
  opacity: 1;
2039
2033
  }
2040
2034
 
2041
- .tlui-layout__mobile .tlui-button__tool {
2035
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool {
2042
2036
  height: 48px;
2043
2037
  width: 43px;
2044
2038
  }
2045
2039
 
2046
- .tlui-layout__mobile .tlui-button__tool > .tlui-icon {
2040
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-button__tool > .tlui-icon {
2047
2041
  height: 16px;
2048
2042
  width: 16px;
2049
2043
  }
2050
2044
 
2051
- /* Button Row */
2045
+ /* Row layout */
2052
2046
 
2053
- .tlui-buttons__horizontal {
2047
+ .tlui-row {
2054
2048
  display: flex;
2055
2049
  flex-direction: row;
2050
+ padding: 0 2px;
2056
2051
  }
2057
- .tlui-buttons__horizontal > * {
2052
+ .tlui-row > * {
2058
2053
  margin-left: -2px;
2059
2054
  margin-right: -2px;
2060
2055
  }
2061
- .tlui-buttons__horizontal > *:nth-child(1) {
2062
- margin-left: 0px;
2056
+
2057
+ /* Column layout */
2058
+
2059
+ .tlui-column {
2060
+ display: flex;
2061
+ flex-direction: column;
2062
+ padding: 2px 0;
2063
2063
  }
2064
- .tlui-buttons__horizontal > *:nth-last-child(1) {
2065
- margin-right: 0px;
2064
+ .tlui-column > * {
2065
+ margin-top: -2px;
2066
+ margin-bottom: -2px;
2066
2067
  }
2067
2068
 
2068
- /* Button Grid */
2069
+ /* Grid layout */
2069
2070
 
2070
- .tlui-buttons__grid {
2071
+ .tlui-grid {
2071
2072
  display: grid;
2072
- grid-template-columns: repeat(4, auto);
2073
+ grid-template-columns: repeat(4, 1fr);
2073
2074
  grid-auto-flow: row;
2074
2075
  overflow: hidden;
2076
+ padding: 2px;
2075
2077
  }
2076
- .tlui-buttons__grid > .tlui-button {
2078
+ .tlui-grid > * {
2077
2079
  margin: -2px;
2078
2080
  }
2079
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n),
2080
- .tlui-buttons__vertical-align > .tlui-button:nth-of-type(3n) {
2081
- margin-right: 0px;
2082
- }
2083
- .tlui-buttons__grid > .tlui-button:nth-of-type(4n - 3) {
2084
- margin-left: 0px;
2085
- }
2086
- .tlui-buttons__grid > .tlui-button:nth-of-type(-n + 4) {
2087
- margin-top: 0px;
2088
- }
2089
- .tlui-buttons__grid > .tlui-button:nth-last-of-type(-n + 4) {
2090
- margin-bottom: 0px;
2091
- }
2092
2081
 
2093
2082
  /* Zoom button */
2094
2083
 
@@ -2778,6 +2767,12 @@ it from receiving any pointer events or affecting the cursor. */
2778
2767
  max-width: 148px;
2779
2768
  }
2780
2769
 
2770
+ .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
2771
+ border-radius: 10px;
2772
+ outline: 2px solid var(--color-text);
2773
+ outline-offset: -5px;
2774
+ }
2775
+
2781
2776
  .tlui-style-panel::-webkit-scrollbar {
2782
2777
  display: none;
2783
2778
  }
@@ -2805,12 +2800,8 @@ it from receiving any pointer events or affecting the cursor. */
2805
2800
  border-bottom: 1px solid var(--color-divider);
2806
2801
  }
2807
2802
 
2808
- .tlui-style-panel__row {
2809
- display: flex;
2810
- }
2811
- /* Only really used for the alignment picker */
2812
- .tlui-style-panel__row__extra-button {
2813
- margin-left: -2px;
2803
+ .tlui-style-panel__dropdown-picker:only-child {
2804
+ width: 100%;
2814
2805
  }
2815
2806
 
2816
2807
  .tlui-style-panel__double-select-picker {
@@ -2842,15 +2833,36 @@ it from receiving any pointer events or affecting the cursor. */
2842
2833
  }
2843
2834
  }
2844
2835
 
2836
+ /* Accessibility subheadings */
2837
+
2838
+ .tlui-style-panel__section .tlui-style-panel__subheading,
2839
+ .tlui-style-panel__section__common .tlui-style-panel__subheading,
2840
+ .tlui-style-panel__subheading + .tlui-slider__container {
2841
+ margin: 0;
2842
+ padding: var(--space-2) var(--space-3) 0px var(--space-4);
2843
+ font-size: 12px;
2844
+ font-weight: inherit;
2845
+ line-height: inherit;
2846
+ }
2847
+
2848
+ .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
2849
+ padding-top: var(--space-3);
2850
+ }
2851
+
2852
+ .tlui-style-panel__subheading + .tlui-slider__container {
2853
+ padding-top: 0px;
2854
+ }
2855
+
2845
2856
  /* --------------------- Bottom --------------------- */
2846
2857
 
2847
2858
  .tlui-layout__bottom {
2848
2859
  grid-row: 2;
2860
+ width: 100%;
2861
+ overflow: hidden;
2849
2862
  }
2850
2863
 
2851
2864
  .tlui-layout__bottom__main {
2852
2865
  width: 100%;
2853
- position: relative;
2854
2866
  display: flex;
2855
2867
  align-items: flex-end;
2856
2868
  justify-content: center;
@@ -2866,7 +2878,6 @@ it from receiving any pointer events or affecting the cursor. */
2866
2878
  pointer-events: all;
2867
2879
  position: absolute;
2868
2880
  left: 0px;
2869
- bottom: 0px;
2870
2881
  }
2871
2882
 
2872
2883
  .tlui-navigation-panel::before {
@@ -2906,62 +2917,101 @@ it from receiving any pointer events or affecting the cursor. */
2906
2917
  /* --------------------- Toolbar -------------------- */
2907
2918
 
2908
2919
  /* Wide container */
2909
- .tlui-toolbar {
2920
+ .tlui-main-toolbar {
2910
2921
  grid-column: 1 / span 3;
2911
2922
  grid-row: 1;
2912
2923
  display: flex;
2913
2924
  align-items: center;
2914
2925
  justify-content: center;
2915
2926
  flex-grow: 2;
2927
+ }
2928
+
2929
+ .tlui-main-toolbar--horizontal {
2916
2930
  padding-bottom: calc(var(--space-3) + var(--sab));
2931
+ max-width: 100%;
2932
+ }
2933
+
2934
+ .tlui-main-toolbar--vertical {
2935
+ position: absolute;
2936
+ left: 0;
2937
+ top: 90px; /* height of page menu + 'back to content' button */
2938
+ bottom: 140px; /* height of expanded mini-map */
2939
+ padding-left: calc(var(--space-3) + var(--sab));
2940
+ }
2941
+
2942
+ [data-breakpoints-below*='6'] .tlui-main-toolbar--vertical {
2943
+ bottom: 90px; /* collapsed mini-map, but same as top to keep things looking even */
2917
2944
  }
2918
2945
 
2919
2946
  /* Centered Content */
2920
- .tlui-toolbar__inner {
2947
+ .tlui-main-toolbar__inner {
2921
2948
  position: relative;
2922
2949
  width: fit-content;
2923
2950
  display: flex;
2924
2951
  gap: var(--space-3);
2925
- align-items: flex-end;
2952
+ align-items: flex-start;
2926
2953
  }
2927
2954
 
2928
- .tlui-toolbar__left {
2955
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__inner {
2956
+ flex-direction: column;
2957
+ }
2958
+
2959
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__left {
2929
2960
  width: fit-content;
2930
2961
  }
2962
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__left {
2963
+ display: flex;
2964
+ height: fit-content;
2965
+ }
2931
2966
 
2932
2967
  /* Row of controls + lock button */
2933
- .tlui-toolbar__extras {
2968
+ .tlui-main-toolbar__extras {
2934
2969
  position: relative;
2935
2970
  z-index: var(--layer-above);
2936
- width: 100%;
2937
2971
  pointer-events: none;
2938
- top: 6px;
2939
- height: 48px;
2972
+ align-self: stretch;
2940
2973
  }
2941
2974
 
2942
- .tlui-toolbar__extras:empty {
2975
+ .tlui-main-toolbar__extras:empty {
2943
2976
  display: none;
2944
2977
  }
2945
2978
 
2946
- .tlui-toolbar__extras__controls {
2947
- display: flex;
2979
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras {
2980
+ height: 48px;
2981
+ top: 6px;
2982
+ }
2983
+
2984
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras {
2985
+ width: 48px;
2986
+ order: 1;
2987
+ }
2988
+
2989
+ .tlui-main-toolbar__extras__controls {
2948
2990
  position: relative;
2949
- flex-direction: row;
2950
2991
  z-index: var(--layer-above);
2951
2992
  background-color: var(--color-low);
2993
+ border: 2px solid var(--color-background);
2994
+ pointer-events: all;
2995
+ }
2996
+
2997
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__extras__controls {
2952
2998
  border-top-left-radius: var(--radius-4);
2953
2999
  border-top-right-radius: var(--radius-4);
2954
- border: 2px solid var(--color-background);
2955
3000
  margin-left: 8px;
2956
3001
  margin-right: 0px;
2957
- pointer-events: all;
2958
3002
  width: fit-content;
2959
3003
  }
2960
3004
 
2961
- .tlui-toolbar__tools {
2962
- display: flex;
2963
- flex-direction: row;
2964
- align-items: center;
3005
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__extras__controls {
3006
+ border-top-right-radius: var(--radius-4);
3007
+ border-bottom-right-radius: var(--radius-4);
3008
+ margin-top: 8px;
3009
+ margin-left: -2px;
3010
+ margin-bottom: 0px;
3011
+ width: fit-content;
3012
+ }
3013
+
3014
+ .tlui-main-toolbar__tools {
2965
3015
  border-radius: var(--radius-4);
2966
3016
  z-index: var(--layer-panels);
2967
3017
  pointer-events: all;
@@ -2969,35 +3019,102 @@ it from receiving any pointer events or affecting the cursor. */
2969
3019
  background: var(--color-panel);
2970
3020
  box-shadow: var(--shadow-2);
2971
3021
  }
2972
- .tlui-toolbar__tools__list {
2973
- display: flex;
2974
- flex-direction: row;
2975
- align-items: center;
3022
+
3023
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {
3024
+ align-self: flex-end;
3025
+ }
3026
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__mobile-style-panel {
3027
+ align-self: flex-start;
2976
3028
  }
2977
3029
 
2978
- .tlui-toolbar__overflow {
3030
+ .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
2979
3031
  width: 40px;
3032
+ margin-left: 2px;
3033
+ }
3034
+ .tlui-main-toolbar--vertical .tlui-main-toolbar__overflow {
3035
+ height: 40px;
3036
+ margin-top: 2px;
2980
3037
  }
2981
3038
 
2982
- .tlui-layout__mobile .tlui-toolbar__overflow {
3039
+ .tlui-layout__mobile .tlui-main-toolbar--horizontal .tlui-main-toolbar__overflow {
2983
3040
  width: 32px;
2984
3041
  padding: 0px;
2985
3042
  }
2986
3043
 
2987
- .tlui-toolbar *[data-state='open']::after {
3044
+ .tlui-main-toolbar--horizontal *[data-state='open']::after {
2988
3045
  background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2989
3046
  opacity: 1;
2990
3047
  }
3048
+ .tlui-main-toolbar--vertical *[data-state='open']::after {
3049
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
3050
+ opacity: 1;
3051
+ }
3052
+
3053
+ .tlui-main-toolbar__tools [data-toolbar-visible='false'],
3054
+ .tlui-main-toolbar__overflow-content [data-toolbar-visible='false'] {
3055
+ display: none;
3056
+ }
3057
+
3058
+ .tlui-main-toolbar__group:empty {
3059
+ display: none;
3060
+ }
3061
+ .tlui-row.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3062
+ border-right: 1px solid var(--color-divider);
3063
+ margin-right: 2px;
3064
+ }
3065
+ .tlui-column.tlui-main-toolbar__group:not(
3066
+ :nth-last-child(-n + 1 of [data-toolbar-visible='true'])
3067
+ ) {
3068
+ border-bottom: 1px solid var(--color-divider);
3069
+ margin-bottom: 2px;
3070
+ }
3071
+ .tlui-grid.tlui-main-toolbar__group {
3072
+ grid-column: 1 / span 4;
3073
+ }
3074
+ .tlui-grid.tlui-main-toolbar__group:not(:nth-last-child(-n + 1 of [data-toolbar-visible='true'])) {
3075
+ border-bottom: 1px solid var(--color-divider);
3076
+ margin-bottom: 2px;
3077
+ }
2991
3078
 
2992
3079
  @media (hover: hover) {
2993
- .tlui-toolbar *[data-state='open']:not(:hover)::after {
3080
+ .tlui-main-toolbar--horizontal *[data-state='open']:not(:hover)::after {
2994
3081
  background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2995
3082
  opacity: 1;
2996
3083
  }
3084
+ .tlui-main-toolbar--vertical *[data-state='open']:not(:hover)::after {
3085
+ background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
3086
+ opacity: 1;
3087
+ }
3088
+ }
3089
+
3090
+ /* ------------------- Tooltip -------------------- */
3091
+
3092
+ .tlui-tooltip {
3093
+ font-size: 12px;
3094
+ padding: 2px 8px;
3095
+ border-radius: 4px;
3096
+ background-color: var(--color-tooltip);
3097
+ box-shadow: none;
3098
+ color: var(--color-text-shadow);
3099
+ max-width: 400px;
3100
+ width: fit-content;
3101
+ text-align: center;
3102
+ pointer-events: none;
3103
+ will-change: transform, opacity;
3104
+ z-index: 2;
3105
+ }
3106
+
3107
+ .tlui-tooltip__arrow {
3108
+ fill: var(--color-tooltip);
3109
+ will-change: opacity;
3110
+ }
3111
+
3112
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
3113
+ z-index: var(--layer-toasts) !important;
2997
3114
  }
2998
3115
 
2999
- .tlui-layout__mobile .tlui-toolbar {
3000
- transition: transform 0.15s ease-out 0.05s;
3116
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
3117
+ transition: all 0.1s ease-out;
3001
3118
  }
3002
3119
 
3003
3120
  /* ------------------- Debug panel ------------------ */