@tldraw/editor 3.16.0-next.eafb52d15064 → 3.16.0-next.fe14f1b4181f

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 (123) hide show
  1. package/dist-cjs/index.d.ts +30 -0
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/lib/TldrawEditor.js +6 -2
  4. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  5. package/dist-cjs/lib/components/MenuClickCapture.js +0 -5
  6. package/dist-cjs/lib/components/MenuClickCapture.js.map +2 -2
  7. package/dist-cjs/lib/components/Shape.js +7 -10
  8. package/dist-cjs/lib/components/Shape.js.map +2 -2
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +4 -23
  10. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  11. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  12. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +1 -1
  13. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  14. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  15. package/dist-cjs/lib/components/default-components/DefaultScribble.js +1 -1
  16. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
  17. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +9 -1
  18. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  19. package/dist-cjs/lib/config/TLUserPreferences.js +1 -1
  20. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  21. package/dist-cjs/lib/editor/Editor.js +44 -15
  22. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  23. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +1 -1
  24. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  25. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +13 -0
  26. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  27. package/dist-cjs/lib/exports/getSvgJsx.js +35 -16
  28. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  29. package/dist-cjs/lib/hooks/useCanvasEvents.js +31 -25
  30. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  31. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js +4 -1
  32. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  33. package/dist-cjs/lib/license/Watermark.js +6 -6
  34. package/dist-cjs/lib/license/Watermark.js.map +1 -1
  35. package/dist-cjs/lib/options.js +6 -0
  36. package/dist-cjs/lib/options.js.map +2 -2
  37. package/dist-cjs/lib/primitives/Box.js +3 -0
  38. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  39. package/dist-cjs/version.js +3 -3
  40. package/dist-cjs/version.js.map +1 -1
  41. package/dist-esm/index.d.mts +30 -0
  42. package/dist-esm/index.mjs +1 -1
  43. package/dist-esm/lib/TldrawEditor.mjs +6 -2
  44. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  45. package/dist-esm/lib/components/MenuClickCapture.mjs +0 -5
  46. package/dist-esm/lib/components/MenuClickCapture.mjs.map +2 -2
  47. package/dist-esm/lib/components/Shape.mjs +7 -10
  48. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  49. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +4 -23
  50. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  51. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  52. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +1 -1
  53. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  54. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  55. package/dist-esm/lib/components/default-components/DefaultScribble.mjs +1 -1
  56. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  57. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +9 -1
  58. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  59. package/dist-esm/lib/config/TLUserPreferences.mjs +1 -1
  60. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  61. package/dist-esm/lib/editor/Editor.mjs +44 -15
  62. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  63. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +1 -1
  64. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  65. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +13 -0
  66. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  67. package/dist-esm/lib/exports/getSvgJsx.mjs +36 -16
  68. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  69. package/dist-esm/lib/hooks/useCanvasEvents.mjs +32 -26
  70. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  71. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +4 -1
  72. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  73. package/dist-esm/lib/license/Watermark.mjs +6 -6
  74. package/dist-esm/lib/license/Watermark.mjs.map +1 -1
  75. package/dist-esm/lib/options.mjs +6 -0
  76. package/dist-esm/lib/options.mjs.map +2 -2
  77. package/dist-esm/lib/primitives/Box.mjs +4 -1
  78. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  79. package/dist-esm/version.mjs +3 -3
  80. package/dist-esm/version.mjs.map +1 -1
  81. package/editor.css +301 -290
  82. package/package.json +14 -37
  83. package/src/lib/TldrawEditor.tsx +11 -6
  84. package/src/lib/components/MenuClickCapture.tsx +0 -8
  85. package/src/lib/components/Shape.tsx +6 -12
  86. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -22
  87. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  88. package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
  89. package/src/lib/components/default-components/DefaultScribble.tsx +1 -1
  90. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +5 -1
  91. package/src/lib/config/TLUserPreferences.ts +1 -1
  92. package/src/lib/editor/Editor.test.ts +12 -11
  93. package/src/lib/editor/Editor.ts +55 -20
  94. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +15 -14
  95. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +16 -15
  96. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +49 -48
  97. package/src/lib/editor/managers/FontManager/FontManager.test.ts +24 -23
  98. package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +7 -6
  99. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +12 -11
  100. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +57 -50
  101. package/src/lib/editor/managers/TextManager/TextManager.test.ts +51 -26
  102. package/src/lib/editor/managers/TickManager/TickManager.test.ts +14 -13
  103. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +21 -26
  104. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +1 -1
  105. package/src/lib/editor/shapes/ShapeUtil.ts +14 -0
  106. package/src/lib/exports/getSvgJsx.test.ts +868 -0
  107. package/src/lib/exports/getSvgJsx.tsx +78 -21
  108. package/src/lib/hooks/useCanvasEvents.ts +45 -38
  109. package/src/lib/hooks/usePassThroughWheelEvents.ts +6 -1
  110. package/src/lib/license/LicenseManager.test.ts +3 -1
  111. package/src/lib/license/Watermark.test.tsx +2 -1
  112. package/src/lib/license/Watermark.tsx +6 -6
  113. package/src/lib/options.ts +6 -0
  114. package/src/lib/primitives/Box.test.ts +126 -0
  115. package/src/lib/primitives/Box.ts +10 -1
  116. package/src/lib/utils/sync/LocalIndexedDb.test.ts +2 -1
  117. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +15 -15
  118. package/src/version.ts +3 -3
  119. package/dist-cjs/lib/utils/nearestMultiple.js +0 -34
  120. package/dist-cjs/lib/utils/nearestMultiple.js.map +0 -7
  121. package/dist-esm/lib/utils/nearestMultiple.mjs +0 -14
  122. package/dist-esm/lib/utils/nearestMultiple.mjs.map +0 -7
  123. package/src/lib/utils/nearestMultiple.ts +0 -13
package/editor.css CHANGED
@@ -5,57 +5,58 @@
5
5
  height: 100%;
6
6
  font-size: 12px;
7
7
  /* Spacing */
8
- --space-1: 2px;
9
- --space-2: 4px;
10
- --space-3: 8px;
11
- --space-4: 12px;
12
- --space-5: 16px;
13
- --space-6: 20px;
14
- --space-7: 28px;
15
- --space-8: 32px;
16
- --space-9: 64px;
17
- --space-10: 72px;
8
+ --tl-space-1: 2px;
9
+ --tl-space-2: 4px;
10
+ --tl-space-3: 8px;
11
+ --tl-space-4: 12px;
12
+ --tl-space-5: 16px;
13
+ --tl-space-6: 20px;
14
+ --tl-space-7: 28px;
15
+ --tl-space-8: 32px;
16
+ --tl-space-9: 64px;
17
+ --tl-space-10: 72px;
18
18
  /* Radius */
19
- --radius-0: 2px;
20
- --radius-1: 4px;
21
- --radius-2: 6px;
22
- --radius-3: 9px;
23
- --radius-4: 11px;
19
+ --tl-radius-0: 2px;
20
+ --tl-radius-1: 4px;
21
+ --tl-radius-2: 6px;
22
+ --tl-radius-3: 9px;
23
+ --tl-radius-4: 11px;
24
24
 
25
25
  /* Canvas z-index */
26
- --layer-canvas-hidden: -999999;
27
- --layer-canvas-background: 100;
28
- --layer-canvas-grid: 150;
29
- --layer-watermark: 200;
30
- --layer-canvas-shapes: 300;
31
- --layer-canvas-overlays: 500;
32
- --layer-canvas-blocker: 10000;
26
+ --tl-layer-canvas-hidden: -999999;
27
+ --tl-layer-canvas-background: 100;
28
+ --tl-layer-canvas-grid: 150;
29
+ --tl-layer-watermark: 200;
30
+ --tl-layer-canvas-shapes: 300;
31
+ --tl-layer-canvas-overlays: 500;
32
+ --tl-layer-canvas-in-front: 600;
33
+ --tl-layer-canvas-blocker: 10000;
33
34
 
34
35
  /* Canvas overlays z-index */
