tldraw 3.16.0-canary.aa1aff3ffe55 → 3.16.0-canary.da3348c13973

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 (163) hide show
  1. package/dist-cjs/index.d.ts +89 -4
  2. package/dist-cjs/index.js +11 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js +10 -1
  5. package/dist-cjs/lib/shapes/shared/usePrefersReducedMotion.js.map +2 -2
  6. package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
  7. package/dist-cjs/lib/ui/components/AccessibilityMenu.js +35 -0
  8. package/dist-cjs/lib/ui/components/AccessibilityMenu.js.map +7 -0
  9. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js +2 -1
  10. package/dist-cjs/lib/ui/components/ActionsMenu/DefaultActionsMenu.js.map +2 -2
  11. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js +3 -2
  12. package/dist-cjs/lib/ui/components/DefaultMenuPanel.js.map +2 -2
  13. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +3 -3
  14. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  15. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +1 -1
  16. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  17. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +2 -1
  18. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  19. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js +3 -2
  20. package/dist-cjs/lib/ui/components/SharePanel/PeopleMenuItem.js.map +2 -2
  21. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +2 -2
  22. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js.map +2 -2
  23. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +2 -0
  24. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
  25. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +171 -140
  26. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  27. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +3 -3
  28. package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +2 -2
  29. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +26 -25
  30. package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +3 -3
  31. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +6 -5
  32. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js.map +2 -2
  33. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +9 -10
  34. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +2 -2
  35. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +5 -4
  36. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  37. package/dist-cjs/lib/ui/components/menu-items.js +6 -0
  38. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  39. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js +4 -15
  40. package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +3 -3
  41. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  42. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  43. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +3 -2
  44. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js.map +3 -3
  45. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +18 -7
  46. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  47. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +284 -0
  48. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +7 -0
  49. package/dist-cjs/lib/ui/components/primitives/layout.js +51 -0
  50. package/dist-cjs/lib/ui/components/primitives/layout.js.map +7 -0
  51. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +152 -2
  52. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  53. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js +3 -2
  54. package/dist-cjs/lib/ui/context/TldrawUiContextProvider.js.map +2 -2
  55. package/dist-cjs/lib/ui/context/actions.js +15 -0
  56. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  57. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  58. package/dist-cjs/lib/ui/hooks/useTools.js +76 -9
  59. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  60. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  61. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +3 -0
  62. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  63. package/dist-cjs/lib/ui/version.js +3 -3
  64. package/dist-cjs/lib/ui/version.js.map +1 -1
  65. package/dist-esm/index.d.mts +89 -4
  66. package/dist-esm/index.mjs +19 -1
  67. package/dist-esm/index.mjs.map +2 -2
  68. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs +10 -1
  69. package/dist-esm/lib/shapes/shared/usePrefersReducedMotion.mjs.map +2 -2
  70. package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
  71. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs +19 -0
  72. package/dist-esm/lib/ui/components/AccessibilityMenu.mjs.map +7 -0
  73. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs +2 -1
  74. package/dist-esm/lib/ui/components/ActionsMenu/DefaultActionsMenu.mjs.map +2 -2
  75. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs +3 -2
  76. package/dist-esm/lib/ui/components/DefaultMenuPanel.mjs.map +2 -2
  77. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +3 -5
  78. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  79. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +1 -1
  80. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  81. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +2 -1
  82. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  83. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs +3 -2
  84. package/dist-esm/lib/ui/components/SharePanel/PeopleMenuItem.mjs.map +2 -2
  85. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs +2 -2
  86. package/dist-esm/lib/ui/components/SharePanel/UserPresenceColorPicker.mjs.map +2 -2
  87. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs +3 -1
  88. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
  89. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +171 -140
  90. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  91. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +3 -3
  92. package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +2 -2
  93. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +26 -25
  94. package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
  95. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs +6 -5
  96. package/dist-esm/lib/ui/components/Toolbar/DefaultToolbar.mjs.map +2 -2
  97. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +9 -10
  98. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +2 -2
  99. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +5 -4
  100. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  101. package/dist-esm/lib/ui/components/menu-items.mjs +6 -0
  102. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  103. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs +4 -5
  104. package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +2 -2
  105. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -1
  106. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  107. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs +3 -2
  108. package/dist-esm/lib/ui/components/primitives/TldrawUiPopover.mjs.map +2 -2
  109. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +18 -7
  110. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  111. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +254 -0
  112. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +7 -0
  113. package/dist-esm/lib/ui/components/primitives/layout.mjs +21 -0
  114. package/dist-esm/lib/ui/components/primitives/layout.mjs.map +7 -0
  115. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +160 -4
  116. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  117. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs +3 -2
  118. package/dist-esm/lib/ui/context/TldrawUiContextProvider.mjs.map +2 -2
  119. package/dist-esm/lib/ui/context/actions.mjs +15 -0
  120. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  121. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  122. package/dist-esm/lib/ui/hooks/useTools.mjs +83 -10
  123. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  124. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +3 -0
  125. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  126. package/dist-esm/lib/ui/version.mjs +3 -3
  127. package/dist-esm/lib/ui/version.mjs.map +1 -1
  128. package/package.json +3 -3
  129. package/src/index.ts +15 -0
  130. package/src/lib/shapes/shared/usePrefersReducedMotion.tsx +11 -1
  131. package/src/lib/tools/SelectTool/childStates/Translating.ts +0 -1
  132. package/src/lib/ui/components/AccessibilityMenu.tsx +20 -0
  133. package/src/lib/ui/components/ActionsMenu/DefaultActionsMenu.tsx +2 -1
  134. package/src/lib/ui/components/DefaultMenuPanel.tsx +4 -3
  135. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +4 -4
  136. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +1 -1
  137. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +3 -2
  138. package/src/lib/ui/components/SharePanel/PeopleMenuItem.tsx +4 -3
  139. package/src/lib/ui/components/SharePanel/UserPresenceColorPicker.tsx +3 -3
  140. package/src/lib/ui/components/StylePanel/DefaultStylePanel.tsx +3 -1
  141. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +146 -107
  142. package/src/lib/ui/components/StylePanel/DoubleDropdownPicker.tsx +3 -3
  143. package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +7 -6
  144. package/src/lib/ui/components/Toolbar/DefaultToolbar.tsx +7 -6
  145. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +10 -11
  146. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +14 -11
  147. package/src/lib/ui/components/menu-items.tsx +8 -0
  148. package/src/lib/ui/components/primitives/TldrawUiButtonPicker.tsx +38 -36
  149. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -1
  150. package/src/lib/ui/components/primitives/TldrawUiPopover.tsx +4 -2
  151. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +34 -12
  152. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +332 -0
  153. package/src/lib/ui/components/primitives/layout.tsx +33 -0
  154. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +218 -3
  155. package/src/lib/ui/context/TldrawUiContextProvider.tsx +23 -20
  156. package/src/lib/ui/context/actions.tsx +15 -0
  157. package/src/lib/ui/context/events.tsx +2 -0
  158. package/src/lib/ui/hooks/useTools.tsx +118 -10
  159. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +3 -0
  160. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +3 -0
  161. package/src/lib/ui/version.ts +3 -3
  162. package/src/lib/ui.css +80 -69
  163. package/tldraw.css +82 -69
