@tldraw/tldraw 5.3.0-internal.fba91ed55f6c → 5.3.0-next.0362a8b4a246

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.
package/dist-cjs/index.js CHANGED
@@ -19,7 +19,7 @@ var import_tldraw = require("tldraw");
19
19
  __reExport(index_exports, require("tldraw"), module.exports);
20
20
  (0, import_tldraw.registerTldrawLibraryVersion)(
21
21
  "@tldraw/tldraw",
22
- "5.3.0-internal.fba91ed55f6c",
22
+ "5.3.0-next.0362a8b4a246",
23
23
  "cjs"
24
24
  );
25
25
  //# sourceMappingURL=index.js.map
@@ -2,7 +2,7 @@ import { registerTldrawLibraryVersion } from "tldraw";
2
2
  export * from "tldraw";
3
3
  registerTldrawLibraryVersion(
4
4
  "@tldraw/tldraw",
5
- "5.3.0-internal.fba91ed55f6c",
5
+ "5.3.0-next.0362a8b4a246",
6
6
  "esm"
7
7
  );
8
8
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tldraw/tldraw",
3
3
  "description": "A tiny little drawing editor.",
4
- "version": "5.3.0-internal.fba91ed55f6c",
4
+ "version": "5.3.0-next.0362a8b4a246",
5
5
  "author": {
6
6
  "name": "tldraw Inc.",
7
7
  "email": "hello@tldraw.com"
@@ -47,7 +47,7 @@
47
47
  "src"
48
48
  ],
49
49
  "dependencies": {
50
- "tldraw": "5.3.0-internal.fba91ed55f6c"
50
+ "tldraw": "5.3.0-next.0362a8b4a246"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "react": "^18.2.0 || ^19.2.1",
package/tldraw.css CHANGED
@@ -33,15 +33,20 @@
33
33
  * background, grid, shapes, overlays, and blocker are all children of .tl-canvas,
34
34
  * so their z-indices are relative to the canvas, not the container.
35
35
  *
36
- * watermark and canvas-in-front are siblings of .tl-canvas (outside it),
37
- * so they compete with the UI layer (.tlui-layout at z-index 300).
36
+ * collaborators, watermark, and canvas-in-front are siblings of .tl-canvas
37
+ * (outside it), so they compete with the UI layer (.tlui-layout at z-index 300).
38
38
  * canvas-in-front must be below the UI layer (300) to sit between
39
- * the canvas and the UI.
39
+ * the canvas and the UI; collaborator cursors sit above canvas content
40
+ * (and layers that anchor to it, like comment pins) but below the
41
+ * in-front content and the UI panels. The watermark (a licensing element)
42
+ * sits above that content so it can't be occluded, but still below the
43
+ * in-front content and the UI.
40
44
  */
41
45
  --tl-layer-canvas-hidden: -999999;
42
46
  --tl-layer-canvas-background: 100;
43
47
  --tl-layer-canvas-grid: 150;
44
- --tl-layer-watermark: 200;
48
+ --tl-layer-collaborators: 245;
49
+ --tl-layer-watermark: 248;
45
50
  --tl-layer-canvas-in-front: 250;
46
51
  --tl-layer-canvas-shapes: 300;
47
52
  --tl-layer-canvas-overlays: 500;
@@ -90,6 +95,10 @@
90
95
  url("data:image/svg+xml,<svg height='32' width='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg' style='color: black;'><defs><filter id='shadow' y='-40%' x='-40%' width='180px' height='180%' color-interpolation-filters='sRGB'><feDropShadow dx='1' dy='1' stdDeviation='1.2' flood-opacity='.5'/></filter></defs><g fill='none' transform='rotate(0 16 16)' filter='url(%23shadow)'><path d='m25 16h-6.01v-6h-2.98v6h-6.01v3h6.01v6h2.98v-6h6.01z' fill='white'/><path d='m23.9902 17.0103h-6v-6.01h-.98v6.01h-6v.98h6v6.01h.98v-6.01h6z' fill='%23231f1f'/></g></svg>")
91
96
  16 16,
92
97
  crosshair;
98
+ --tl-cursor-comment:
99
+ url("data:image/svg+xml,<svg height='32' width='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'><defs><filter id='shadow' y='-40%' x='-40%' width='180px' height='180%' color-interpolation-filters='sRGB'><feDropShadow dx='1' dy='1' stdDeviation='1.2' flood-opacity='.5'/></filter></defs><g filter='url(%23shadow)'><path d='M5 19.5 L5 11 A8 8 0 0 1 13 3 A8 8 0 0 1 21 11 A8 8 0 0 1 13 19 Z' fill='white' stroke='black' stroke-width='1' stroke-linejoin='round'/></g></svg>")
100
+ 5 19,
101
+ crosshair;
93
102
  --tl-cursor-move:
94
103
  url("data:image/svg+xml,<svg height='32' width='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg' style='color: black;'><defs><filter id='shadow' y='-40%' x='-40%' width='180px' height='180%' color-interpolation-filters='sRGB'><feDropShadow dx='1' dy='1' stdDeviation='1.2' flood-opacity='.5'/></filter></defs><g fill='none' transform='rotate(0 16 16)' filter='url(%23shadow)'><path d='m19 14h1v1h-1zm1 6h-1v-1h1zm-5-5h-1v-1h1zm0 5h-1v-1h1zm2-10.987-7.985 7.988 5.222 5.221 2.763 2.763 7.984-7.985z' fill='white'/><g fill='black'><path d='m23.5664 16.9971-2.557-2.809v1.829h-4.009-4.001v-1.829l-2.571 2.809 2.572 2.808-.001-1.808h4.001 4.009l-.001 1.808z'/><path d='m17.9873 17h.013v-4.001l1.807.001-2.807-2.571-2.809 2.57h1.809v4.001h.008v4.002l-1.828-.001 2.807 2.577 2.805-2.576h-1.805z'/></g></g></svg>")
95
104
  16 16,
@@ -376,6 +385,30 @@ input,
376
385
  contain: layout style size;
377
386
  }