35
- --layer-overlays-collaborator-scribble: 10;
36
- --layer-overlays-collaborator-brush: 20;
37
- --layer-overlays-collaborator-shape-indicator: 30;
38
- --layer-overlays-user-scribble: 40;
39
- --layer-overlays-user-brush: 50;
40
- --layer-overlays-user-snapline: 90;
41
- --layer-overlays-selection-fg: 100;
36
+ --tl-layer-overlays-collaborator-scribble: 10;
37
+ --tl-layer-overlays-collaborator-brush: 20;
38
+ --tl-layer-overlays-collaborator-shape-indicator: 30;
39
+ --tl-layer-overlays-user-scribble: 40;
40
+ --tl-layer-overlays-user-brush: 50;
41
+ --tl-layer-overlays-user-snapline: 90;
42
+ --tl-layer-overlays-selection-fg: 100;
42
43
  /* User handles need to be above selection edges / corners, matters for sticky note clone handles */
43
- --layer-overlays-user-handles: 105;
44
- --layer-overlays-user-indicator-hint: 110;
45
- --layer-overlays-custom: 115;
46
- --layer-overlays-collaborator-cursor-hint: 120;
47
- --layer-overlays-collaborator-cursor: 130;
44
+ --tl-layer-overlays-user-handles: 105;
45
+ --tl-layer-overlays-user-indicator-hint: 110;
46
+ --tl-layer-overlays-custom: 115;
47
+ --tl-layer-overlays-collaborator-cursor-hint: 120;
48
+ --tl-layer-overlays-collaborator-cursor: 130;
48
49
 
49
50
  /* Text editor z-index */
50
- --layer-text-container: 1;
51
- --layer-text-content: 3;
52
- --layer-text-editor: 4;
51
+ --tl-layer-text-container: 1;
52
+ --tl-layer-text-content: 3;
53
+ --tl-layer-text-editor: 4;
53
54
 
54
55
  /* Error fallback z-index */
55
- --layer-error-overlay: 1;
56
- --layer-error-canvas: 2;
57
- --layer-error-canvas-after: 3;
58
- --layer-error-content: 4;
56
+ --tl-layer-error-overlay: 1;
57
+ --tl-layer-error-canvas: 2;
58
+ --tl-layer-error-canvas-after: 3;
59
+ --tl-layer-error-content: 4;
59
60
 
60
61
  /* Misc */
61
62
  --tl-zoom: 1;
@@ -120,12 +121,15 @@
120
121
  --tl-font-serif: 'tldraw_serif', serif;
121
122
  --tl-font-mono: 'tldraw_mono', monospace;
122
123
  /* text outline */
123
- --a: calc(min(0.5, 1 / var(--tl-zoom)) * 2px);
124
- --b: calc(min(0.5, 1 / var(--tl-zoom)) * -2px);
124
+ --tl-text-outline-a: calc(min(0.5, 1 / var(--tl-zoom)) * 2px);
125
+ --tl-text-outline-b: calc(min(0.5, 1 / var(--tl-zoom)) * -2px);
125
126
  --tl-text-outline-reference:
126
- 0 var(--b) 0 var(--color-background), 0 var(--a) 0 var(--color-background),
127
- var(--b) var(--b) 0 var(--color-background), var(--a) var(--b) 0 var(--color-background),
128
- var(--a) var(--a) 0 var(--color-background), var(--b) var(--a) 0 var(--color-background);
127
+ 0 var(--tl-text-outline-b) 0 var(--tl-color-background),
128
+ 0 var(--tl-text-outline-a) 0 var(--tl-color-background),
129
+ var(--tl-text-outline-b) var(--tl-text-outline-b) 0 var(--tl-color-background),
130
+ var(--tl-text-outline-a) var(--tl-text-outline-b) 0 var(--tl-color-background),
131
+ var(--tl-text-outline-a) var(--tl-text-outline-a) 0 var(--tl-color-background),
132
+ var(--tl-text-outline-b) var(--tl-text-outline-a) 0 var(--tl-color-background);
129
133
  --tl-text-outline: var(--tl-text-outline-reference);
130
134
  /* own properties */
131
135
  position: relative;
@@ -133,118 +137,118 @@
133
137
  height: 100%;
134
138
  width: 100%;
135
139
  overflow: clip;
136
- color: var(--color-text);
140
+ color: var(--tl-color-text);
137
141
  }
138
142
 
139
143
  .tl-theme__light {
140
144
  /* Canvas */
141
- --color-snap: hsl(0, 76%, 60%);
142
- --color-selection-fill: hsl(210, 100%, 56%, 24%);
143
- --color-selection-stroke: hsl(214, 84%, 56%);
144
- --color-background: hsl(210, 20%, 98%);
145
- --color-brush-fill: hsl(0, 0%, 56%, 10.2%);
146
- --color-brush-stroke: hsl(0, 0%, 56%, 25.1%);
147
- --color-grid: hsl(0, 0%, 43%);
145
+ --tl-color-snap: hsl(0, 76%, 60%);
146
+ --tl-color-selection-fill: hsl(210, 100%, 56%, 24%);
147
+ --tl-color-selection-stroke: hsl(214, 84%, 56%);
148
+ --tl-color-background: hsl(210, 20%, 98%);
149
+ --tl-color-brush-fill: hsl(0, 0%, 56%, 10.2%);
150
+ --tl-color-brush-stroke: hsl(0, 0%, 56%, 25.1%);
151
+ --tl-color-grid: hsl(0, 0%, 43%);
148
152
  /* UI */
149
- --color-low: hsl(204, 16%, 94%);
150
- --color-low-border: hsl(204, 16%, 92%);
151
- --color-culled: hsl(204, 14%, 93%);
152
- --color-muted-none: hsl(0, 0%, 0%, 0%);
153
- --color-muted-0: hsl(0, 0%, 0%, 2%);
154
- --color-muted-1: hsl(0, 0%, 0%, 10%);
155
- --color-muted-2: hsl(0, 0%, 0%, 4.3%);
156
- --color-hint: hsl(0, 0%, 0%, 5.5%);
157
- --color-overlay: hsl(0, 0%, 0%, 20%);
158
- --color-divider: hsl(0, 0%, 91%);
159
- --color-panel: hsl(0, 0%, 99%);
160
- --color-panel-contrast: hsl(0, 0%, 100%);
161
- --color-panel-overlay: hsl(0, 0%, 100%, 82%);
162
- --color-panel-transparent: hsla(0, 0%, 99%, 0%);
163
- --color-selected: hsl(214, 84%, 56%);
164
- --color-selected-contrast: hsl(0, 0%, 100%);
165
- --color-focus: hsl(219, 65%, 50%);
166
- --color-tooltip: hsla(200, 14%, 4%, 1);
153
+ --tl-color-low: hsl(204, 16%, 94%);
154
+ --tl-color-low-border: hsl(204, 16%, 92%);
155
+ --tl-color-culled: hsl(204, 14%, 93%);
156
+ --tl-color-muted-none: hsl(0, 0%, 0%, 0%);
157
+ --tl-color-muted-0: hsl(0, 0%, 0%, 2%);
158
+ --tl-color-muted-1: hsl(0, 0%, 0%, 10%);
159
+ --tl-color-muted-2: hsl(0, 0%, 0%, 4.3%);
160
+ --tl-color-hint: hsl(0, 0%, 0%, 5.5%);
161
+ --tl-color-overlay: hsl(0, 0%, 0%, 20%);
162
+ --tl-color-divider: hsl(0, 0%, 91%);
163
+ --tl-color-panel: hsl(0, 0%, 99%);
164
+ --tl-color-panel-contrast: hsl(0, 0%, 100%);
165
+ --tl-color-panel-overlay: hsl(0, 0%, 100%, 82%);
166
+ --tl-color-panel-transparent: hsla(0, 0%, 99%, 0%);
167
+ --tl-color-selected: hsl(214, 84%, 56%);
168
+ --tl-color-selected-contrast: hsl(0, 0%, 100%);
169
+ --tl-color-focus: hsl(219, 65%, 50%);
170
+ --tl-color-tooltip: hsla(200, 14%, 4%, 1);
167
171
  /* Text */
168
- --color-text: hsl(0, 0%, 0%);
169
- --color-text-0: hsl(0, 0%, 11%);
170
- --color-text-1: hsl(0, 0%, 18%);
171
- --color-text-3: hsl(204, 4%, 45%);
172
- --color-text-shadow: hsl(0, 0%, 100%);
173
- --color-text-highlight: hsl(52, 100%, 50%);
174
- --color-text-highlight-p3: color(display-p3 0.972 0.8205 0.05);
172
+ --tl-color-text: hsl(0, 0%, 0%);
173
+ --tl-color-text-0: hsl(0, 0%, 11%);
174
+ --tl-color-text-1: hsl(0, 0%, 18%);
175
+ --tl-color-text-3: hsl(204, 4%, 45%);
176
+ --tl-color-text-shadow: hsl(0, 0%, 100%);
177
+ --tl-color-text-highlight: hsl(52, 100%, 50%);
178
+ --tl-color-text-highlight-p3: color(display-p3 0.972 0.8205 0.05);
175
179
  /* Named */
176
- --color-primary: hsl(214, 84%, 56%);
177
- --color-success: hsl(123, 46%, 34%);
178
- --color-info: hsl(201, 98%, 41%);
179
- --color-warning: hsl(27, 98%, 47%);
180
- --color-danger: hsl(0, 90%, 43%);
181
- --color-laser: hsl(0, 100%, 50%);
180
+ --tl-color-primary: hsl(214, 84%, 56%);
181
+ --tl-color-success: hsl(123, 46%, 34%);
182
+ --tl-color-info: hsl(201, 98%, 41%);
183
+ --tl-color-warning: hsl(27, 98%, 47%);
184
+ --tl-color-danger: hsl(0, 90%, 43%);
185
+ --tl-color-laser: hsl(0, 100%, 50%);
182
186
  /* Shadows */
183
- --shadow-1: 0px 1px 2px hsl(0, 0%, 0%, 25%), 0px 1px 3px hsl(0, 0%, 0%, 9%);
184
- --shadow-2:
187
+ --tl-shadow-1: 0px 1px 2px hsl(0, 0%, 0%, 25%), 0px 1px 3px hsl(0, 0%, 0%, 9%);
188
+ --tl-shadow-2:
185
189
  0px 0px 2px hsl(0, 0%, 0%, 16%), 0px 2px 3px hsl(0, 0%, 0%, 24%),
186
- 0px 2px 6px hsl(0, 0%, 0%, 0.1), inset 0px 0px 0px 1px var(--color-panel-contrast);
187
- --shadow-3:
190
+ 0px 2px 6px hsl(0, 0%, 0%, 0.1), inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
191
+ --tl-shadow-3:
188
192
  0px 1px 2px hsl(0, 0%, 0%, 28%), 0px 2px 6px hsl(0, 0%, 0%, 14%),
189
- inset 0px 0px 0px 1px var(--color-panel-contrast);
190
- --shadow-4:
193
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
194
+ --tl-shadow-4:
191
195
  0px 0px 3px hsl(0, 0%, 0%, 19%), 0px 5px 4px hsl(0, 0%, 0%, 16%),
192
- 0px 2px 16px hsl(0, 0%, 0%, 6%), inset 0px 0px 0px 1px var(--color-panel-contrast);
196
+ 0px 2px 16px hsl(0, 0%, 0%, 6%), inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
193
197
  }
