tldraw 3.16.0-canary.9d418d03374a → 3.16.0-canary.9e28d92565ca

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 (184) hide show
  1. package/dist-cjs/index.d.ts +92 -9
  2. package/dist-cjs/index.js +5 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/defaultExternalContentHandlers.js +10 -0
  5. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  6. package/dist-cjs/lib/shapes/arrow/arrow-types.js.map +1 -1
  7. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js +3 -2
  8. package/dist-cjs/lib/shapes/arrow/arrowTargetState.js.map +2 -2
  9. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +1 -1
  10. package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +2 -2
  11. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +4 -4
  12. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +2 -2
  13. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +2 -1
  14. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  15. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +8 -2
  16. package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +2 -2
  17. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js +1 -0
  18. package/dist-cjs/lib/shapes/geo/GeoShapeUtil.js.map +2 -2
  19. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js +2 -1
  20. package/dist-cjs/lib/shapes/note/NoteShapeUtil.js.map +2 -2
  21. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +4 -4
  22. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js.map +2 -2
  23. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +3 -3
  24. package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
  25. package/dist-cjs/lib/shapes/text/PlainTextArea.js +3 -2
  26. package/dist-cjs/lib/shapes/text/PlainTextArea.js.map +2 -2
  27. package/dist-cjs/lib/shapes/text/RichTextArea.js +3 -3
  28. package/dist-cjs/lib/shapes/text/RichTextArea.js.map +2 -2
  29. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +3 -1
  30. package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +2 -2
  31. package/dist-cjs/lib/ui/components/A11y.js +1 -1
  32. package/dist-cjs/lib/ui/components/A11y.js.map +2 -2
  33. package/dist-cjs/lib/ui/components/LanguageMenu.js +1 -0
  34. package/dist-cjs/lib/ui/components/LanguageMenu.js.map +2 -2
  35. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +2 -1
  36. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js.map +2 -2
  37. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js +1 -1
  38. package/dist-cjs/lib/ui/components/PageMenu/DefaultPageMenu.js.map +2 -2
  39. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js +11 -2
  40. package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +2 -2
  41. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +3 -2
  42. package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
  43. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +5 -4
  44. package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
  45. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +1 -1
  46. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js.map +2 -2
  47. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +6 -2
  48. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +2 -2
  49. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  50. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
  51. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +5 -3
  52. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js.map +2 -2
  53. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +1 -1
  54. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  55. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +1 -0
  56. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  57. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +40 -3
  58. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
  59. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js +3 -0
  60. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
  61. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js +8 -8
  62. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  63. package/dist-cjs/lib/ui/context/actions.js +6 -0
  64. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  65. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  66. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  67. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  68. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +4 -2
  69. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  70. package/dist-cjs/lib/ui/version.js +3 -3
  71. package/dist-cjs/lib/ui/version.js.map +1 -1
  72. package/dist-esm/index.d.mts +92 -9
  73. package/dist-esm/index.mjs +9 -1
  74. package/dist-esm/index.mjs.map +2 -2
  75. package/dist-esm/lib/defaultExternalContentHandlers.mjs +10 -0
  76. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  77. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs +3 -2
  78. package/dist-esm/lib/shapes/arrow/arrowTargetState.mjs.map +2 -2
  79. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +1 -1
  80. package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +2 -2
  81. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +4 -5
  82. package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +2 -2
  83. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +2 -1
  84. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  85. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +9 -3
  86. package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +2 -2
  87. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs +1 -0
  88. package/dist-esm/lib/shapes/geo/GeoShapeUtil.mjs.map +2 -2
  89. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs +2 -1
  90. package/dist-esm/lib/shapes/note/NoteShapeUtil.mjs.map +2 -2
  91. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs +5 -5
  92. package/dist-esm/lib/shapes/shared/HyperlinkButton.mjs.map +2 -2
  93. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +3 -4
  94. package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
  95. package/dist-esm/lib/shapes/text/PlainTextArea.mjs +4 -3
  96. package/dist-esm/lib/shapes/text/PlainTextArea.mjs.map +2 -2
  97. package/dist-esm/lib/shapes/text/RichTextArea.mjs +3 -4
  98. package/dist-esm/lib/shapes/text/RichTextArea.mjs.map +2 -2
  99. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +3 -1
  100. package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +2 -2
  101. package/dist-esm/lib/ui/components/A11y.mjs +1 -2
  102. package/dist-esm/lib/ui/components/A11y.mjs.map +2 -2
  103. package/dist-esm/lib/ui/components/LanguageMenu.mjs +1 -0
  104. package/dist-esm/lib/ui/components/LanguageMenu.mjs.map +2 -2
  105. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs +2 -1
  106. package/dist-esm/lib/ui/components/Minimap/DefaultMinimap.mjs.map +2 -2
  107. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs +1 -2
  108. package/dist-esm/lib/ui/components/PageMenu/DefaultPageMenu.mjs.map +2 -2
  109. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs +11 -2
  110. package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +2 -2
  111. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +3 -2
  112. package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
  113. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +5 -4
  114. package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
  115. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs +1 -1
  116. package/dist-esm/lib/ui/components/Toolbar/OverflowingToolbar.mjs.map +2 -2
  117. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +6 -2
  118. package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +2 -2
  119. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +1 -2
  120. package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
  121. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs +6 -4
  122. package/dist-esm/lib/ui/components/primitives/TldrawUiInput.mjs.map +2 -2
  123. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +1 -1
  124. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  125. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +1 -0
  126. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  127. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +41 -3
  128. package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
  129. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs +3 -0
  130. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
  131. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs +8 -8
  132. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  133. package/dist-esm/lib/ui/context/actions.mjs +6 -0
  134. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  135. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +1 -2
  136. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  137. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +4 -2
  138. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  139. package/dist-esm/lib/ui/version.mjs +3 -3
  140. package/dist-esm/lib/ui/version.mjs.map +1 -1
  141. package/package.json +3 -3
  142. package/src/index.ts +7 -0
  143. package/src/lib/defaultExternalContentHandlers.ts +14 -0
  144. package/src/lib/shapes/arrow/ArrowShapeOptions.test.ts +83 -13
  145. package/src/lib/shapes/arrow/ArrowShapeTool.test.ts +99 -5
  146. package/src/lib/shapes/arrow/ArrowShapeUtil.test.ts +41 -0
  147. package/src/lib/shapes/arrow/arrow-types.ts +3 -5
  148. package/src/lib/shapes/arrow/arrowTargetState.ts +34 -3
  149. package/src/lib/shapes/arrow/toolStates/Pointing.tsx +1 -1
  150. package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +4 -5
  151. package/src/lib/shapes/frame/FrameShapeUtil.tsx +1 -0
  152. package/src/lib/shapes/frame/components/FrameLabelInput.tsx +10 -3
  153. package/src/lib/shapes/geo/GeoShapeUtil.tsx +1 -0
  154. package/src/lib/shapes/note/NoteShapeUtil.tsx +1 -0
  155. package/src/lib/shapes/shared/HyperlinkButton.tsx +5 -5
  156. package/src/lib/shapes/shared/useEditablePlainText.ts +3 -4
  157. package/src/lib/shapes/text/PlainTextArea.tsx +4 -3
  158. package/src/lib/shapes/text/RichTextArea.tsx +3 -4
  159. package/src/lib/tools/SelectTool/childStates/DraggingHandle.tsx +6 -2
  160. package/src/lib/ui/components/A11y.tsx +1 -2
  161. package/src/lib/ui/components/LanguageMenu.tsx +1 -0
  162. package/src/lib/ui/components/Minimap/DefaultMinimap.tsx +2 -1
  163. package/src/lib/ui/components/PageMenu/DefaultPageMenu.tsx +1 -2
  164. package/src/lib/ui/components/StylePanel/StylePanelButtonPicker.tsx +9 -2
  165. package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +4 -3
  166. package/src/lib/ui/components/Toolbar/LinkEditor.tsx +6 -5
  167. package/src/lib/ui/components/Toolbar/OverflowingToolbar.tsx +1 -1
  168. package/src/lib/ui/components/Toolbar/ToggleToolLockedButton.tsx +9 -2
  169. package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +1 -2
  170. package/src/lib/ui/components/primitives/TldrawUiInput.tsx +6 -3
  171. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +2 -2
  172. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +2 -1
  173. package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +57 -13
  174. package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +4 -0
  175. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +9 -9
  176. package/src/lib/ui/context/actions.tsx +13 -0
  177. package/src/lib/ui/hooks/useClipboardEvents.ts +1 -2
  178. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +2 -0
  179. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +4 -2
  180. package/src/lib/ui/version.ts +3 -3
  181. package/src/lib/ui.css +24 -1
  182. package/src/test/TestEditor.ts +8 -2
  183. package/src/test/getCulledShapes.test.tsx +71 -2
  184. package/tldraw.css +32 -4
