tldraw 3.15.0-next.032b45f439ca → 3.15.0-next.6032a20bb23f

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 (110) hide show
  1. package/dist-cjs/index.d.ts +16 -8
  2. package/dist-cjs/index.js +2 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawImage.js +5 -2
  5. package/dist-cjs/lib/TldrawImage.js.map +3 -3
  6. package/dist-cjs/lib/canvas/TldrawCropHandles.js +1 -1
  7. package/dist-cjs/lib/canvas/TldrawCropHandles.js.map +2 -2
  8. package/dist-cjs/lib/canvas/TldrawHandles.js +1 -1
  9. package/dist-cjs/lib/canvas/TldrawHandles.js.map +2 -2
  10. package/dist-cjs/lib/canvas/TldrawOverlays.js +1 -1
  11. package/dist-cjs/lib/canvas/TldrawOverlays.js.map +2 -2
  12. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +279 -271
  13. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +2 -2
  14. package/dist-cjs/lib/shapes/shared/PathBuilder.js +21 -3
  15. package/dist-cjs/lib/shapes/shared/PathBuilder.js.map +2 -2
  16. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -0
  17. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
  18. package/dist-cjs/lib/shapes/shared/RichTextLabel.js +1 -0
  19. package/dist-cjs/lib/shapes/shared/RichTextLabel.js.map +2 -2
  20. package/dist-cjs/lib/styles.js.map +2 -2
  21. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js +3 -4
  22. package/dist-cjs/lib/ui/components/NavigationPanel/DefaultNavigationPanel.js.map +2 -2
  23. package/dist-cjs/lib/ui/components/Spinner.js +2 -25
  24. package/dist-cjs/lib/ui/components/Spinner.js.map +2 -2
  25. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +2 -1
  26. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
  27. package/dist-cjs/lib/ui/components/primitives/Button/TldrawUiButtonIcon.js.map +2 -2
  28. package/dist-cjs/lib/ui/components/primitives/TldrawUiDialog.js +1 -1
  29. package/dist-cjs/lib/ui/components/primitives/TldrawUiDialog.js.map +2 -2
  30. package/dist-cjs/lib/ui/components/primitives/TldrawUiIcon.js +35 -1
  31. package/dist-cjs/lib/ui/components/primitives/TldrawUiIcon.js.map +2 -2
  32. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +5 -2
  33. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
  34. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +1 -0
  35. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
  36. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.js.map +2 -2
  37. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuItem.js.map +2 -2
  38. package/dist-cjs/lib/ui/context/actions.js.map +1 -1
  39. package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
  40. package/dist-cjs/lib/ui/version.js +3 -3
  41. package/dist-cjs/lib/ui/version.js.map +1 -1
  42. package/dist-esm/index.d.mts +16 -8
  43. package/dist-esm/index.mjs +6 -2
  44. package/dist-esm/index.mjs.map +2 -2
  45. package/dist-esm/lib/TldrawImage.mjs +5 -2
  46. package/dist-esm/lib/TldrawImage.mjs.map +2 -2
  47. package/dist-esm/lib/canvas/TldrawCropHandles.mjs +1 -1
  48. package/dist-esm/lib/canvas/TldrawCropHandles.mjs.map +2 -2
  49. package/dist-esm/lib/canvas/TldrawHandles.mjs +1 -1
  50. package/dist-esm/lib/canvas/TldrawHandles.mjs.map +2 -2
  51. package/dist-esm/lib/canvas/TldrawOverlays.mjs +1 -1
  52. package/dist-esm/lib/canvas/TldrawOverlays.mjs.map +2 -2
  53. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +279 -271
  54. package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +2 -2
  55. package/dist-esm/lib/shapes/shared/PathBuilder.mjs +22 -3
  56. package/dist-esm/lib/shapes/shared/PathBuilder.mjs.map +2 -2
  57. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs +1 -0
  58. package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
  59. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs +1 -0
  60. package/dist-esm/lib/shapes/shared/RichTextLabel.mjs.map +2 -2
  61. package/dist-esm/lib/styles.mjs.map +2 -2
  62. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs +3 -4
  63. package/dist-esm/lib/ui/components/NavigationPanel/DefaultNavigationPanel.mjs.map +2 -2
  64. package/dist-esm/lib/ui/components/Spinner.mjs +3 -26
  65. package/dist-esm/lib/ui/components/Spinner.mjs.map +2 -2
  66. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +2 -1
  67. package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
  68. package/dist-esm/lib/ui/components/primitives/Button/TldrawUiButtonIcon.mjs.map +2 -2
  69. package/dist-esm/lib/ui/components/primitives/TldrawUiDialog.mjs +1 -1
  70. package/dist-esm/lib/ui/components/primitives/TldrawUiDialog.mjs.map +2 -2
  71. package/dist-esm/lib/ui/components/primitives/TldrawUiIcon.mjs +36 -2
  72. package/dist-esm/lib/ui/components/primitives/TldrawUiIcon.mjs.map +2 -2
  73. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +5 -2
  74. package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
  75. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +1 -0
  76. package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
  77. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.mjs.map +2 -2
  78. package/dist-esm/lib/ui/components/primitives/menus/TldrawUiMenuItem.mjs.map +2 -2
  79. package/dist-esm/lib/ui/context/actions.mjs.map +1 -1
  80. package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
  81. package/dist-esm/lib/ui/version.mjs +3 -3
  82. package/dist-esm/lib/ui/version.mjs.map +1 -1
  83. package/package.json +4 -3
  84. package/src/index.ts +6 -1
  85. package/src/lib/TldrawImage.tsx +6 -2
  86. package/src/lib/canvas/TldrawCropHandles.tsx +1 -1
  87. package/src/lib/canvas/TldrawHandles.tsx +5 -1
  88. package/src/lib/canvas/TldrawOverlays.tsx +1 -1
  89. package/src/lib/canvas/TldrawSelectionForeground.tsx +5 -1
  90. package/src/lib/shapes/shared/PathBuilder.test.tsx +1 -1
  91. package/src/lib/shapes/shared/PathBuilder.tsx +35 -1
  92. package/src/lib/shapes/shared/PlainTextLabel.tsx +1 -0
  93. package/src/lib/shapes/shared/RichTextLabel.tsx +1 -0
  94. package/src/lib/styles.tsx +3 -1
  95. package/src/lib/ui/components/NavigationPanel/DefaultNavigationPanel.tsx +3 -4
  96. package/src/lib/ui/components/Spinner.tsx +2 -24
  97. package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +1 -0
  98. package/src/lib/ui/components/primitives/Button/TldrawUiButtonIcon.tsx +2 -2
  99. package/src/lib/ui/components/primitives/TldrawUiDialog.tsx +1 -1
  100. package/src/lib/ui/components/primitives/TldrawUiIcon.tsx +41 -3
  101. package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +5 -1
  102. package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +4 -0
  103. package/src/lib/ui/components/primitives/menus/TldrawUiMenuCheckboxItem.tsx +2 -2
  104. package/src/lib/ui/components/primitives/menus/TldrawUiMenuItem.tsx +3 -2
  105. package/src/lib/ui/context/actions.tsx +1 -1
  106. package/src/lib/ui/hooks/useTools.tsx +2 -1
  107. package/src/lib/ui/version.ts +3 -3
  108. package/src/lib/ui.css +8 -22
  109. package/src/test/navigation.test.ts +254 -0
  110. package/tldraw.css +25 -26
