@tldraw/editor 3.15.1 → 3.16.0-canary.03deb7f8fe34

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