@@ -1,9 +1,9 @@
1
1
  // This file is automatically generated by internal/scripts/refresh-assets.ts.
2
2
  // Do not edit manually. Or do, I'm a comment, not a cop.
3
3
 
4
- export const version = '3.16.0-canary.9d418d03374a'
4
+ export const version = '3.16.0-canary.9e28d92565ca'
5
5
  export const publishDates = {
6
6
  major: '2024-09-13T14:36:29.063Z',
7
- minor: '2025-09-05T08:44:04.969Z',
8
- patch: '2025-09-05T08:44:04.969Z',
7
+ minor: '2025-09-18T12:01:01.351Z',
8
+ patch: '2025-09-18T12:01:01.351Z',
9
9
  }
package/src/lib/ui.css CHANGED
@@ -168,7 +168,7 @@
168
168
  min-height: 40px;
169
169
  width: 100%;
170
170
  gap: 8px;
171
- margin: -4px 0px;
171
+ margin-top: -4px;
172
172
  }
173
173
 
174
174
  .tlui-button__menu::after {
@@ -494,6 +494,10 @@
494
494
  -webkit-user-select: auto !important;
495
495
  }
496
496
 
497
+ .tlui-input::placeholder {
498
+ color: var(--tl-color-text-3);
499
+ }
500
+
497
501
  .tlui-input__wrapper {
498
502
  width: 100%;
499
503
  height: 44px;
@@ -578,6 +582,12 @@
578
582
  box-shadow: var(--tl-shadow-3);
579
583
  }