194
198
 
195
199
  .tl-theme__dark {
196
200
  /* Canvas */
197
- --color-snap: hsl(0, 76%, 60%);
198
- --color-selection-fill: hsl(209, 100%, 57%, 20%);
199
- --color-selection-stroke: hsl(214, 84%, 56%);
200
- --color-background: hsl(240, 5%, 6.5%);
201
- --color-brush-fill: hsl(0, 0%, 71%, 5.1%);
202
- --color-brush-stroke: hsl(0, 0%, 71%, 25.1%);
203
- --color-grid: hsl(0, 0%, 40%);
201
+ --tl-color-snap: hsl(0, 76%, 60%);
202
+ --tl-color-selection-fill: hsl(209, 100%, 57%, 20%);
203
+ --tl-color-selection-stroke: hsl(214, 84%, 56%);
204
+ --tl-color-background: hsl(240, 5%, 6.5%);
205
+ --tl-color-brush-fill: hsl(0, 0%, 71%, 5.1%);
206
+ --tl-color-brush-stroke: hsl(0, 0%, 71%, 25.1%);
207
+ --tl-color-grid: hsl(0, 0%, 40%);
204
208
  /* UI */
205
- --color-low: hsl(260, 4.5%, 10.5%);
206
- --color-low-border: hsl(207, 10%, 10%);
207
- --color-culled: hsl(210, 11%, 19%);
208
- --color-muted-none: hsl(0, 0%, 100%, 0%);
209
- --color-muted-0: hsl(0, 0%, 100%, 2%);
210
- --color-muted-1: hsl(0, 0%, 100%, 10%);
211
- --color-muted-2: hsl(0, 0%, 100%, 5%);
212
- --color-hint: hsl(0, 0%, 100%, 7%);
213
- --color-overlay: hsl(0, 0%, 0%, 50%);
214
- --color-divider: hsl(240, 9%, 22%);
215
- --color-panel: hsl(235, 6.8%, 13.5%);
216
- --color-panel-contrast: hsl(245, 12%, 23%);
217
- --color-panel-overlay: hsl(210, 10%, 24%, 82%);
218
- --color-panel-transparent: hsla(235, 6.8%, 13.5%, 0%);
219
- --color-selected: hsl(217, 89%, 61%);
220
- --color-selected-contrast: hsl(0, 0%, 100%);
221
- --color-focus: hsl(217, 76%, 80%);
222
- --color-tooltip: hsla(0, 0%, 100%, 1);
209
+ --tl-color-low: hsl(260, 4.5%, 10.5%);
210
+ --tl-color-low-border: hsl(207, 10%, 10%);
211
+ --tl-color-culled: hsl(210, 11%, 19%);
212
+ --tl-color-muted-none: hsl(0, 0%, 100%, 0%);
213
+ --tl-color-muted-0: hsl(0, 0%, 100%, 2%);
214
+ --tl-color-muted-1: hsl(0, 0%, 100%, 10%);
215
+ --tl-color-muted-2: hsl(0, 0%, 100%, 5%);
216
+ --tl-color-hint: hsl(0, 0%, 100%, 7%);
217
+ --tl-color-overlay: hsl(0, 0%, 0%, 50%);
218
+ --tl-color-divider: hsl(240, 9%, 22%);
219
+ --tl-color-panel: hsl(235, 6.8%, 13.5%);
220
+ --tl-color-panel-contrast: hsl(245, 12%, 23%);
221
+ --tl-color-panel-overlay: hsl(210, 10%, 24%, 82%);
222
+ --tl-color-panel-transparent: hsla(235, 6.8%, 13.5%, 0%);
223
+ --tl-color-selected: hsl(217, 89%, 61%);
224
+ --tl-color-selected-contrast: hsl(0, 0%, 100%);
225
+ --tl-color-focus: hsl(217, 76%, 80%);
226
+ --tl-color-tooltip: hsla(0, 0%, 100%, 1);
223
227
  /* Text */
224
- --color-text: hsl(210, 17%, 98%);
225
- --color-text-0: hsl(0, 9%, 94%);
226
- --color-text-1: hsl(0, 0%, 85%);
227
- --color-text-3: hsl(204, 4%, 75%);
228
- --color-text-shadow: hsl(210, 13%, 18%);
229
- --color-text-highlight: hsl(52, 100%, 41%);
230
- --color-text-highlight-p3: color(display-p3 0.8078 0.6225 0.0312);
228
+ --tl-color-text: hsl(210, 17%, 98%);
229
+ --tl-color-text-0: hsl(0, 9%, 94%);
230
+ --tl-color-text-1: hsl(0, 0%, 85%);
231
+ --tl-color-text-3: hsl(204, 4%, 75%);
232
+ --tl-color-text-shadow: hsl(210, 13%, 18%);
233
+ --tl-color-text-highlight: hsl(52, 100%, 41%);
234
+ --tl-color-text-highlight-p3: color(display-p3 0.8078 0.6225 0.0312);
231
235
  /* Named */
232
- --color-primary: hsl(214, 84%, 56%);
233
- --color-success: hsl(123, 38%, 57%);
234
- --color-info: hsl(199, 92%, 56%);
235
- --color-warning: hsl(36, 100%, 57%);
236
- --color-danger: hsl(0, 82%, 66%);
237
- --color-laser: hsl(0, 100%, 50%);
236
+ --tl-color-primary: hsl(214, 84%, 56%);
237
+ --tl-color-success: hsl(123, 38%, 57%);
238
+ --tl-color-info: hsl(199, 92%, 56%);
239
+ --tl-color-warning: hsl(36, 100%, 57%);
240
+ --tl-color-danger: hsl(0, 82%, 66%);
241
+ --tl-color-laser: hsl(0, 100%, 50%);
238
242
  /* Shadows */
239
- --shadow-1:
243
+ --tl-shadow-1:
240
244
  0px 1px 2px hsl(0, 0%, 0%, 16.1%), 0px 1px 3px hsl(0, 0%, 0%, 22%),
241
- inset 0px 0px 0px 1px var(--color-panel-contrast);
242
- --shadow-2:
245
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
246
+ --tl-shadow-2:
243
247
  0px 1px 3px hsl(0, 0%, 0%, 66.6%), 0px 2px 6px hsl(0, 0%, 0%, 33%),
244
- inset 0px 0px 0px 1px var(--color-panel-contrast);
245
- --shadow-3:
248
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
249
+ --tl-shadow-3:
246
250
  0px 1px 3px hsl(0, 0%, 0%, 50%), 0px 2px 12px hsl(0, 0%, 0%, 50%),
247
- inset 0px 0px 0px 1px var(--color-panel-contrast);
251
+ inset 0px 0px 0px 1px var(--tl-color-panel-contrast);
248
252
  }