378
387
 
388
+ /* The collaborator cursor layer: a sibling of .tl-canvas, above all canvas content, below the
389
+ in-front layer (250) and the UI panels (300). Display-only — pointer events pass through. */
390
+ .tl-collaborators {
391
+ position: absolute;
392
+ inset: 0px;
393
+ z-index: var(--tl-layer-collaborators);
394
+ pointer-events: none;
395
+ overflow: clip;
396
+ contain: layout style size;
397
+ }
398
+
399
+ .tl-collaborators__item {
400
+ position: absolute;
401
+ top: 0px;
402
+ left: 0px;
403
+ overflow: visible;
404
+ pointer-events: none;
405
+ transform-origin: top left;
406
+ }
407
+
408
+ .tl-cursor {
409
+ overflow: visible;
410
+ }
411
+
379
412
  /* --------------- Overlay Stack --------------- */
380
413
 
381
414
  /* -------------- Selection foreground -------------- */
@@ -2123,6 +2156,14 @@ it from receiving any pointer events or affecting the cursor. */
2123
2156
  flex-shrink: 0;
2124
2157
  }
2125
2158
 
2159
+ /* The label is a fixed bit of chrome next to the input; it should never be squeezed. Without this,
2160
+ an inherited `overflow-wrap: anywhere` (e.g. from .tlui-dialog__body) drops its min-content width
2161
+ to a single character and short labels wrap mid-word, e.g. "URL" breaking after "UR". */
2162
+ .tlui-input__wrapper > label {
2163
+ flex-shrink: 0;
2164
+ overflow-wrap: normal;
2165
+ }
2166
+
2126
2167
  /* If mobile use 16px as font size */
2127
2168
  /* On iOS, font size under 16px in an input will make the page zoom into the input 🤦‍♂️ */
2128
2169
  /* https://css-tricks.com/16px-or-larger-text-prevents-ios-form-zoom/ */
@@ -2344,6 +2385,16 @@ it from receiving any pointer events or affecting the cursor. */
2344
2385
  -ms-overflow-style: none;
2345
2386
  }
2346
2387
 
2388
+ .tlui-hover-card__content {
2389
+ position: relative;
2390
+ margin: 0px;
2391
+ border: none;
2392
+ border-radius: var(--tl-radius-3);
2393
+ background-color: var(--tl-color-panel);
2394
+ box-shadow: var(--tl-shadow-3);
2395
+ z-index: var(--tl-layer-menus);
2396
+ }
2397
+
2347
2398
  /* -------------------- Menu Zone ------------------- */
2348
2399
 
2349
2400
  .tlui-menu-zone {
@@ -2814,6 +2865,7 @@ tldraw? probably.
2814
2865
  .tlui-layout__bottom {
2815
2866
  grid-row: 2;
2816
2867
  width: 100%;
2868
+ min-width: 0px;
2817
2869
  }
2818
2870
 
2819
2871
  .tlui-layout__bottom__main {