580
584
 
585
+ @media (max-height: 600px) {
586
+ .tlui-menu {
587
+ max-height: 70vh;
588
+ }
589
+ }
590
+
581
591
  .tlui-menu::-webkit-scrollbar {
582
592
  display: none;
583
593
  }
@@ -1029,6 +1039,19 @@ tldraw? probably.
1029
1039
  display: none;
1030
1040
  }
1031
1041
 
1042
+ /*
1043
+ * This is used in a couple places, like Align and Vertical Align.
1044
+ * It's because we have a toolbar with a Toggle Group but then an adjacent button
1045
+ * next to it that opens a popup.
1046
+ */
1047
+ .tlui-style-panel__section .tlui-toolbar:has(.tlui-toolbar) {
1048
+ flex-wrap: wrap;
1049
+ }
1050
+
1051
+ .tlui-style-panel__section .tlui-toolbar:has(.tlui-toolbar) .tlui-style-panel__subheading {
1052
+ margin-left: -2px;
1053
+ }
1054
+
1032
1055
  .tlui-style-panel__section__common:not(:only-child) {
1033
1056
  margin-bottom: 7px;
1034
1057
  border-bottom: 1px solid var(--tl-color-divider);
@@ -86,8 +86,14 @@ export class TestEditor extends Editor {
86
86
  elm.tabIndex = 0
87
87
  elm.getBoundingClientRect = () => bounds as DOMRect
88
88
 
89
- const shapeUtilsWithDefaults = [...defaultShapeUtils, ...(options.shapeUtils ?? [])]
90
- const bindingUtilsWithDefaults = [...defaultBindingUtils, ...(options.bindingUtils ?? [])]
89
+ const shapeUtilsWithDefaults = [
90
+ ...defaultShapeUtils.filter((s) => !options.shapeUtils?.some((su) => su.type === s.type)),
91
+ ...(options.shapeUtils ?? []),
92
+ ]
93
+ const bindingUtilsWithDefaults = [
94
+ ...defaultBindingUtils.filter((b) => !options.bindingUtils?.some((bu) => bu.type === b.type)),
95
+ ...(options.bindingUtils ?? []),
96
+ ]
91
97
 
92
98
  super({
93
99
  ...options,
@@ -1,12 +1,50 @@
1
- import { Box, TLShapeId, createShapeId } from '@tldraw/editor'
1
+ import {
2
+ BaseBoxShapeUtil,
3
+ Box,
4
+ RecordProps,
5
+ T,
6
+ TLBaseShape,
7
+ TLShapeId,
8
+ createShapeId,
9
+ } from '@tldraw/editor'
2
10
  import { vi } from 'vitest'
3
11
  import { TestEditor } from './TestEditor'
4
12
  import { TL } from './test-jsx'
5
13
 
14
+ // Custom uncullable shape type for testing canCull override
15
+ type UncullableShape = TLBaseShape<'uncullable', { w: number; h: number }>
16
+
17
+ class UncullableShapeUtil extends BaseBoxShapeUtil<UncullableShape> {
18
+ static override type = 'uncullable' as const
19
+ static override props: RecordProps<UncullableShape> = {
20
+ w: T.number,
21
+ h: T.number,
22
+ }
23
+
24
+ override canCull() {
25
+ return false
26
+ }
27
+
28
+ override getDefaultProps(): UncullableShape['props'] {
29
+ return {
30
+ w: 100,
31
+ h: 100,
32
+ }
33
+ }
34
+
35
+ override component() {
36
+ return <div>Uncullable shape</div>
37
+ }
38
+
39
+ override indicator() {
40
+ return <div>Uncullable shape</div>
41
+ }
42
+ }
43
+
6
44
  let editor: TestEditor
7
45
 
8
46
  beforeEach(() => {
9
- editor = new TestEditor()
47
+ editor = new TestEditor({ shapeUtils: [UncullableShapeUtil] })
10
48
  editor.setScreenBounds({ x: 0, y: 0, w: 1800, h: 900 })
11
49
  })
12
50
 
@@ -203,3 +241,34 @@ it('works for shapes that are outside of the viewport, but are then moved inside
203
241
  // Arrow should also not be culled
204
242
  expect(editor.getCulledShapes()).toEqual(new Set())
205
243
  })
244
+
245
+ it('respects canCull override - shapes that cannot be culled are never culled', () => {
246
+ const cullableShapeId = createShapeId()
247
+ const uncullableShapeId = createShapeId()
248
+
249
+ // Create both shapes outside the viewport
250
+ editor.createShapes([
251
+ {
252
+ id: cullableShapeId,
253
+ type: 'geo',
254
+ x: -2000, // Way outside viewport
255
+ y: -2000,
256
+ props: { w: 100, h: 100 },
257
+ },
258
+ {
259
+ id: uncullableShapeId,
260
+ type: 'uncullable',
261
+ x: -2000, // Way outside viewport
262
+ y: -2000,
263
+ props: { w: 100, h: 100 },
264
+ },
265
+ ])
266
+
267
+ const culledShapes = editor.getCulledShapes()
268
+
269
+ // The regular geo shape should be culled since it's outside the viewport
270
+ expect(culledShapes).toContain(cullableShapeId)
271
+
272
+ // The uncullable shape should NOT be culled even though it's outside the viewport
273
+ expect(culledShapes).not.toContain(uncullableShapeId)
274
+ })
package/tldraw.css CHANGED
@@ -693,11 +693,17 @@ input,
693
693
  }
694
694
 
695
695
  .tl-text-measure {
696
- position: absolute;
697
696
  z-index: var(--tl-layer-canvas-hidden);
697
+ opacity: 0;
698
+ visibility: hidden;
699
+
700
+ /* pointer-events: all; */
701
+ /* opacity: 1; */
702
+ /* z-index: 99999; */
703
+
704
+ position: absolute;
698
705
  top: 0px;
699
706
  left: 0px;
700
- opacity: 0;
701
707
  width: max-content;
702
708
  box-sizing: border-box;
703
709
  pointer-events: none;
@@ -708,7 +714,6 @@ input,
708
714
  border: none;
709
715
  user-select: none;
710
716
  contain: style paint;
711
- visibility: hidden;
712
717
  /* N.B. This property, while discouraged ("intended for Document Type Definition (DTD) designers") is necessary for ensuring correct mixed RTL/LTR behavior when exporting SVGs. */
713
718
  unicode-bidi: plaintext;
714
719
  -webkit-user-select: none;
@@ -1959,7 +1964,7 @@ it from receiving any pointer events or affecting the cursor. */
1959
1964
  min-height: 40px;
1960
1965
  width: 100%;
1961
1966
  gap: 8px;
1962
- margin: -4px 0px;
1967
+ margin-top: -4px;
1963
1968
  }
1964
1969
 
1965
1970
  .tlui-button__menu::after {
@@ -2285,6 +2290,10 @@ it from receiving any pointer events or affecting the cursor. */
2285
2290
  -webkit-user-select: auto !important;
2286
2291
  }
2287
2292
 
2293
+ .tlui-input::placeholder {
2294
+ color: var(--tl-color-text-3);
2295
+ }
2296
+
2288
2297
  .tlui-input__wrapper {
2289
2298
  width: 100%;
2290
2299
  height: 44px;
@@ -2369,6 +2378,12 @@ it from receiving any pointer events or affecting the cursor. */
2369
2378
  box-shadow: var(--tl-shadow-3);
2370
2379
  }
2371
2380
 
2381
+ @media (max-height: 600px) {
2382
+ .tlui-menu {
2383
+ max-height: 70vh;
2384
+ }
2385
+ }
2386
+
2372
2387
  .tlui-menu::-webkit-scrollbar {
2373
2388
  display: none;
2374
2389
  }
@@ -2820,6 +2835,19 @@ tldraw? probably.
2820
2835
  display: none;
2821
2836
  }
2822
2837
 
2838
+ /*
2839
+ * This is used in a couple places, like Align and Vertical Align.
2840
+ * It's because we have a toolbar with a Toggle Group but then an adjacent button
2841
+ * next to it that opens a popup.
2842
+ */
2843
+ .tlui-style-panel__section .tlui-toolbar:has(.tlui-toolbar) {
2844
+ flex-wrap: wrap;
2845
+ }
2846
+
2847
+ .tlui-style-panel__section .tlui-toolbar:has(.tlui-toolbar) .tlui-style-panel__subheading {
2848
+ margin-left: -2px;
2849
+ }
2850
+
2823
2851
  .tlui-style-panel__section__common:not(:only-child) {
2824
2852
  margin-bottom: 7px;
2825
2853
  border-bottom: 1px solid var(--tl-color-divider);