249
253
 
250
254
  .tl-counter-scaled {
@@ -270,7 +274,7 @@
270
274
  }
271
275
 
272
276
  .tl-container__focused {
273
- outline: 1px solid var(--color-low);
277
+ outline: 1px solid var(--tl-color-low);
274
278
  }
275
279
 
276
280
  input,
@@ -286,7 +290,7 @@ input,
286
290
  inset: 0px;
287
291
  height: 100%;
288
292
  width: 100%;
289
- color: var(--color-text);
293
+ color: var(--tl-color-text);
290
294
  cursor: var(--tl-cursor);
291
295
  overflow: clip;
292
296
  content-visibility: auto;
@@ -294,9 +298,16 @@ input,
294
298
  contain: strict;
295
299
  }
296
300
 
301
+ .tl-canvas__in-front {
302
+ position: absolute;
303
+ inset: 0;
304
+ pointer-events: none;
305
+ z-index: var(--tl-layer-canvas-in-front);
306
+ }
307
+
297
308
  .tl-shapes {
298
309
  position: relative;
299
- z-index: var(--layer-canvas-shapes);
310
+ z-index: var(--tl-layer-canvas-shapes);
300
311
  }
301
312
 
302
313
  .tl-overlays {
@@ -307,7 +318,7 @@ input,
307
318
  width: 100%;
308
319
  contain: strict;
309
320
  pointer-events: none;
310
- z-index: var(--layer-canvas-overlays);
321
+ z-index: var(--tl-layer-canvas-overlays);
311
322
  }
312
323
 
313
324
  .tl-overlays__item {
@@ -331,7 +342,7 @@ input,
331
342
  /* ------------------- Background ------------------- */
332
343
 
333
344
  .tl-background__wrapper {
334
- z-index: var(--layer-canvas-background);
345
+ z-index: var(--tl-layer-canvas-background);
335
346
  position: absolute;
336
347
  inset: 0px;
337
348
  height: 100%;
@@ -339,7 +350,7 @@ input,
339
350
  }
340
351
 
341
352
  .tl-background {
342
- background-color: var(--color-background);
353
+ background-color: var(--tl-color-background);
343
354
  width: 100%;
344
355
  height: 100%;
345
356
  }
@@ -353,12 +364,12 @@ input,
353
364
  height: 100%;
354
365
  touch-action: none;
355
366
  pointer-events: none;
356
- z-index: var(--layer-canvas-grid);
367
+ z-index: var(--tl-layer-canvas-grid);
357
368
  contain: strict;
358
369
  }
359
370
 
360
371
  .tl-grid-dot {
361
- fill: var(--color-grid);
372
+ fill: var(--tl-color-grid);
362
373
  }
363
374
 
364
375
  /* --------------------- Layers --------------------- */
@@ -376,54 +387,54 @@ input,
376
387
 
377
388
  /* back of the stack, behind user's stuff */
378
389
  .tl-collaborator__scribble {
379
- z-index: var(--layer-overlays-collaborator-scribble);
390
+ z-index: var(--tl-layer-overlays-collaborator-scribble);
380
391
  }
381
392
 
382
393
  .tl-collaborator__brush {
383
- z-index: var(--layer-overlays-collaborator-brush);
394
+ z-index: var(--tl-layer-overlays-collaborator-brush);
384
395
  }
385
396
 
386
397
  .tl-collaborator__shape-indicator {
387
- z-index: var(--layer-overlays-collaborator-shape-indicator);
398
+ z-index: var(--tl-layer-overlays-collaborator-shape-indicator);
388
399
  }
389
400
 
390
401
  .tl-user-scribble {
391
- z-index: var(--layer-overlays-user-scribble);
402
+ z-index: var(--tl-layer-overlays-user-scribble);
392
403
  }
393
404
 
394
405
  .tl-user-brush {
395
- z-index: var(--layer-overlays-user-brush);
406
+ z-index: var(--tl-layer-overlays-user-brush);
396
407
  }
397
408
 
398
409
  .tl-user-handles {
399
- z-index: var(--layer-overlays-user-handles);
410
+ z-index: var(--tl-layer-overlays-user-handles);
400
411
  }
401
412
 
402
413
  .tl-user-snapline {
403
- z-index: var(--layer-overlays-user-snapline);
414
+ z-index: var(--tl-layer-overlays-user-snapline);
404
415
  }
405
416
 
406
417
  .tl-selection__fg {
407
418
  pointer-events: none;
408
- z-index: var(--layer-overlays-selection-fg);
419
+ z-index: var(--tl-layer-overlays-selection-fg);
409
420
  }
410
421
 
411
422
  .tl-user-indicator__hint {
412
- z-index: var(--layer-overlays-user-indicator-hint);
423
+ z-index: var(--tl-layer-overlays-user-indicator-hint);
413
424
  stroke-width: calc(2.5px * var(--tl-scale));
414
425
  }
415
426
 
416
427
  .tl-custom-overlays {
417
- z-index: var(--layer-overlays-custom);
428
+ z-index: var(--tl-layer-overlays-custom);
418
429
  }
419
430
 
420
431
  /* behind collaborator cursor */
421
432
  .tl-collaborator__cursor-hint {
422
- z-index: var(--layer-overlays-collaborator-cursor-hint);
433
+ z-index: var(--tl-layer-overlays-collaborator-cursor-hint);
423
434
  }
424
435
 
425
436
  .tl-collaborator__cursor {
426
- z-index: var(--layer-overlays-collaborator-cursor);
437
+ z-index: var(--tl-layer-overlays-collaborator-cursor);
427
438
  }
428
439
 
