@tldraw/editor 3.16.0-internal.a478398270c6 → 3.16.0-next.15f085081fd5

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