package/src/lib/ui.css CHANGED
@@ -97,7 +97,7 @@
97
97
  opacity: 1;
98
98
  }
99
99
 
100
- .tlui-button[aria-expanded='true'][data-direction='left']::after {
100
+ .tlui-button[aria-expanded='true'][data-direction='left'] {
101
101
  background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
102
102
  opacity: 1;
103
103
  }
@@ -161,12 +161,6 @@
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 {
@@ -207,7 +201,7 @@
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
206
  top: 4px;
213
207
  right: 0px;
@@ -218,7 +212,7 @@
218
212
  border-radius: var(--radius-2);
219
213
  }
220
214
 
221
- .tlui-toolbar__lock-button::after {
215
+ .tlui-main-toolbar__lock-button::after {
222
216
  top: 4px;
223
217
  left: 8px;
224
218
  inset: 4px;
@@ -230,16 +224,6 @@
230
224
  position: relative;
231
225
  height: 48px;
232
226
  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
227
  }
244
228
 
245
229
  .tlui-button__tool::after {
@@ -270,47 +254,30 @@
270
254
  width: 16px;
271
255
  }
272
256
 
273
- /* Button Row */
257
+ /* Row layout */
274
258
 
275
- .tlui-buttons__horizontal {
259
+ .tlui-row {
276
260
  display: flex;
277
261
  flex-direction: row;
262
+ padding: 0 2px;
278
263
  }
279
- .tlui-buttons__horizontal > * {
264
+ .tlui-row > * {
280
265
  margin-left: -2px;
281
266
  margin-right: -2px;
282
267
  }
283
- .tlui-buttons__horizontal > *:nth-child(1) {
284
- margin-left: 0px;
285
- }
286
- .tlui-buttons__horizontal > *:nth-last-child(1) {
287
- margin-right: 0px;
288
- }
289
268
 
290
- /* Button Grid */
269
+ /* Grid layout */
291
270
 
292
- .tlui-buttons__grid {
271
+ .tlui-grid {
293
272
  display: grid;
294
- grid-template-columns: repeat(4, auto);
273
+ grid-template-columns: repeat(4, 1fr);
295
274
  grid-auto-flow: row;
296
275
  overflow: hidden;
276
+ padding: 2px;
297
277
  }
298
- .tlui-buttons__grid > .tlui-button {
278
+ .tlui-grid > * {
299
279
  margin: -2px;
300
280
  }
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
281
 
315
282
  /* Zoom button */
316
283
 
@@ -1000,6 +967,12 @@
1000
967
  max-width: 148px;
1001
968
  }
1002
969
 
970
+ .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
971
+ border-radius: 10px;
972
+ outline: 2px solid var(--color-text);
973
+ outline-offset: -5px;
974
+ }
975
+
1003
976
  .tlui-style-panel::-webkit-scrollbar {
1004
977
  display: none;
1005
978
  }
@@ -1027,12 +1000,8 @@
1027
1000
  border-bottom: 1px solid var(--color-divider);
1028
1001
  }
1029
1002
 
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;
1003
+ .tlui-style-panel__dropdown-picker:only-child {
1004
+ width: 100%;
1036
1005
  }
1037
1006
 
1038
1007
  .tlui-style-panel__double-select-picker {
@@ -1064,6 +1033,26 @@
1064
1033
  }
1065
1034
  }
1066
1035
 
1036
+ /* Accessibility subheadings */
1037
+
1038
+ .tlui-style-panel__section .tlui-style-panel__subheading,
1039
+ .tlui-style-panel__section__common .tlui-style-panel__subheading,
1040
+ .tlui-style-panel__subheading + .tlui-slider__container {
1041
+ margin: 0;
1042
+ padding: var(--space-2) var(--space-3) 0px var(--space-4);
1043
+ font-size: 12px;
1044
+ font-weight: inherit;
1045
+ line-height: inherit;
1046
+ }
1047
+
1048
+ .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
1049
+ padding-top: var(--space-3);
1050
+ }
1051
+
1052
+ .tlui-style-panel__subheading + .tlui-slider__container {
1053
+ padding-top: 0px;
1054
+ }
1055
+
1067
1056
  /* --------------------- Bottom --------------------- */
1068
1057
 
1069
1058
  .tlui-layout__bottom {
@@ -1128,7 +1117,7 @@
1128
1117
  /* --------------------- Toolbar -------------------- */
1129
1118
 
1130
1119
  /* Wide container */
1131
- .tlui-toolbar {
1120
+ .tlui-main-toolbar {
1132
1121
  grid-column: 1 / span 3;
1133
1122
  grid-row: 1;
1134
1123
  display: flex;
@@ -1139,7 +1128,7 @@
1139
1128
  }
1140
1129
 
1141
1130
  /* Centered Content */
1142
- .tlui-toolbar__inner {
1131
+ .tlui-main-toolbar__inner {
1143
1132
  position: relative;
1144
1133
  width: fit-content;
1145
1134
  display: flex;
@@ -1147,12 +1136,12 @@
1147
1136
  align-items: flex-end;
1148
1137
  }
1149
1138
 
1150
- .tlui-toolbar__left {
1139
+ .tlui-main-toolbar__left {
1151
1140
  width: fit-content;
1152
1141
  }
1153
1142
 
1154
1143
  /* Row of controls + lock button */
1155
- .tlui-toolbar__extras {
1144
+ .tlui-main-toolbar__extras {
1156
1145
  position: relative;
1157
1146
  z-index: var(--layer-above);
1158
1147
  width: 100%;
@@ -1161,11 +1150,11 @@
1161
1150
  height: 48px;
1162
1151
  }
1163
1152
 
1164
- .tlui-toolbar__extras:empty {
1153
+ .tlui-main-toolbar__extras:empty {
1165
1154
  display: none;
1166
1155
  }
1167
1156
 
1168
- .tlui-toolbar__extras__controls {
1157
+ .tlui-main-toolbar__extras__controls {
1169
1158
  display: flex;
1170
1159
  position: relative;
1171
1160
  flex-direction: row;
@@ -1180,7 +1169,7 @@
1180
1169
  width: fit-content;
1181
1170
  }
1182
1171
 
1183
- .tlui-toolbar__tools {
1172
+ .tlui-main-toolbar__tools {
1184
1173
  display: flex;
1185
1174
  flex-direction: row;
1186
1175
  align-items: center;
@@ -1191,35 +1180,57 @@
1191
1180
  background: var(--color-panel);
1192
1181
  box-shadow: var(--shadow-2);
1193
1182
  }
1194
- .tlui-toolbar__tools__list {
1195
- display: flex;
1196
- flex-direction: row;
1197
- align-items: center;
1198
- }
1199
1183
 
1200
- .tlui-toolbar__overflow {
1184
+ .tlui-main-toolbar__overflow {
1201
1185
  width: 40px;
1186
+ margin-left: 2px;
1202
1187
  }
1203
1188
 
1204
- .tlui-layout__mobile .tlui-toolbar__overflow {
1189
+ .tlui-layout__mobile .tlui-main-toolbar__overflow {
1205
1190
  width: 32px;
1206
1191
  padding: 0px;
1207
1192
  }
1208
1193
 
1209
- .tlui-toolbar *[data-state='open']::after {
1194
+ .tlui-main-toolbar *[data-state='open']::after {
1210
1195
  background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1211
1196
  opacity: 1;
1212
1197
  }
1213
1198
 
1214
1199
  @media (hover: hover) {
1215
- .tlui-toolbar *[data-state='open']:not(:hover)::after {
1200
+ .tlui-main-toolbar *[data-state='open']:not(:hover)::after {
1216
1201
  background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
1217
1202
  opacity: 1;
1218
1203
  }
1219
1204
  }
1220
1205
 
1221
- .tlui-layout__mobile .tlui-toolbar {
1222
- transition: transform 0.15s ease-out 0.05s;
1206
+ /* ------------------- Tooltip -------------------- */
1207
+
1208
+ .tlui-tooltip {
1209
+ font-size: 12px;
1210
+ padding: 2px 8px;
1211
+ border-radius: 4px;
1212
+ background-color: var(--color-tooltip);
1213
+ box-shadow: none;
1214
+ color: var(--color-text-shadow);
1215
+ max-width: 400px;
1216
+ width: fit-content;
1217
+ text-align: center;
1218
+ pointer-events: none;
1219
+ will-change: transform, opacity;
1220
+ z-index: 2;
1221
+ }
1222
+
1223
+ .tlui-tooltip__arrow {
1224
+ fill: var(--color-tooltip);
1225
+ will-change: opacity;
1226
+ }
1227
+
1228
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
1229
+ z-index: var(--layer-toasts) !important;
1230
+ }
1231
+
1232
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
1233
+ transition: all 0.1s ease-out;
1223
1234
  }
1224
1235
 
1225
1236
  /* ------------------- Debug panel ------------------ */
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,7 +1981,7 @@ 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
1986
  top: 4px;
1991
1987
  right: 0px;
@@ -1996,7 +1992,7 @@ it from receiving any pointer events or affecting the cursor. */
1996
1992
  border-radius: var(--radius-2);
1997
1993
  }
1998
1994
 
1999
- .tlui-toolbar__lock-button::after {
1995
+ .tlui-main-toolbar__lock-button::after {
2000
1996
  top: 4px;
2001
1997
  left: 8px;
2002
1998
  inset: 4px;
@@ -2008,16 +2004,6 @@ it from receiving any pointer events or affecting the cursor. */
2008
2004
  position: relative;
2009
2005
  height: 48px;
2010
2006
  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
2007
  }
2022
2008
 
2023
2009
  .tlui-button__tool::after {
@@ -2048,47 +2034,30 @@ it from receiving any pointer events or affecting the cursor. */
2048
2034
  width: 16px;
2049
2035
  }
2050
2036
 
2051
- /* Button Row */
2037
+ /* Row layout */
2052
2038
 
2053
- .tlui-buttons__horizontal {
2039
+ .tlui-row {
2054
2040
  display: flex;
2055
2041
  flex-direction: row;
2042
+ padding: 0 2px;
2056
2043
  }
2057
- .tlui-buttons__horizontal > * {
2044
+ .tlui-row > * {
2058
2045
  margin-left: -2px;
2059
2046
  margin-right: -2px;
2060
2047
  }
2061
- .tlui-buttons__horizontal > *:nth-child(1) {
2062
- margin-left: 0px;
2063
- }
2064
- .tlui-buttons__horizontal > *:nth-last-child(1) {
2065
- margin-right: 0px;
2066
- }
2067
2048
 
2068
- /* Button Grid */
2049
+ /* Grid layout */
2069
2050
 
2070
- .tlui-buttons__grid {
2051
+ .tlui-grid {
2071
2052
  display: grid;
2072
- grid-template-columns: repeat(4, auto);
2053
+ grid-template-columns: repeat(4, 1fr);
2073
2054
  grid-auto-flow: row;
2074
2055
  overflow: hidden;
2056
+ padding: 2px;
2075
2057
  }
2076
- .tlui-buttons__grid > .tlui-button {
2058
+ .tlui-grid > * {
2077
2059
  margin: -2px;
2078
2060
  }
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
2061
 
2093
2062
  /* Zoom button */
2094
2063
 
@@ -2778,6 +2747,12 @@ it from receiving any pointer events or affecting the cursor. */
2778
2747
  max-width: 148px;
2779
2748
  }
2780
2749
 
2750
+ .tlui-style-panel[data-show-ui-labels='true'] .tlui-button[data-isactive='true'] {
2751
+ border-radius: 10px;
2752
+ outline: 2px solid var(--color-text);
2753
+ outline-offset: -5px;
2754
+ }
2755
+
2781
2756
  .tlui-style-panel::-webkit-scrollbar {
2782
2757
  display: none;
2783
2758
  }
@@ -2805,12 +2780,8 @@ it from receiving any pointer events or affecting the cursor. */
2805
2780
  border-bottom: 1px solid var(--color-divider);
2806
2781
  }
2807
2782
 
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;
2783
+ .tlui-style-panel__dropdown-picker:only-child {
2784
+ width: 100%;
2814
2785
  }
2815
2786
 
2816
2787
  .tlui-style-panel__double-select-picker {
@@ -2842,6 +2813,26 @@ it from receiving any pointer events or affecting the cursor. */
2842
2813
  }
2843
2814
  }
2844
2815
 
2816
+ /* Accessibility subheadings */
2817
+
2818
+ .tlui-style-panel__section .tlui-style-panel__subheading,
2819
+ .tlui-style-panel__section__common .tlui-style-panel__subheading,
2820
+ .tlui-style-panel__subheading + .tlui-slider__container {
2821
+ margin: 0;
2822
+ padding: var(--space-2) var(--space-3) 0px var(--space-4);
2823
+ font-size: 12px;
2824
+ font-weight: inherit;
2825
+ line-height: inherit;
2826
+ }
2827
+
2828
+ .tlui-style-panel .tlui-style-panel__subheading:nth-of-type(1) {
2829
+ padding-top: var(--space-3);
2830
+ }
2831
+
2832
+ .tlui-style-panel__subheading + .tlui-slider__container {
2833
+ padding-top: 0px;
2834
+ }
2835
+
2845
2836
  /* --------------------- Bottom --------------------- */
2846
2837
 
2847
2838
  .tlui-layout__bottom {
@@ -2906,7 +2897,7 @@ it from receiving any pointer events or affecting the cursor. */
2906
2897
  /* --------------------- Toolbar -------------------- */
2907
2898
 
2908
2899
  /* Wide container */
2909
- .tlui-toolbar {
2900
+ .tlui-main-toolbar {
2910
2901
  grid-column: 1 / span 3;
2911
2902
  grid-row: 1;
2912
2903
  display: flex;
@@ -2917,7 +2908,7 @@ it from receiving any pointer events or affecting the cursor. */
2917
2908
  }
2918
2909
 
2919
2910
  /* Centered Content */
2920
- .tlui-toolbar__inner {
2911
+ .tlui-main-toolbar__inner {
2921
2912
  position: relative;
2922
2913
  width: fit-content;
2923
2914
  display: flex;
@@ -2925,12 +2916,12 @@ it from receiving any pointer events or affecting the cursor. */
2925
2916
  align-items: flex-end;
2926
2917
  }
2927
2918
 
2928
- .tlui-toolbar__left {
2919
+ .tlui-main-toolbar__left {
2929
2920
  width: fit-content;
2930
2921
  }
2931
2922
 
2932
2923
  /* Row of controls + lock button */
2933
- .tlui-toolbar__extras {
2924
+ .tlui-main-toolbar__extras {
2934
2925
  position: relative;
2935
2926
  z-index: var(--layer-above);
2936
2927
  width: 100%;
@@ -2939,11 +2930,11 @@ it from receiving any pointer events or affecting the cursor. */
2939
2930
  height: 48px;
2940
2931
  }
2941
2932
 
2942
- .tlui-toolbar__extras:empty {
2933
+ .tlui-main-toolbar__extras:empty {
2943
2934
  display: none;
2944
2935
  }
2945
2936
 
2946
- .tlui-toolbar__extras__controls {
2937
+ .tlui-main-toolbar__extras__controls {
2947
2938
  display: flex;
2948
2939
  position: relative;
2949
2940
  flex-direction: row;
@@ -2958,7 +2949,7 @@ it from receiving any pointer events or affecting the cursor. */
2958
2949
  width: fit-content;
2959
2950
  }
2960
2951
 
2961
- .tlui-toolbar__tools {
2952
+ .tlui-main-toolbar__tools {
2962
2953
  display: flex;
2963
2954
  flex-direction: row;
2964
2955
  align-items: center;
@@ -2969,35 +2960,57 @@ it from receiving any pointer events or affecting the cursor. */
2969
2960
  background: var(--color-panel);
2970
2961
  box-shadow: var(--shadow-2);
2971
2962
  }
2972
- .tlui-toolbar__tools__list {
2973
- display: flex;
2974
- flex-direction: row;
2975
- align-items: center;
2976
- }
2977
2963
 
2978
- .tlui-toolbar__overflow {
2964
+ .tlui-main-toolbar__overflow {
2979
2965
  width: 40px;
2966
+ margin-left: 2px;
2980
2967
  }
2981
2968
 
2982
- .tlui-layout__mobile .tlui-toolbar__overflow {
2969
+ .tlui-layout__mobile .tlui-main-toolbar__overflow {
2983
2970
  width: 32px;
2984
2971
  padding: 0px;
2985
2972
  }
2986
2973
 
2987
- .tlui-toolbar *[data-state='open']::after {
2974
+ .tlui-main-toolbar *[data-state='open']::after {
2988
2975
  background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2989
2976
  opacity: 1;
2990
2977
  }
2991
2978
 
2992
2979
  @media (hover: hover) {
2993
- .tlui-toolbar *[data-state='open']:not(:hover)::after {
2980
+ .tlui-main-toolbar *[data-state='open']:not(:hover)::after {
2994
2981
  background: linear-gradient(0deg, rgba(144, 144, 144, 0) 0%, var(--color-muted-2) 100%);
2995
2982
  opacity: 1;
2996
2983
  }
2997
2984
  }
2998
2985
 
2999
- .tlui-layout__mobile .tlui-toolbar {
3000
- transition: transform 0.15s ease-out 0.05s;
2986
+ /* ------------------- Tooltip -------------------- */
2987
+
2988
+ .tlui-tooltip {
2989
+ font-size: 12px;
2990
+ padding: 2px 8px;
2991
+ border-radius: 4px;
2992
+ background-color: var(--color-tooltip);
2993
+ box-shadow: none;
2994
+ color: var(--color-text-shadow);
2995
+ max-width: 400px;
2996
+ width: fit-content;
2997
+ text-align: center;
2998
+ pointer-events: none;
2999
+ will-change: transform, opacity;
3000
+ z-index: 2;
3001
+ }
3002
+
3003
+ .tlui-tooltip__arrow {
3004
+ fill: var(--color-tooltip);
3005
+ will-change: opacity;
3006
+ }
3007
+
3008
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip) {
3009
+ z-index: var(--layer-toasts) !important;
3010
+ }
3011
+
3012
+ [data-radix-popper-content-wrapper]:has(.tlui-tooltip[data-should-animate='true']) {
3013
+ transition: all 0.1s ease-out;
3001
3014
  }
3002
3015
 
3003
3016
  /* ------------------- Debug panel ------------------ */