429
440
  .tl-cursor {
@@ -444,32 +455,32 @@ input,
444
455
  .tl-selection__fg__outline {
445
456
  fill: none;
446
457
  pointer-events: none;
447
- stroke: var(--color-selection-stroke);
458
+ stroke: var(--tl-color-selection-stroke);
448
459
  stroke-width: calc(1.5px * var(--tl-scale));
449
460
  }
450
461
 
451
462
  .tl-corner-handle {
452
463
  pointer-events: none;
453
- stroke: var(--color-selection-stroke);
454
- fill: var(--color-background);
464
+ stroke: var(--tl-color-selection-stroke);
465
+ fill: var(--tl-color-background);
455
466
  stroke-width: calc(1.5px * var(--tl-scale));
456
467
  }
457
468
 
458
469
  .tl-text-handle {
459
470
  pointer-events: none;
460
- fill: var(--color-selection-stroke);
471
+ fill: var(--tl-color-selection-stroke);
461
472
  }
462
473
 
463
474
  .tl-corner-crop-handle {
464
475
  pointer-events: none;
465
476
  fill: none;
466
- stroke: var(--color-selection-stroke);
477
+ stroke: var(--tl-color-selection-stroke);
467
478
  }
468
479
 
469
480
  .tl-corner-crop-edge-handle {
470
481
  pointer-events: none;
471
482
  fill: none;
472
- stroke: var(--color-selection-stroke);
483
+ stroke: var(--tl-color-selection-stroke);
473
484
  }
474
485
 
475
486
  .tl-mobile-rotate__bg {
@@ -479,8 +490,8 @@ input,
479
490
 
480
491
  .tl-mobile-rotate__fg {
481
492
  pointer-events: none;
482
- stroke: var(--color-selection-stroke);
483
- fill: var(--color-background);
493
+ stroke: var(--tl-color-selection-stroke);
494
+ fill: var(--tl-color-background);
484
495
  stroke-width: calc(1.5px * var(--tl-scale));
485
496
  }
486
497
 
@@ -510,8 +521,8 @@ input,
510
521
  text-overflow: ellipsis;
511
522
  font-size: 12px;
512
523
  font-family: var(--font-body);
513
- border-radius: var(--radius-2);
514
- color: var(--color-selected-contrast);
524
+ border-radius: var(--tl-radius-2);
525
+ color: var(--tl-color-selected-contrast);
515
526
  }
516
527
 
517
528
  .tl-nametag-title {
@@ -529,7 +540,7 @@ input,
529
540
  font-size: 12px;
530
541
  font-family: var(--font-body);
531
542
  text-shadow: var(--tl-text-outline);
532
- color: var(--color-selected-contrast);
543
+ color: var(--tl-color-selected-contrast);
533
544
  }
534
545
 
535
546
  .tl-nametag-chat {
@@ -538,31 +549,31 @@ input,
538
549
  left: 13px;
539
550
  width: fit-content;
540
551
  height: fit-content;
541
- color: var(--color-selected-contrast);
552
+ color: var(--tl-color-selected-contrast);
542
553
  white-space: nowrap;
543
554
  position: absolute;
544
555
  padding: 3px 6px;
545
556
  font-size: 12px;
546
557
  font-family: var(--font-body);
547
558
  opacity: 1;
548
- border-radius: var(--radius-2);
559
+ border-radius: var(--tl-radius-2);
549
560
  }
550
561
 
551
562
  .tl-cursor-chat {
552
563
  position: absolute;
553
- color: var(--color-selected-contrast);
564
+ color: var(--tl-color-selected-contrast);
554
565
  white-space: nowrap;
555
566
  padding: 3px 6px;
556
567
  font-size: 12px;
557
568
  font-family: var(--font-body);
558
569
  pointer-events: none;
559
- z-index: var(--layer-cursor);
570
+ z-index: var(--tl-layer-cursor);
560
571
  margin-top: 16px;
561
572
  margin-left: 13px;
562
573
  opacity: 1;
563
574
  border: none;
564
575
  user-select: text;
565
- border-radius: var(--radius-2);
576
+ border-radius: var(--tl-radius-2);
566
577
  }
567
578
 
568
579
  .tl-cursor-chat .tl-cursor-chat__bubble {
@@ -570,13 +581,13 @@ input,
570
581
  }
571
582
 
572
583
  .tl-cursor-chat::selection {
573
- background: var(--color-selected);
574
- color: var(--color-selected-contrast);
584
+ background: var(--tl-color-selected);
585
+ color: var(--tl-color-selected-contrast);
575
586
  text-shadow: none;
576
587
  }
577
588
 
578
589
  .tl-cursor-chat::placeholder {
579
- color: var(--color-selected-contrast);
590
+ color: var(--tl-color-selected-contrast);
580
591
  opacity: 0.7;
581
592
  }
582
593
 
@@ -647,7 +658,7 @@ input,
647
658
  background: none;
648
659
  border-image: none;
649
660
  border: 0px;
650
- caret-color: var(--color-text);
661
+ caret-color: var(--tl-color-text);
651
662
  color: inherit;
652
663
  column-count: initial !important;
653
664
  display: inline-block;
@@ -679,7 +690,7 @@ input,
679
690
 
680
691
  .tl-text-measure {
681
692
  position: absolute;
682
- z-index: var(--layer-canvas-hidden);
693
+ z-index: var(--tl-layer-canvas-hidden);
683
694
  top: 0px;
684
695
  left: 0px;
685
696
  opacity: 0;
@@ -742,8 +753,8 @@ input,
742
753
  }
743
754
 
744
755
  .tl-text-input::selection {
745
- background: var(--color-selected);
746
- color: var(--color-selected-contrast);
756
+ background: var(--tl-color-selected);
757
+ color: var(--tl-color-selected-contrast);
747
758
  text-shadow: none;
748
759
  }
749
760
 
@@ -753,7 +764,7 @@ input,
753
764
  display: flex;
754
765
  justify-content: center;
755
766
  align-items: center;
756
- color: var(--color-text);
767
+ color: var(--tl-color-text);
757
768
  text-shadow: var(--tl-text-outline);
758
769
  line-height: inherit;
759
770
  position: absolute;
@@ -797,7 +808,7 @@ input,
797
808
 
798
809
  .tl-text-wrapper .tl-text-content {
799
810
  pointer-events: all;
800
- z-index: var(--layer-text-content);
811
+ z-index: var(--tl-layer-text-content);
801
812
  }
802
813
 
803
814
  .tl-text-label__inner > .tl-text-content {
@@ -807,7 +818,7 @@ input,
807
818
  padding: inherit;
808
819
  height: fit-content;
809
820
  width: fit-content;
810
- border-radius: var(--radius-1);
821
+ border-radius: var(--tl-radius-1);
811
822
  max-width: 100%;
812
823
  }
813
824
 
@@ -820,7 +831,7 @@ input,
820
831
  }
821
832
 
822
833
  .tl-text-wrapper[data-isselected='true'] .tl-text-input {
823
- z-index: var(--layer-text-editor);
834
+ z-index: var(--tl-layer-text-editor);
824
835
  pointer-events: all;
825
836
  }
826
837
 
@@ -915,7 +926,7 @@ input,
915
926
  }
916
927
 
917
928
  .tl-rich-text a {
918
- color: var(--color-primary);
929
+ color: var(--tl-color-primary);
919
930
  text-decoration: underline;
920
931
  }
921
932
 
@@ -938,14 +949,14 @@ input,
938
949
  }
939
950
 
940
951
  .tl-theme__dark .tl-rich-text mark {
941
- background-color: var(--color-text-highlight);
952
+ background-color: var(--tl-color-text-highlight);
942
953
  color: currentColor;
943
954
  }
944
955
 
945
956
  @supports (color: color(display-p3 1 1 1)) {
946
957
  @media (color-gamut: p3) {
947
958
  .tl-container:not(.tl-theme__force-sRGB) .tl-rich-text mark {
948
- background-color: var(--color-text-highlight-p3);
959
+ background-color: var(--tl-color-text-highlight-p3);
949
960
  }
950
961
  }
951
962
  }
@@ -957,15 +968,15 @@ input,
957
968
  /* --------------------- Loading -------------------- */
958
969
 
959
970
  .tl-loading {
960
- background-color: var(--color-background);
961
- color: var(--color-text-1);
971
+ background-color: var(--tl-color-background);
972
+ color: var(--tl-color-text-1);
962
973
  height: 100%;
963
974
  width: 100%;
964
975
  display: flex;
965
976
  flex-direction: column;
966
977
  justify-content: center;
967
978
  align-items: center;
968
- gap: var(--space-2);
979
+ gap: var(--tl-space-2);
969
980
  font-size: 14px;
970
981
  font-weight: 500;
971
982
  opacity: 0;
@@ -973,7 +984,7 @@ input,
973
984
  animation-delay: 0.2s;
974
985
  position: absolute;
975
986
  inset: 0px;
976
- z-index: var(--layer-canvas-blocker);
987
+ z-index: var(--tl-layer-canvas-blocker);
977
988
  }
978
989
 
979
990
  @keyframes tl-fade-in {
@@ -1006,8 +1017,8 @@ input,
1006
1017
  }
1007
1018
 
1008
1019
  .tl-brush__default {
1009
- stroke: var(--color-brush-stroke);
1010
- fill: var(--color-brush-fill);
1020
+ stroke: var(--tl-color-brush-stroke);
1021
+ fill: var(--tl-color-brush-fill);
1011
1022
  }
1012
1023
 
1013
1024
  /* -------------------- Scribble -------------------- */
@@ -1022,13 +1033,13 @@ input,
1022
1033
  /* ---------------------- Snaps --------------------- */
1023
1034
 
1024
1035
  .tl-snap-indicator {
1025
- stroke: var(--color-snap);
1036
+ stroke: var(--tl-color-snap);
1026
1037
  stroke-width: calc(1px * var(--tl-scale));
1027
1038
  fill: none;
1028
1039
  }