@@ -414,6 +414,260 @@ describe('Shape navigation', () => {
414
414
  expect(editor.getSelectedShapeIds()).toEqual([])
415
415
  })
416
416
 
417
+ it('respects container boundaries when navigating with left/right', () => {
418
+ // Create a frame with shapes inside and shapes outside
419
+ editor.createShapes([
420
+ {
421
+ id: ids.frame1,
422
+ type: 'frame',
423
+ x: 0,
424
+ y: 0,
425
+ props: {
426
+ w: 200,
427
+ h: 200,
428
+ },
429
+ },
430
+ // Shapes inside frame
431
+ {
432
+ id: ids.box1,
433
+ type: 'geo',
434
+ x: 10,
435
+ y: 100,
436
+ parentId: ids.frame1,
437
+ props: {
438
+ w: 30,
439
+ h: 30,
440
+ },
441
+ },
442
+ {
443
+ id: ids.box2,
444
+ type: 'geo',
445
+ x: 50,
446
+ y: 100,
447
+ parentId: ids.frame1,
448
+ props: {
449
+ w: 30,
450
+ h: 30,
451
+ },
452
+ },
453
+ {
454
+ id: ids.box3,
455
+ type: 'geo',
456
+ x: 90,
457
+ y: 100,
458
+ parentId: ids.frame1,
459
+ props: {
460
+ w: 30,
461
+ h: 30,
462
+ },
463
+ },
464
+ // Shapes outside frame
465
+ {
466
+ id: ids.box4,
467
+ type: 'geo',
468
+ x: 300,
469
+ y: 100,
470
+ props: {
471
+ w: 30,
472
+ h: 30,
473
+ },
474
+ },
475
+ {
476
+ id: ids.box5,
477
+ type: 'geo',
478
+ x: 350,
479
+ y: 100,
480
+ props: {
481
+ w: 30,
482
+ h: 30,
483
+ },
484
+ },
485
+ ])
486
+
487
+ // Setup shape centers for consistent testing
488
+ jest.spyOn(editor, 'getShapePageBounds').mockImplementation((shape: any) => {
489
+ const positions = {
490
+ [ids.box1]: { x: 25, y: 115 },
491
+ [ids.box2]: { x: 65, y: 115 },
492
+ [ids.box3]: { x: 105, y: 115 },
493
+ [ids.box4]: { x: 315, y: 115 },
494
+ [ids.box5]: { x: 365, y: 115 },
495
+ }
496
+ const pos = positions[shape?.id as keyof typeof positions]
497
+ return pos ? ({ center: pos } as any) : ({ center: { x: 0, y: 0 } } as any)
498
+ })
499
+
500
+ // Select a shape inside the frame
501
+ editor.select(ids.box1)
502
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
503
+
504
+ // Navigate right - should stay within the frame
505
+ editor.selectAdjacentShape('right')
506
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box2])
507
+
508
+ // Continue navigating right - should still stay within the frame
509
+ editor.selectAdjacentShape('right')
510
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box3])
511
+
512
+ // Navigate right again - should not leave the frame to go to box4
513
+ editor.selectAdjacentShape('right')
514
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box3]) // Should stay at box3
515
+
516
+ // Now navigate left to test the other direction
517
+ editor.selectAdjacentShape('left')
518
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box2])
519
+
520
+ editor.selectAdjacentShape('left')
521
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
522
+
523
+ // Navigate left again - should not leave the frame
524
+ editor.selectAdjacentShape('left')
525
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box1]) // Should stay at box1
526
+
527
+ // Now test navigation outside the frame
528
+ editor.select(ids.box4)
529
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box4])
530
+
531
+ // Navigate right - should move to box5
532
+ editor.selectAdjacentShape('right')
533
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box5])
534
+
535
+ // Navigate left - should move back to box4
536
+ editor.selectAdjacentShape('left')
537
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box4])
538
+
539
+ // Navigate left again - should select the frame (nearest shape to the left)
540
+ editor.selectAdjacentShape('left')
541
+ expect(editor.getSelectedShapeIds()).toEqual([ids.frame1]) // Should select frame1
542
+ })
543
+
544
+ it('respects container boundaries when navigating with up/down', () => {
545
+ // Create a frame with shapes inside and shapes outside
546
+ editor.createShapes([
547
+ {
548
+ id: ids.frame1,
549
+ type: 'frame',
550
+ x: 0,
551
+ y: 0,
552
+ props: {
553
+ w: 200,
554
+ h: 200,
555
+ },
556
+ },
557
+ // Shapes inside frame - vertically arranged
558
+ {
559
+ id: ids.box1,
560
+ type: 'geo',
561
+ x: 100,
562
+ y: 10,
563
+ parentId: ids.frame1,
564
+ props: {
565
+ w: 30,
566
+ h: 30,
567
+ },
568
+ },
569
+ {
570
+ id: ids.box2,
571
+ type: 'geo',
572
+ x: 100,
573
+ y: 50,
574
+ parentId: ids.frame1,
575
+ props: {
576
+ w: 30,
577
+ h: 30,
578
+ },
579
+ },
580
+ {
581
+ id: ids.box3,
582
+ type: 'geo',
583
+ x: 100,
584
+ y: 90,
585
+ parentId: ids.frame1,
586
+ props: {
587
+ w: 30,
588
+ h: 30,
589
+ },
590
+ },
591
+ // Shapes outside frame - vertically arranged
592
+ {
593
+ id: ids.box4,
594
+ type: 'geo',
595
+ x: 300,
596
+ y: 10,
597
+ props: {
598
+ w: 30,
599
+ h: 30,
600
+ },
601
+ },
602
+ {
603
+ id: ids.box5,
604
+ type: 'geo',
605
+ x: 300,
606
+ y: 50,
607
+ props: {
608
+ w: 30,
609
+ h: 30,
610
+ },
611
+ },
612
+ ])
613
+
614
+ // Setup shape centers for consistent testing
615
+ jest.spyOn(editor, 'getShapePageBounds').mockImplementation((shape: any) => {
616
+ const positions = {
617
+ [ids.box1]: { x: 115, y: 25 },
618
+ [ids.box2]: { x: 115, y: 65 },
619
+ [ids.box3]: { x: 115, y: 105 },
620
+ [ids.box4]: { x: 315, y: 25 },
621
+ [ids.box5]: { x: 315, y: 65 },
622
+ }
623
+ const pos = positions[shape?.id as keyof typeof positions]
624
+ return pos ? ({ center: pos } as any) : ({ center: { x: 0, y: 0 } } as any)
625
+ })
626
+
627
+ // Select a shape inside the frame
628
+ editor.select(ids.box1)
629
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
630
+
631
+ // Navigate down - should stay within the frame
632
+ editor.selectAdjacentShape('down')
633
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box2])
634
+
635
+ // Continue navigating down - should still stay within the frame
636
+ editor.selectAdjacentShape('down')
637
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box3])
638
+
639
+ // Navigate down again - should not leave the frame
640
+ editor.selectAdjacentShape('down')
641
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box3]) // Should stay at box3
642
+
643
+ // Now navigate up to test the other direction
644
+ editor.selectAdjacentShape('up')
645
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box2])
646
+
647
+ editor.selectAdjacentShape('up')
648
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
649
+
650
+ // Navigate up again - should not leave the frame
651
+ editor.selectAdjacentShape('up')
652
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box1]) // Should stay at box1
653
+
654
+ // Now test navigation outside the frame
655
+ editor.select(ids.box4)
656
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box4])
657
+
658
+ // Navigate down - should move to box5
659
+ editor.selectAdjacentShape('down')
660
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box5])
661
+
662
+ // Navigate up - should move back to box4
663
+ editor.selectAdjacentShape('up')
664
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box4])
665
+
666
+ // Navigate up again - should not enter the frame
667
+ editor.selectAdjacentShape('up')
668
+ expect(editor.getSelectedShapeIds()).toEqual([ids.box4]) // Should stay at box4
669
+ })
670
+
417
671
  it('respects container boundaries when navigating with Tab', () => {
418
672
  // Create a frame with shapes inside and shapes outside
419
673
  editor.createShapes([
package/tldraw.css CHANGED
@@ -171,7 +171,7 @@
171
171
  --color-text: hsl(0, 0%, 0%);
172
172
  --color-text-0: hsl(0, 0%, 11%);
173
173
  --color-text-1: hsl(0, 0%, 18%);
174
- --color-text-3: hsl(220, 2%, 65%);
174
+ --color-text-3: hsl(204, 4%, 45%);
175
175
  --color-text-shadow: hsl(0, 0%, 100%);
176
176
  --color-text-highlight: hsl(52, 100%, 50%);
177
177
  --color-text-highlight-p3: color(display-p3 0.972 0.8205 0.05);
@@ -226,7 +226,7 @@
226
226
  --color-text: hsl(210, 17%, 98%);
227
227
  --color-text-0: hsl(0, 9%, 94%);
228
228
  --color-text-1: hsl(0, 0%, 85%);
229
- --color-text-3: hsl(210, 6%, 45%);
229
+ --color-text-3: hsl(204, 4%, 75%);
230
230
  --color-text-shadow: hsl(210, 13%, 18%);
231
231
  --color-text-highlight: hsl(52, 100%, 41%);
232
232
  --color-text-highlight-p3: color(display-p3 0.8078 0.6225 0.0312);
@@ -972,14 +972,14 @@ input,
972
972
  font-size: 14px;
973
973
  font-weight: 500;
974
974
  opacity: 0;
975
- animation: fade-in 0.2s ease-in-out forwards;
975
+ animation: tl-fade-in 0.2s ease-in-out forwards;
976
976
  animation-delay: 0.2s;
977
977
  position: absolute;
978
978
  inset: 0px;
979
979
  z-index: var(--layer-canvas-blocker);
980
980
  }
981
981
 
982
- @keyframes fade-in {
982
+ @keyframes tl-fade-in {
983
983
  0% {
984
984
  opacity: 0;
985
985
  }
@@ -988,6 +988,19 @@ input,
988
988
  }
989
989
  }
990
990
 
991
+ .tl-spinner {
992
+ animation: tl-spin 1s linear infinite;
993
+ }
994
+
995
+ @keyframes tl-spin {
996
+ 0% {
997
+ transform: rotate(0deg);
998
+ }
999
+ 100% {
1000
+ transform: rotate(360deg);
1001
+ }
1002
+ }
1003
+
991
1004
  /* ---------------------- Brush --------------------- */
992
1005
 
993
1006
  .tl-brush {
@@ -2748,7 +2761,7 @@ it from receiving any pointer events or affecting the cursor. */
2748
2761
  justify-content: center;
2749
2762
  border-radius: 99px;
2750
2763
  opacity: 0;
2751
- animation: fade-in;
2764
+ animation: tl-fade-in;
2752
2765
  animation-duration: 0.12s;
2753
2766
  animation-delay: 2s;
2754
2767
  animation-fill-mode: forwards;
@@ -2892,20 +2905,6 @@ it from receiving any pointer events or affecting the cursor. */
2892
2905
  display: none;
2893
2906
  }
2894
2907
 
2895
- .tlui-navigation-panel__toggle .tlui-icon {
2896
- opacity: 0.24;
2897
- }
2898
-
2899
- .tlui-navigation-panel__toggle:active .tlui-icon {
2900
- opacity: 1;
2901
- }
2902
-
2903
- @media (hover: hover) {
2904
- .tlui-navigation-panel__toggle:hover .tlui-icon {
2905
- opacity: 1;
2906
- }
2907
- }
2908
-
2909
2908
  /* Minimap */
2910
2909
 
2911
2910
  .tlui-minimap {
@@ -3163,11 +3162,11 @@ it from receiving any pointer events or affecting the cursor. */
3163
3162
 
3164
3163
  @media (prefers-reduced-motion: no-preference) {
3165
3164
  .tlui-toast__container[data-state='open'] {
3166
- animation: slide-in 200ms cubic-bezier(0.785, 0.135, 0.15, 0.86);
3165
+ animation: tlui-slide-in 200ms cubic-bezier(0.785, 0.135, 0.15, 0.86);
3167
3166
  }
3168
3167
 
3169
3168
  .tlui-toast__container[data-state='closed'] {
3170
- animation: hide 100ms ease-in;
3169
+ animation: tlui-fade-out 100ms ease-in;
3171
3170
  }
3172
3171
 
3173
3172
  .tlui-toast__container[data-swipe='move'] {
@@ -3180,7 +3179,7 @@ it from receiving any pointer events or affecting the cursor. */
3180
3179
  }
3181
3180
 
3182
3181
  .tlui-toast__container[data-swipe='end'] {
3183
- animation: swipe-out 100ms ease-out;
3182
+ animation: tlui-slide-out 100ms ease-out;
3184
3183
  }
3185
3184
  }
3186
3185
 
@@ -3195,7 +3194,7 @@ it from receiving any pointer events or affecting the cursor. */
3195
3194
  z-index: var(--layer-canvas-overlays);
3196
3195
  background-color: var(--color-overlay);
3197
3196
  pointer-events: all;
3198
- animation: fadeIn 0.12s ease-out;
3197
+ animation: tl-fade-in 0.12s ease-out;
3199
3198
  display: grid;
3200
3199
  place-items: center;
3201
3200
  overflow-y: auto;
@@ -3762,7 +3761,7 @@ it from receiving any pointer events or affecting the cursor. */
3762
3761
  }
3763
3762
 
3764
3763
  /* ------------------- Animations ------------------- */
3765
- @keyframes hide {
3764
+ @keyframes tlui-fade-out {
3766
3765
  0% {
3767
3766
  opacity: 1;
3768
3767
  }
@@ -3771,7 +3770,7 @@ it from receiving any pointer events or affecting the cursor. */
3771
3770
  }
3772
3771
  }
3773
3772
 
3774
- @keyframes slide-in {
3773
+ @keyframes tlui-slide-in {
3775
3774
  from {
3776
3775
  transform: translateX(calc(100% + var(--space-3)));
3777
3776
  }
@@ -3780,7 +3779,7 @@ it from receiving any pointer events or affecting the cursor. */
3780
3779
  }
3781
3780
  }
3782
3781
 
3783
- @keyframes swipe-out {
3782
+ @keyframes tlui-slide-out {
3784
3783
  from {
3785
3784
  transform: translateX(var(--radix-toast-swipe-end-x));
3786
3785
  }