1029
1040
 
1030
1041
  .tl-snap-point {
1031
- stroke: var(--color-snap);
1042
+ stroke: var(--tl-color-snap);
1032
1043
  stroke-width: calc(1px * var(--tl-scale));
1033
1044
  fill: none;
1034
1045
  }
@@ -1048,7 +1059,7 @@ input,
1048
1059
  justify-content: center;
1049
1060
  font-size: 12px;
1050
1061
  font-weight: 400;
1051
- color: var(--color-text-1);
1062
+ color: var(--tl-color-text-1);
1052
1063
  padding: 13px;
1053
1064
  cursor: var(--tl-cursor-pointer);
1054
1065
  border: none;
@@ -1066,13 +1077,13 @@ input,
1066
1077
  display: block;
1067
1078
  width: calc(100% - 12px);
1068
1079
  height: calc(100% - 12px);
1069
- border-radius: var(--radius-1);
1070
- background-color: var(--color-background);
1080
+ border-radius: var(--tl-radius-1);
1081
+ background-color: var(--tl-color-background);
1071
1082
  pointer-events: none;
1072
1083
  }
1073
1084
 
1074
1085
  .tl-hyperlink-button:focus-visible {
1075
- color: var(--color-selected);
1086
+ color: var(--tl-color-selected);
1076
1087
  }
1077
1088
 
1078
1089
  .tl-hyperlink__icon {
@@ -1099,8 +1110,8 @@ input,
1099
1110
  }
1100
1111
 
1101
1112
  .tl-handle__fg {
1102
- fill: var(--color-selected-contrast);
1103
- stroke: var(--color-selection-stroke);
1113
+ fill: var(--tl-color-selected-contrast);
1114
+ stroke: var(--tl-color-selection-stroke);
1104
1115
  stroke-width: calc(1.5px * var(--tl-scale));
1105
1116
  pointer-events: none;
1106
1117
  }
@@ -1110,7 +1121,7 @@ input,
1110
1121
  }
1111
1122
 
1112
1123
  .tl-handle__clone > .tl-handle__fg {
1113
- fill: var(--color-selection-stroke);
1124
+ fill: var(--tl-color-selection-stroke);
1114
1125
  stroke: none;
1115
1126
  }
1116
1127
 
@@ -1120,7 +1131,7 @@ input,
1120
1131
 
1121
1132
  @media (pointer: coarse) {
1122
1133
  .tl-handle__bg:active {
1123
- fill: var(--color-selection-fill);
1134
+ fill: var(--tl-color-selection-fill);
1124
1135
  }
1125
1136
 
1126
1137
  .tl-handle__create {
@@ -1176,13 +1187,13 @@ input,
1176
1187
  stroke-linejoin: round;
1177
1188
  /* content-visibility: auto; */
1178
1189
  transform-origin: top left;
1179
- color: var(--color-text-1);
1190
+ color: var(--tl-color-text-1);
1180
1191
  }
1181
1192
 
1182
1193
  /* -------------------- Group shape ------------------ */
1183
1194
 
1184
1195
  .tl-group {
1185
- stroke: var(--color-text);
1196
+ stroke: var(--tl-color-text);
1186
1197
  stroke-width: calc(1px * var(--tl-scale));
1187
1198
  opacity: 0.5;
1188
1199
  }
@@ -1200,12 +1211,12 @@ input,
1200
1211
  justify-content: center;
1201
1212
  align-items: center;
1202
1213
  text-align: center;
1203
- color: var(--color-text);
1214
+ color: var(--tl-color-text);
1204
1215
  text-shadow: var(--tl-text-outline);
1205
1216
  }
1206
1217
 
1207
1218
  .tl-shape[data-shape-type='arrow'] .tl-text-label__inner {
1208
- border-radius: var(--radius-1);
1219
+ border-radius: var(--tl-radius-1);
1209
1220
  box-sizing: content-box;
1210
1221
  height: max-content;
1211
1222
  width: max-content;
@@ -1216,22 +1227,22 @@ input,
1216
1227
  }
1217
1228
 
1218
1229
  .tl-arrow-hint {
1219
- stroke: var(--color-text-1);
1230
+ stroke: var(--tl-color-text-1);
1220
1231
  fill: none;
1221
1232
  stroke-linecap: round;
1222
1233
  overflow: visible;
1223
1234
  }
1224
1235
 
1225
1236
  .tl-arrow-hint-handle {
1226
- fill: var(--color-selected-contrast);
1227
- stroke: var(--color-selection-stroke);
1237
+ fill: var(--tl-color-selected-contrast);
1238
+ stroke: var(--tl-color-selection-stroke);
1228
1239
  stroke-width: calc(1.5px * var(--tl-scale));
1229
1240
  r: calc(4px * var(--tl-scale));
1230
1241
  }
1231
1242
 
1232
1243
  .tl-arrow-hint-snap {
1233
1244
  stroke: transparent;
1234
- fill: var(--color-selection-fill);
1245
+ fill: var(--tl-color-selection-fill);
1235
1246
  r: calc(12px * var(--tl-scale));
1236
1247
  }
1237
1248
 
@@ -1251,40 +1262,40 @@ input,
1251
1262
  width: 100%;
1252
1263
  height: 100%;
1253
1264
  position: relative;
1254
- border: 1px solid var(--color-panel-contrast);
1255
- background-color: var(--color-panel);
1256
- border-radius: var(--radius-2);
1265
+ border: 1px solid var(--tl-color-panel-contrast);
1266
+ background-color: var(--tl-color-panel);
1267
+ border-radius: var(--tl-radius-2);
1257
1268
  display: flex;
1258
1269
  flex-direction: column;
1259
1270
  overflow: hidden;
1260
1271
  }
1261
1272
 
1262
1273
  .tl-bookmark__container--safariExport {
1263
- border: 1px solid var(--color-divider);
1274
+ border: 1px solid var(--tl-color-divider);
1264
1275
  }
1265
1276
 
1266
1277
  .tl-bookmark__image_container {
1267
1278
  flex: 1 1 100%;
1268
1279
  overflow: hidden;
1269
- border-top-left-radius: var(--radius-1);
1270
- border-top-right-radius: var(--radius-1);
1280
+ border-top-left-radius: var(--tl-radius-1);
1281
+ border-top-right-radius: var(--tl-radius-1);
1271
1282
  width: 100%;
1272
1283
  height: 100%;
1273
1284
  display: flex;
1274
1285
  justify-content: flex-end;
1275
1286
  align-items: flex-start;
1276
- box-shadow: inset 0px 0px 0px 1px var(--color-divider);
1287
+ box-shadow: inset 0px 0px 0px 1px var(--tl-color-divider);
1277
1288
  }
1278
1289
 
1279
1290
  .tl-bookmark__image_container > .tl-hyperlink-button::after {
1280
- background-color: var(--color-panel);
1291
+ background-color: var(--tl-color-panel);
1281
1292
  }
1282
1293
 
1283
1294
  .tl-bookmark__placeholder {
1284
1295
  width: 100%;
1285
1296
  height: 100%;
1286
- background-color: var(--color-muted-2);
1287
- border-bottom: 1px solid var(--color-muted-2);
1297
+ background-color: var(--tl-color-muted-2);
1298
+ border-bottom: 1px solid var(--tl-color-muted-2);
1288
1299
  }
1289
1300
 
1290
1301
  .tl-bookmark__image {
@@ -1292,12 +1303,12 @@ input,
1292
1303
  height: 100%;
1293
1304
  object-fit: cover;
1294
1305
  object-position: center;
1295
- border-bottom: 1px solid var(--color-muted-2);
1306
+ border-bottom: 1px solid var(--tl-color-muted-2);
1296
1307
  }
1297
1308
 
1298
1309
  .tl-bookmark__copy_container {
1299
- background-color: var(--color-muted-0);
1300
- padding: var(--space-4);
1310
+ background-color: var(--tl-color-muted-0);
1311
+ padding: var(--tl-space-4);
1301
1312
  pointer-events: all;
1302
1313
  display: flex;
1303
1314
  flex-direction: column;
@@ -1317,7 +1328,7 @@ input,
1317
1328
  font-size: 16px;
1318
1329
  line-height: 1.6;
1319
1330
  font-weight: bold;
1320
- padding-bottom: var(--space-2);
1331
+ padding-bottom: var(--tl-space-2);
1321
1332
  overflow: hidden;
1322
1333
  max-height: calc((16px * 1.6) * 2);
1323
1334
  -webkit-box-orient: vertical;
@@ -1337,19 +1348,19 @@ input,
1337
1348
  line-clamp: 3;
1338
1349
  text-overflow: ellipsis;
1339
1350
  display: -webkit-box;
1340
- color: var(--color-text-2);
1341
- margin: var(--space-2) 0px;
1351
+ color: var(--tl-color-text-2);
1352
+ margin: var(--tl-space-2) 0px;
1342
1353
  }
1343
1354
 
1344
1355
  .tl-bookmark__heading + .tl-bookmark__link,
1345
1356
  .tl-bookmark__description + .tl-bookmark__link {
1346
- margin-top: var(--space-3);
1357
+ margin-top: var(--tl-space-3);
1347
1358
  }
1348
1359
  .tl-bookmark__link {
1349
1360
  font-size: 12px;
1350
1361
  pointer-events: all;
1351
1362
  display: flex;
1352
- color: var(--color-text-2);
1363
+ color: var(--tl-color-text-2);
1353
1364
  align-items: center;
1354
1365
  cursor: var(--tl-cursor-pointer);
1355
1366
  width: fit-content;
@@ -1391,7 +1402,7 @@ input,
1391
1402
  width: 100%;
1392
1403
  height: 100%;
1393
1404
  pointer-events: all;
1394
- /* background-color: var(--color-background); */
1405
+ /* background-color: var(--tl-color-background); */
1395
1406
 
1396
1407
  display: flex;
1397
1408
  justify-content: center;
@@ -1420,7 +1431,7 @@ input,
1420
1431
  height: 100%;
1421
1432
  pointer-events: all;
1422
1433
  opacity: 1;
1423
- z-index: var(--layer-text-container);
1434
+ z-index: var(--tl-layer-text-container);
1424
1435
  border-radius: 1px;
1425
1436
  }
1426
1437
 
@@ -1436,22 +1447,22 @@ input,
1436
1447
  }
1437
1448
 
1438
1449
  .tl-frame__creating {
1439
- stroke: var(--color-selected);
1450
+ stroke: var(--tl-color-selected);
1440
1451
  fill: none;
1441
1452
  }
1442
1453
 
1443
1454
  .tl-frame-heading {
1444
- --frame-padding-x: 6px;
1445
- --frame-height: 24px;
1446
- --frame-minimum-width: 32px;
1447
- --frame-offset-width: 16px;
1455
+ --tl-frame-padding-x: 6px;
1456
+ --tl-frame-height: 24px;
1457
+ --tl-frame-minimum-width: 32px;
1458
+ --tl-frame-offset-width: 16px;
1448
1459
  display: flex;
1449
1460
  align-items: center;
1450
1461
  position: absolute;
1451
1462
  transform-origin: 0% 100%;
1452
1463
  overflow: hidden;
1453
1464
  max-width: 100%;
1454
- min-width: var(--frame-minimum-width);
1465
+ min-width: var(--tl-frame-minimum-width);
1455
1466
  height: auto;
1456
1467
  font-size: 12px;
1457
1468
  padding-bottom: 4px;
@@ -1463,18 +1474,18 @@ input,
1463
1474
  /* scale from bottom left corner so we can pin it to the top left corner of the frame */
1464
1475
  transform-origin: 0% 100%;
1465
1476
  display: flex;
1466
- height: var(--frame-height);
1477
+ height: var(--tl-frame-height);
1467
1478
  width: 100%;
1468
1479
  align-items: center;
1469
- border-radius: var(--radius-1);
1480
+ border-radius: var(--tl-radius-1);
1470
1481
  }
1471
1482
 
1472
1483
  .tl-frame-label {
1473
1484
  pointer-events: all;
1474
1485
  overflow: hidden;
1475
1486
  text-overflow: ellipsis;
1476
- padding: 0px var(--frame-padding-x);
1477
- border-radius: var(--radius-1);
1487
+ padding: 0px var(--tl-frame-padding-x);
1488
+ border-radius: var(--tl-radius-1);
1478
1489
  position: relative;
1479
1490
  font-size: inherit;
1480
1491
  white-space: pre;
@@ -1484,12 +1495,12 @@ input,
1484
1495
  color: transparent;
1485
1496
  white-space: pre;
1486
1497
  width: auto;
1487
- min-width: var(--frame-minimum-width);
1498
+ min-width: var(--tl-frame-minimum-width);
1488
1499
  height: 100%;
1489
1500
  overflow: visible;
1490
- background-color: var(--color-panel);
1491
- border-color: var(--color-selected);
1492
- box-shadow: inset 0px 0px 0px 1.5px var(--color-selected);
1501
+ background-color: var(--tl-color-panel);
1502
+ border-color: var(--tl-color-selected);
1503
+ box-shadow: inset 0px 0px 0px 1.5px var(--tl-color-selected);
1493
1504
  }
1494
1505
 
1495
1506
  .tl-frame-name-input {
@@ -1497,7 +1508,7 @@ input,
1497
1508
  border: none;
1498
1509
  background: none;
1499
1510
  outline: none;
1500
- padding: 0px var(--frame-padding-x);
1511
+ padding: 0px var(--tl-frame-padding-x);
1501
1512
  inset: 0px;
1502
1513
  height: 100%;
1503
1514
  width: 100%;
@@ -1505,8 +1516,8 @@ input,
1505
1516
  font-family: inherit;
1506
1517
  font-weight: inherit;
1507
1518
  width: 100%;
1508
- color: var(--color-text-1);
1509
- border-radius: var(--radius-1);
1519
+ color: var(--tl-color-text-1);
1520
+ border-radius: var(--tl-radius-1);
1510
1521
  user-select: all;
1511
1522
  -webkit-user-select: text;
1512
1523
  white-space: pre;
@@ -1526,7 +1537,7 @@ input,
1526
1537
 
1527
1538
  .tl-embed {
1528
1539
  border: none;
1529
- border-radius: var(--radius-2);
1540
+ border-radius: var(--tl-radius-2);
1530
1541
  }
1531
1542
 
1532
1543
  /* -------------- Shape error boundary -------------- */
@@ -1534,11 +1545,11 @@ input,
1534
1545
  .tl-shape-error-boundary {
1535
1546
  width: 100%;
1536
1547
  height: 100%;
1537
- background-color: var(--color-muted-1);
1548
+ background-color: var(--tl-color-muted-1);
1538
1549
  border-width: calc(1px * var(--tl-scale));
1539
- border-color: var(--color-muted-1);
1550
+ border-color: var(--tl-color-muted-1);
1540
1551
  border-style: solid;
1541
- border-radius: calc(var(--radius-1) * var(--tl-scale));
1552
+ border-radius: calc(var(--tl-radius-1) * var(--tl-scale));
1542
1553
  display: flex;
1543
1554
  flex-direction: column;
1544
1555
  align-items: center;
@@ -1547,7 +1558,7 @@ input,
1547
1558
  position: relative;
1548
1559
  pointer-events: all;
1549
1560
  overflow: hidden;
1550
- padding: var(--space-2);
1561
+ padding: var(--tl-space-2);
1551
1562
  }
1552
1563
 
1553
1564
  .tl-shape-error-boundary::before {
@@ -1555,7 +1566,7 @@ input,
1555
1566
  content: 'Error';
1556
1567
  font-size: 12px;
1557
1568
  font-family: inherit;
1558
- color: var(--color-text-0);
1569
+ color: var(--tl-color-text-0);
1559
1570
  }
1560
1571
 
1561
1572
  /* ----------------- Error boundary ----------------- */
@@ -1566,9 +1577,9 @@ input,
1566
1577
  display: flex;
1567
1578
  align-items: center;
1568
1579
  justify-content: center;
1569
- padding: var(--space-4);
1570
- background-color: var(--color-background);
1571
- color: var(--color-text-1);
1580
+ padding: var(--tl-space-4);
1581
+ background-color: var(--tl-color-background);
1582
+ color: var(--tl-color-text-1);
1572
1583
  position: absolute;
1573
1584
  }
1574
1585
 
@@ -1577,8 +1588,8 @@ input,
1577
1588
  inset: 0px;
1578
1589
  height: 100%;
1579
1590
  width: 100%;
1580
- z-index: var(--layer-error-overlay);
1581
- background-color: var(--color-overlay);
1591
+ z-index: var(--tl-layer-error-overlay);
1592
+ background-color: var(--tl-color-overlay);
1582
1593
  }
1583
1594
 
1584
1595
  .tl-error-boundary__content * {
@@ -1593,7 +1604,7 @@ input,
1593
1604
  inset: 0px;
1594
1605
  height: 100%;
1595
1606
  width: 100%;
1596
- z-index: var(--layer-error-canvas);
1607
+ z-index: var(--tl-layer-error-canvas);
1597
1608
  }
1598
1609
 
1599
1610
  /* some browsers seem to have some weird interactions between stacking contexts
@@ -1606,7 +1617,7 @@ it from receiving any pointer events or affecting the cursor. */
1606
1617
  inset: 0px;
1607
1618
  height: 100%;
1608
1619
  width: 100%;
1609
- z-index: var(--layer-error-canvas-after);
1620
+ z-index: var(--tl-layer-error-canvas-after);
1610
1621
  pointer-events: all;
1611
1622
  }
1612
1623
 
@@ -1616,16 +1627,16 @@ it from receiving any pointer events or affecting the cursor. */
1616
1627
  max-width: 100%;
1617
1628
  width: 400px;
1618
1629
  max-height: 100%;
1619
- background-color: var(--color-panel);
1630
+ background-color: var(--tl-color-panel);
1620
1631
  padding: 16px;
1621
1632
  border-radius: 16px;
1622
- box-shadow: var(--shadow-2);
1633
+ box-shadow: var(--tl-shadow-2);
1623
1634
  font-size: 14px;
1624
1635
  font-weight: 400;
1625
1636
  display: flex;
1626
1637
  flex-direction: column;
1627
1638
  overflow: auto;
1628
- z-index: var(--layer-error-content);
1639
+ z-index: var(--tl-layer-error-content);
1629
1640
  gap: 12px;
1630
1641
  }
1631
1642
 
@@ -1640,10 +1651,10 @@ it from receiving any pointer events or affecting the cursor. */
1640
1651
  }
1641
1652
 
1642
1653
  .tl-error-boundary__content h4 {
1643
- border: 1px solid var(--color-low-border);
1654
+ border: 1px solid var(--tl-color-low-border);
1644
1655
  margin: -6px 0 0 0;
1645
- padding: var(--space-5);
1646
- border-radius: var(--radius-2);
1656
+ padding: var(--tl-space-5);
1657
+ border-radius: var(--tl-radius-2);
1647
1658
  font-weight: normal;
1648
1659
  }
1649
1660
 
@@ -1653,10 +1664,10 @@ it from receiving any pointer events or affecting the cursor. */
1653
1664
  }
1654
1665
 
1655
1666
  .tl-error-boundary__content pre {
1656
- background-color: var(--color-muted-2);
1667
+ background-color: var(--tl-color-muted-2);
1657
1668
  margin-top: 0;
1658
- padding: var(--space-5);
1659
- border-radius: var(--radius-2);
1669
+ padding: var(--tl-space-5);
1670
+ border-radius: var(--tl-radius-2);
1660
1671
  overflow: auto;
1661
1672
  font-size: 12px;
1662
1673
  max-height: 320px;
@@ -1668,15 +1679,15 @@ it from receiving any pointer events or affecting the cursor. */
1668
1679
  font-family: inherit;
1669
1680
  font-size: 14px;
1670
1681
  font-weight: 500;
1671
- padding: var(--space-4);
1672
- border-radius: var(--radius-3);
1682
+ padding: var(--tl-space-4);
1683
+ border-radius: var(--tl-radius-3);
1673
1684
  cursor: var(--tl-cursor-pointer);
1674
1685
  color: inherit;
1675
1686
  background-color: transparent;
1676
1687
  }
1677
1688
 
1678
1689
  .tl-error-boundary__content a {
1679
- color: var(--color-selected);
1690
+ color: var(--tl-color-selected);
1680
1691
  font-weight: 500;
1681
1692
  text-decoration: none;
1682
1693
  }
@@ -1688,31 +1699,31 @@ it from receiving any pointer events or affecting the cursor. */
1688
1699
 
1689
1700
  .tl-error-boundary__content__error button {
1690
1701
  position: absolute;
1691
- top: var(--space-2);
1692
- right: var(--space-2);
1702
+ top: var(--tl-space-2);
1703
+ right: var(--tl-space-2);
1693
1704
  font-size: 12px;
1694
- padding: var(--space-2) var(--space-3);
1695
- background-color: var(--color-panel);
1696
- border-radius: var(--radius-1);
1705
+ padding: var(--tl-space-2) var(--tl-space-3);
1706
+ background-color: var(--tl-color-panel);
1707
+ border-radius: var(--tl-radius-1);
1697
1708
  }
1698
1709
 
1699
1710
  .tl-error-boundary__content__actions {
1700
1711
  display: flex;
1701
1712
  justify-content: space-between;
1702
- gap: var(--space-4);
1713
+ gap: var(--tl-space-4);
1703
1714
  margin: 0px;
1704
1715
  margin-left: -4px;
1705
1716
  }
1706
1717
  .tl-error-boundary__content__actions__group {
1707
1718
  display: flex;
1708
- gap: var(--space-4);
1719
+ gap: var(--tl-space-4);
1709
1720
  }
1710
1721
  .tl-error-boundary__content .tl-error-boundary__reset {
1711
- color: var(--color-danger);
1722
+ color: var(--tl-color-danger);
1712
1723
  }
1713
1724
  .tl-error-boundary__content .tl-error-boundary__refresh {
1714
- background-color: var(--color-primary);
1715
- color: var(--color-selected-contrast);
1725
+ background-color: var(--tl-color-primary);
1726
+ color: var(--tl-color-selected-contrast);
1716
1727
  }
1717
1728
  .tl-container__focused:not(.tl-container__no-focus-ring)
1718
1729
  .tlui-button.tl-error-boundary__refresh:focus-visible {
@@ -1724,7 +1735,7 @@ it from receiving any pointer events or affecting the cursor. */
1724
1735
 
1725
1736
  .tl-hit-test-blocker {
1726
1737
  position: absolute;
1727
- z-index: var(--layer-canvas-blocker);
1738
+ z-index: var(--tl-layer-canvas-blocker);
1728
1739
  inset: 0px;
1729
1740
  width: 100%;
1730
1741
  height: 100%;
@@ -1744,32 +1755,32 @@ it from receiving any pointer events or affecting the cursor. */
1744
1755
 
1745
1756
  .tl-handle__bg:hover {
1746
1757
  cursor: var(--tl-cursor-grab);
1747
- fill: var(--color-selection-fill);
1758
+ fill: var(--tl-color-selection-fill);
1748
1759
  }
1749
1760
 
1750
1761
  .tl-bookmark__link:hover {
1751
- color: var(--color-selected);
1762
+ color: var(--tl-color-selected);
1752
1763
  }
1753
1764
 
1754
1765
  .tl-hyperlink-button:hover {
1755
- color: var(--color-selected);
1766
+ color: var(--tl-color-selected);
1756
1767
  }
1757
1768
 
1758
1769
  .tl-error-boundary__content button:hover {
1759
- background-color: var(--color-low);
1770
+ background-color: var(--tl-color-low);
1760
1771
  }
1761
1772
  .tl-error-boundary__content a:hover {
1762
- color: var(--color-text-1);
1773
+ color: var(--tl-color-text-1);
1763
1774
  }
1764
1775
  .tl-error-boundary__content .tl-error-boundary__refresh:hover {
1765
- background-color: var(--color-primary);
1776
+ background-color: var(--tl-color-primary);
1766
1777
  opacity: 0.9;
1767
1778
  }
1768
1779
 
1769
1780
  /* These three rules help preserve clicking into specific points in text areas *while*
1770
1781
  * already in edit mode when jumping from shape to shape. */
1771
1782
  .tl-canvas[data-iseditinganything='true'] .tl-text-wrapper:hover .tl-text-input {
1772
- z-index: var(--layer-text-editor);
1783
+ z-index: var(--tl-layer-text-editor);
1773
1784
  pointer-events: all;
1774
1785
  }
1775
1786
  }