@tldraw/editor 3.16.0-canary.fa3749606e52 → 3.16.0-internal.51e99e128bd4

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 (86) hide show
  1. package/dist-cjs/index.d.ts +84 -9
  2. package/dist-cjs/index.js +3 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  5. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +1 -1
  6. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  7. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultScribble.js +1 -1
  9. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +9 -1
  11. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  12. package/dist-cjs/lib/config/TLUserPreferences.js +9 -3
  13. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  14. package/dist-cjs/lib/editor/Editor.js +46 -24
  15. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  16. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +9 -4
  17. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  18. package/dist-cjs/lib/editor/types/misc-types.js.map +1 -1
  19. package/dist-cjs/lib/exports/getSvgJsx.js +1 -2
  20. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  21. package/dist-cjs/lib/license/Watermark.js +6 -6
  22. package/dist-cjs/lib/license/Watermark.js.map +1 -1
  23. package/dist-cjs/lib/options.js +7 -0
  24. package/dist-cjs/lib/options.js.map +2 -2
  25. package/dist-cjs/lib/utils/EditorAtom.js +45 -0
  26. package/dist-cjs/lib/utils/EditorAtom.js.map +7 -0
  27. package/dist-cjs/version.js +3 -3
  28. package/dist-cjs/version.js.map +1 -1
  29. package/dist-esm/index.d.mts +84 -9
  30. package/dist-esm/index.mjs +3 -1
  31. package/dist-esm/index.mjs.map +2 -2
  32. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  33. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +1 -1
  34. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  35. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  36. package/dist-esm/lib/components/default-components/DefaultScribble.mjs +1 -1
  37. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  38. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +9 -1
  39. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  40. package/dist-esm/lib/config/TLUserPreferences.mjs +9 -3
  41. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  42. package/dist-esm/lib/editor/Editor.mjs +46 -24
  43. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  44. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +9 -4
  45. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  46. package/dist-esm/lib/exports/getSvgJsx.mjs +2 -2
  47. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  48. package/dist-esm/lib/license/Watermark.mjs +6 -6
  49. package/dist-esm/lib/license/Watermark.mjs.map +1 -1
  50. package/dist-esm/lib/options.mjs +7 -0
  51. package/dist-esm/lib/options.mjs.map +2 -2
  52. package/dist-esm/lib/utils/EditorAtom.mjs +25 -0
  53. package/dist-esm/lib/utils/EditorAtom.mjs.map +7 -0
  54. package/dist-esm/version.mjs +3 -3
  55. package/dist-esm/version.mjs.map +1 -1
  56. package/editor.css +293 -288
  57. package/package.json +14 -37
  58. package/src/index.ts +2 -0
  59. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  60. package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
  61. package/src/lib/components/default-components/DefaultScribble.tsx +1 -1
  62. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +5 -1
  63. package/src/lib/config/TLUserPreferences.ts +8 -1
  64. package/src/lib/editor/Editor.test.ts +12 -11
  65. package/src/lib/editor/Editor.ts +70 -47
  66. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +15 -14
  67. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +16 -15
  68. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +49 -48
  69. package/src/lib/editor/managers/FontManager/FontManager.test.ts +24 -23
  70. package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +7 -6
  71. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +12 -11
  72. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +57 -50
  73. package/src/lib/editor/managers/TextManager/TextManager.test.ts +51 -26
  74. package/src/lib/editor/managers/TickManager/TickManager.test.ts +14 -13
  75. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +34 -26
  76. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +6 -1
  77. package/src/lib/editor/types/misc-types.ts +54 -1
  78. package/src/lib/exports/getSvgJsx.tsx +2 -2
  79. package/src/lib/license/LicenseManager.test.ts +3 -1
  80. package/src/lib/license/Watermark.test.tsx +2 -1
  81. package/src/lib/license/Watermark.tsx +6 -6
  82. package/src/lib/options.ts +8 -0
  83. package/src/lib/utils/EditorAtom.ts +37 -0
  84. package/src/lib/utils/sync/LocalIndexedDb.test.ts +2 -1
  85. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +15 -15
  86. 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;
@@ -795,7 +800,7 @@ input,
795
800
 
796
801
  .tl-text-wrapper .tl-text-content {
797
802
  pointer-events: all;
798
- z-index: var(--layer-text-content);
803
+ z-index: var(--tl-layer-text-content);
799
804
  }
800
805
 
801
806
  .tl-text-label__inner > .tl-text-content {
@@ -805,7 +810,7 @@ input,
805
810
  padding: inherit;
806
811
  height: fit-content;
807
812
  width: fit-content;
808
- border-radius: var(--radius-1);
813
+ border-radius: var(--tl-radius-1);
809
814
  max-width: 100%;
810
815
  }
811
816
 
@@ -818,7 +823,7 @@ input,
818
823
  }
819
824
 
820
825
  .tl-text-wrapper[data-isselected='true'] .tl-text-input {
821
- z-index: var(--layer-text-editor);
826
+ z-index: var(--tl-layer-text-editor);
822
827
  pointer-events: all;
823
828
  }
824
829
 
@@ -913,7 +918,7 @@ input,
913
918
  }
914
919
 
915
920
  .tl-rich-text a {
916
- color: var(--color-primary);
921
+ color: var(--tl-color-primary);
917
922
  text-decoration: underline;
918
923
  }
919
924
 
@@ -936,14 +941,14 @@ input,
936
941
  }
937
942
 
938
943
  .tl-theme__dark .tl-rich-text mark {
939
- background-color: var(--color-text-highlight);
944
+ background-color: var(--tl-color-text-highlight);
940
945
  color: currentColor;
941
946
  }
942
947
 
943
948
  @supports (color: color(display-p3 1 1 1)) {
944
949
  @media (color-gamut: p3) {
945
950
  .tl-container:not(.tl-theme__force-sRGB) .tl-rich-text mark {
946
- background-color: var(--color-text-highlight-p3);
951
+ background-color: var(--tl-color-text-highlight-p3);
947
952
  }
948
953
  }
949
954
  }
@@ -955,15 +960,15 @@ input,
955
960
  /* --------------------- Loading -------------------- */
956
961
 
957
962
  .tl-loading {
958
- background-color: var(--color-background);
959
- color: var(--color-text-1);
963
+ background-color: var(--tl-color-background);
964
+ color: var(--tl-color-text-1);
960
965
  height: 100%;
961
966
  width: 100%;
962
967
  display: flex;
963
968
  flex-direction: column;
964
969
  justify-content: center;
965
970
  align-items: center;
966
- gap: var(--space-2);
971
+ gap: var(--tl-space-2);
967
972
  font-size: 14px;
968
973
  font-weight: 500;
969
974
  opacity: 0;
@@ -971,7 +976,7 @@ input,
971
976
  animation-delay: 0.2s;
972
977
  position: absolute;
973
978
  inset: 0px;
974
- z-index: var(--layer-canvas-blocker);
979
+ z-index: var(--tl-layer-canvas-blocker);
975
980
  }
976
981
 
977
982
  @keyframes tl-fade-in {
@@ -1004,8 +1009,8 @@ input,
1004
1009
  }
1005
1010
 
1006
1011
  .tl-brush__default {
1007
- stroke: var(--color-brush-stroke);
1008
- fill: var(--color-brush-fill);
1012
+ stroke: var(--tl-color-brush-stroke);
1013
+ fill: var(--tl-color-brush-fill);
1009
1014
  }
1010
1015
 
1011
1016
  /* -------------------- Scribble -------------------- */
@@ -1020,13 +1025,13 @@ input,
1020
1025
  /* ---------------------- Snaps --------------------- */
1021
1026
 
1022
1027
  .tl-snap-indicator {
1023
- stroke: var(--color-snap);
1028
+ stroke: var(--tl-color-snap);
1024
1029
  stroke-width: calc(1px * var(--tl-scale));
1025
1030
  fill: none;
1026
1031
  }
1027
1032
 
1028
1033
  .tl-snap-point {
1029
- stroke: var(--color-snap);
1034
+ stroke: var(--tl-color-snap);
1030
1035
  stroke-width: calc(1px * var(--tl-scale));
1031
1036
  fill: none;
1032
1037
  }
@@ -1046,7 +1051,7 @@ input,
1046
1051
  justify-content: center;
1047
1052
  font-size: 12px;
1048
1053
  font-weight: 400;
1049
- color: var(--color-text-1);
1054
+ color: var(--tl-color-text-1);
1050
1055
  padding: 13px;
1051
1056
  cursor: var(--tl-cursor-pointer);
1052
1057
  border: none;
@@ -1064,13 +1069,13 @@ input,
1064
1069
  display: block;
1065
1070
  width: calc(100% - 12px);
1066
1071
  height: calc(100% - 12px);
1067
- border-radius: var(--radius-1);
1068
- background-color: var(--color-background);
1072
+ border-radius: var(--tl-radius-1);
1073
+ background-color: var(--tl-color-background);
1069
1074
  pointer-events: none;
1070
1075
  }
1071
1076
 
1072
1077
  .tl-hyperlink-button:focus-visible {
1073
- color: var(--color-selected);
1078
+ color: var(--tl-color-selected);
1074
1079
  }
1075
1080
 
1076
1081
  .tl-hyperlink__icon {
@@ -1097,8 +1102,8 @@ input,
1097
1102
  }
1098
1103
 
1099
1104
  .tl-handle__fg {
1100
- fill: var(--color-selected-contrast);
1101
- stroke: var(--color-selection-stroke);
1105
+ fill: var(--tl-color-selected-contrast);
1106
+ stroke: var(--tl-color-selection-stroke);
1102
1107
  stroke-width: calc(1.5px * var(--tl-scale));
1103
1108
  pointer-events: none;
1104
1109
  }
@@ -1108,7 +1113,7 @@ input,
1108
1113
  }
1109
1114
 
1110
1115
  .tl-handle__clone > .tl-handle__fg {
1111
- fill: var(--color-selection-stroke);
1116
+ fill: var(--tl-color-selection-stroke);
1112
1117
  stroke: none;
1113
1118
  }
1114
1119
 
@@ -1118,7 +1123,7 @@ input,
1118
1123
 
1119
1124
  @media (pointer: coarse) {
1120
1125
  .tl-handle__bg:active {
1121
- fill: var(--color-selection-fill);
1126
+ fill: var(--tl-color-selection-fill);
1122
1127
  }
1123
1128
 
1124
1129
  .tl-handle__create {
@@ -1174,13 +1179,13 @@ input,
1174
1179
  stroke-linejoin: round;
1175
1180
  /* content-visibility: auto; */
1176
1181
  transform-origin: top left;
1177
- color: var(--color-text-1);
1182
+ color: var(--tl-color-text-1);
1178
1183
  }
1179
1184
 
1180
1185
  /* -------------------- Group shape ------------------ */
1181
1186
 
1182
1187
  .tl-group {
1183
- stroke: var(--color-text);
1188
+ stroke: var(--tl-color-text);
1184
1189
  stroke-width: calc(1px * var(--tl-scale));
1185
1190
  opacity: 0.5;
1186
1191
  }
@@ -1198,12 +1203,12 @@ input,
1198
1203
  justify-content: center;
1199
1204
  align-items: center;
1200
1205
  text-align: center;
1201
- color: var(--color-text);
1206
+ color: var(--tl-color-text);
1202
1207
  text-shadow: var(--tl-text-outline);
1203
1208
  }
1204
1209
 
1205
1210
  .tl-shape[data-shape-type='arrow'] .tl-text-label__inner {
1206
- border-radius: var(--radius-1);
1211
+ border-radius: var(--tl-radius-1);
1207
1212
  box-sizing: content-box;
1208
1213
  height: max-content;
1209
1214
  width: max-content;
@@ -1214,22 +1219,22 @@ input,
1214
1219
  }
1215
1220
 
1216
1221
  .tl-arrow-hint {
1217
- stroke: var(--color-text-1);
1222
+ stroke: var(--tl-color-text-1);
1218
1223
  fill: none;
1219
1224
  stroke-linecap: round;
1220
1225
  overflow: visible;
1221
1226
  }
1222
1227
 
1223
1228
  .tl-arrow-hint-handle {
1224
- fill: var(--color-selected-contrast);
1225
- stroke: var(--color-selection-stroke);
1229
+ fill: var(--tl-color-selected-contrast);
1230
+ stroke: var(--tl-color-selection-stroke);
1226
1231
  stroke-width: calc(1.5px * var(--tl-scale));
1227
1232
  r: calc(4px * var(--tl-scale));
1228
1233
  }
1229
1234
 
1230
1235
  .tl-arrow-hint-snap {
1231
1236
  stroke: transparent;
1232
- fill: var(--color-selection-fill);
1237
+ fill: var(--tl-color-selection-fill);
1233
1238
  r: calc(12px * var(--tl-scale));
1234
1239
  }
1235
1240
 
@@ -1249,40 +1254,40 @@ input,
1249
1254
  width: 100%;
1250
1255
  height: 100%;
1251
1256
  position: relative;
1252
- border: 1px solid var(--color-panel-contrast);
1253
- background-color: var(--color-panel);
1254
- 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);
1255
1260
  display: flex;
1256
1261
  flex-direction: column;
1257
1262
  overflow: hidden;
1258
1263
  }
1259
1264
 
1260
1265
  .tl-bookmark__container--safariExport {
1261
- border: 1px solid var(--color-divider);
1266
+ border: 1px solid var(--tl-color-divider);
1262
1267
  }
1263
1268
 
1264
1269
  .tl-bookmark__image_container {
1265
1270
  flex: 1 1 100%;
1266
1271
  overflow: hidden;
1267
- border-top-left-radius: var(--radius-1);
1268
- 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);
1269
1274
  width: 100%;
1270
1275
  height: 100%;
1271
1276
  display: flex;
1272
1277
  justify-content: flex-end;
1273
1278
  align-items: flex-start;
1274
- box-shadow: inset 0px 0px 0px 1px var(--color-divider);
1279
+ box-shadow: inset 0px 0px 0px 1px var(--tl-color-divider);
1275
1280
  }
1276
1281
 
1277
1282
  .tl-bookmark__image_container > .tl-hyperlink-button::after {
1278
- background-color: var(--color-panel);
1283
+ background-color: var(--tl-color-panel);
1279
1284
  }
1280
1285
 
1281
1286
  .tl-bookmark__placeholder {
1282
1287
  width: 100%;
1283
1288
  height: 100%;
1284
- background-color: var(--color-muted-2);
1285
- 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);
1286
1291
  }
1287
1292
 
1288
1293
  .tl-bookmark__image {
@@ -1290,12 +1295,12 @@ input,
1290
1295
  height: 100%;
1291
1296
  object-fit: cover;
1292
1297
  object-position: center;
1293
- border-bottom: 1px solid var(--color-muted-2);
1298
+ border-bottom: 1px solid var(--tl-color-muted-2);
1294
1299
  }
1295
1300
 
1296
1301
  .tl-bookmark__copy_container {
1297
- background-color: var(--color-muted-0);
1298
- padding: var(--space-4);
1302
+ background-color: var(--tl-color-muted-0);
1303
+ padding: var(--tl-space-4);
1299
1304
  pointer-events: all;
1300
1305
  display: flex;
1301
1306
  flex-direction: column;
@@ -1315,7 +1320,7 @@ input,
1315
1320
  font-size: 16px;
1316
1321
  line-height: 1.6;
1317
1322
  font-weight: bold;
1318
- padding-bottom: var(--space-2);
1323
+ padding-bottom: var(--tl-space-2);
1319
1324
  overflow: hidden;
1320
1325
  max-height: calc((16px * 1.6) * 2);
1321
1326
  -webkit-box-orient: vertical;
@@ -1335,19 +1340,19 @@ input,
1335
1340
  line-clamp: 3;
1336
1341
  text-overflow: ellipsis;
1337
1342
  display: -webkit-box;
1338
- color: var(--color-text-2);
1339
- margin: var(--space-2) 0px;
1343
+ color: var(--tl-color-text-2);
1344
+ margin: var(--tl-space-2) 0px;
1340
1345
  }
1341
1346
 
1342
1347
  .tl-bookmark__heading + .tl-bookmark__link,
1343
1348
  .tl-bookmark__description + .tl-bookmark__link {
1344
- margin-top: var(--space-3);
1349
+ margin-top: var(--tl-space-3);
1345
1350
  }
1346
1351
  .tl-bookmark__link {
1347
1352
  font-size: 12px;
1348
1353
  pointer-events: all;
1349
1354
  display: flex;
1350
- color: var(--color-text-2);
1355
+ color: var(--tl-color-text-2);
1351
1356
  align-items: center;
1352
1357
  cursor: var(--tl-cursor-pointer);
1353
1358
  width: fit-content;
@@ -1389,7 +1394,7 @@ input,
1389
1394
  width: 100%;
1390
1395
  height: 100%;
1391
1396
  pointer-events: all;
1392
- /* background-color: var(--color-background); */
1397
+ /* background-color: var(--tl-color-background); */
1393
1398
 
1394
1399
  display: flex;
1395
1400
  justify-content: center;
@@ -1418,7 +1423,7 @@ input,
1418
1423
  height: 100%;
1419
1424
  pointer-events: all;
1420
1425
  opacity: 1;
1421
- z-index: var(--layer-text-container);
1426
+ z-index: var(--tl-layer-text-container);
1422
1427
  border-radius: 1px;
1423
1428
  }
1424
1429
 
@@ -1434,22 +1439,22 @@ input,
1434
1439
  }
1435
1440
 
1436
1441
  .tl-frame__creating {
1437
- stroke: var(--color-selected);
1442
+ stroke: var(--tl-color-selected);
1438
1443
  fill: none;
1439
1444
  }
1440
1445
 
1441
1446
  .tl-frame-heading {
1442
- --frame-padding-x: 6px;
1443
- --frame-height: 24px;
1444
- --frame-minimum-width: 32px;
1445
- --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;
1446
1451
  display: flex;
1447
1452
  align-items: center;
1448
1453
  position: absolute;
1449
1454
  transform-origin: 0% 100%;
1450
1455
  overflow: hidden;
1451
1456
  max-width: 100%;
1452
- min-width: var(--frame-minimum-width);
1457
+ min-width: var(--tl-frame-minimum-width);
1453
1458
  height: auto;
1454
1459
  font-size: 12px;
1455
1460
  padding-bottom: 4px;
@@ -1461,18 +1466,18 @@ input,
1461
1466
  /* scale from bottom left corner so we can pin it to the top left corner of the frame */
1462
1467
  transform-origin: 0% 100%;
1463
1468
  display: flex;
1464
- height: var(--frame-height);
1469
+ height: var(--tl-frame-height);
1465
1470
  width: 100%;
1466
1471
  align-items: center;
1467
- border-radius: var(--radius-1);
1472
+ border-radius: var(--tl-radius-1);
1468
1473
  }
1469
1474
 
1470
1475
  .tl-frame-label {
1471
1476
  pointer-events: all;
1472
1477
  overflow: hidden;
1473
1478
  text-overflow: ellipsis;
1474
- padding: 0px var(--frame-padding-x);
1475
- border-radius: var(--radius-1);
1479
+ padding: 0px var(--tl-frame-padding-x);
1480
+ border-radius: var(--tl-radius-1);
1476
1481
  position: relative;
1477
1482
  font-size: inherit;
1478
1483
  white-space: pre;
@@ -1482,12 +1487,12 @@ input,
1482
1487
  color: transparent;
1483
1488
  white-space: pre;
1484
1489
  width: auto;
1485
- min-width: var(--frame-minimum-width);
1490
+ min-width: var(--tl-frame-minimum-width);
1486
1491
  height: 100%;
1487
1492
  overflow: visible;
1488
- background-color: var(--color-panel);
1489
- border-color: var(--color-selected);
1490
- 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);
1491
1496
  }
1492
1497
 
1493
1498
  .tl-frame-name-input {
@@ -1495,7 +1500,7 @@ input,
1495
1500
  border: none;
1496
1501
  background: none;
1497
1502
  outline: none;
1498
- padding: 0px var(--frame-padding-x);
1503
+ padding: 0px var(--tl-frame-padding-x);
1499
1504
  inset: 0px;
1500
1505
  height: 100%;
1501
1506
  width: 100%;
@@ -1503,8 +1508,8 @@ input,
1503
1508
  font-family: inherit;
1504
1509
  font-weight: inherit;
1505
1510
  width: 100%;
1506
- color: var(--color-text-1);
1507
- border-radius: var(--radius-1);
1511
+ color: var(--tl-color-text-1);
1512
+ border-radius: var(--tl-radius-1);
1508
1513
  user-select: all;
1509
1514
  -webkit-user-select: text;
1510
1515
  white-space: pre;
@@ -1524,7 +1529,7 @@ input,
1524
1529
 
1525
1530
  .tl-embed {
1526
1531
  border: none;
1527
- border-radius: var(--radius-2);
1532
+ border-radius: var(--tl-radius-2);
1528
1533
  }
1529
1534
 
1530
1535
  /* -------------- Shape error boundary -------------- */
@@ -1532,11 +1537,11 @@ input,
1532
1537
  .tl-shape-error-boundary {
1533
1538
  width: 100%;
1534
1539
  height: 100%;
1535
- background-color: var(--color-muted-1);
1540
+ background-color: var(--tl-color-muted-1);
1536
1541
  border-width: calc(1px * var(--tl-scale));
1537
- border-color: var(--color-muted-1);
1542
+ border-color: var(--tl-color-muted-1);
1538
1543
  border-style: solid;
1539
- border-radius: calc(var(--radius-1) * var(--tl-scale));
1544
+ border-radius: calc(var(--tl-radius-1) * var(--tl-scale));
1540
1545
  display: flex;
1541
1546
  flex-direction: column;
1542
1547
  align-items: center;
@@ -1545,7 +1550,7 @@ input,
1545
1550
  position: relative;
1546
1551
  pointer-events: all;
1547
1552
  overflow: hidden;
1548
- padding: var(--space-2);
1553
+ padding: var(--tl-space-2);
1549
1554
  }
1550
1555
 
1551
1556
  .tl-shape-error-boundary::before {
@@ -1553,7 +1558,7 @@ input,
1553
1558
  content: 'Error';
1554
1559
  font-size: 12px;
1555
1560
  font-family: inherit;
1556
- color: var(--color-text-0);
1561
+ color: var(--tl-color-text-0);
1557
1562
  }
1558
1563
 
1559
1564
  /* ----------------- Error boundary ----------------- */
@@ -1564,9 +1569,9 @@ input,
1564
1569
  display: flex;
1565
1570
  align-items: center;
1566
1571
  justify-content: center;
1567
- padding: var(--space-4);
1568
- background-color: var(--color-background);
1569
- 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);
1570
1575
  position: absolute;
1571
1576
  }
1572
1577
 
@@ -1575,8 +1580,8 @@ input,
1575
1580
  inset: 0px;
1576
1581
  height: 100%;
1577
1582
  width: 100%;
1578
- z-index: var(--layer-error-overlay);
1579
- background-color: var(--color-overlay);
1583
+ z-index: var(--tl-layer-error-overlay);
1584
+ background-color: var(--tl-color-overlay);
1580
1585
  }
1581
1586
 
1582
1587
  .tl-error-boundary__content * {
@@ -1591,7 +1596,7 @@ input,
1591
1596
  inset: 0px;
1592
1597
  height: 100%;
1593
1598
  width: 100%;
1594
- z-index: var(--layer-error-canvas);
1599
+ z-index: var(--tl-layer-error-canvas);
1595
1600
  }
1596
1601
 
1597
1602
  /* some browsers seem to have some weird interactions between stacking contexts
@@ -1604,7 +1609,7 @@ it from receiving any pointer events or affecting the cursor. */
1604
1609
  inset: 0px;
1605
1610
  height: 100%;
1606
1611
  width: 100%;
1607
- z-index: var(--layer-error-canvas-after);
1612
+ z-index: var(--tl-layer-error-canvas-after);
1608
1613
  pointer-events: all;
1609
1614
  }
1610
1615
 
@@ -1614,16 +1619,16 @@ it from receiving any pointer events or affecting the cursor. */
1614
1619
  max-width: 100%;
1615
1620
  width: 400px;
1616
1621
  max-height: 100%;
1617
- background-color: var(--color-panel);
1622
+ background-color: var(--tl-color-panel);
1618
1623
  padding: 16px;
1619
1624
  border-radius: 16px;
1620
- box-shadow: var(--shadow-2);
1625
+ box-shadow: var(--tl-shadow-2);
1621
1626
  font-size: 14px;
1622
1627
  font-weight: 400;
1623
1628
  display: flex;
1624
1629
  flex-direction: column;
1625
1630
  overflow: auto;
1626
- z-index: var(--layer-error-content);
1631
+ z-index: var(--tl-layer-error-content);
1627
1632
  gap: 12px;
1628
1633
  }
1629
1634
 
@@ -1638,10 +1643,10 @@ it from receiving any pointer events or affecting the cursor. */
1638
1643
  }
1639
1644
 
1640
1645
  .tl-error-boundary__content h4 {
1641
- border: 1px solid var(--color-low-border);
1646
+ border: 1px solid var(--tl-color-low-border);
1642
1647
  margin: -6px 0 0 0;
1643
- padding: var(--space-5);
1644
- border-radius: var(--radius-2);
1648
+ padding: var(--tl-space-5);
1649
+ border-radius: var(--tl-radius-2);
1645
1650
  font-weight: normal;
1646
1651
  }
1647
1652
 
@@ -1651,10 +1656,10 @@ it from receiving any pointer events or affecting the cursor. */
1651
1656
  }
1652
1657
 
1653
1658
  .tl-error-boundary__content pre {
1654
- background-color: var(--color-muted-2);
1659
+ background-color: var(--tl-color-muted-2);
1655
1660
  margin-top: 0;
1656
- padding: var(--space-5);
1657
- border-radius: var(--radius-2);
1661
+ padding: var(--tl-space-5);
1662
+ border-radius: var(--tl-radius-2);
1658
1663
  overflow: auto;
1659
1664
  font-size: 12px;
1660
1665
  max-height: 320px;
@@ -1666,15 +1671,15 @@ it from receiving any pointer events or affecting the cursor. */
1666
1671
  font-family: inherit;
1667
1672
  font-size: 14px;
1668
1673
  font-weight: 500;
1669
- padding: var(--space-4);
1670
- border-radius: var(--radius-3);
1674
+ padding: var(--tl-space-4);
1675
+ border-radius: var(--tl-radius-3);
1671
1676
  cursor: var(--tl-cursor-pointer);
1672
1677
  color: inherit;
1673
1678
  background-color: transparent;
1674
1679
  }
1675
1680
 
1676
1681
  .tl-error-boundary__content a {
1677
- color: var(--color-selected);
1682
+ color: var(--tl-color-selected);
1678
1683
  font-weight: 500;
1679
1684
  text-decoration: none;
1680
1685
  }
@@ -1686,31 +1691,31 @@ it from receiving any pointer events or affecting the cursor. */
1686
1691
 
1687
1692
  .tl-error-boundary__content__error button {
1688
1693
  position: absolute;
1689
- top: var(--space-2);
1690
- right: var(--space-2);
1694
+ top: var(--tl-space-2);
1695
+ right: var(--tl-space-2);
1691
1696
  font-size: 12px;
1692
- padding: var(--space-2) var(--space-3);
1693
- background-color: var(--color-panel);
1694
- 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);
1695
1700
  }
1696
1701
 
1697
1702
  .tl-error-boundary__content__actions {
1698
1703
  display: flex;
1699
1704
  justify-content: space-between;
1700
- gap: var(--space-4);
1705
+ gap: var(--tl-space-4);
1701
1706
  margin: 0px;
1702
1707
  margin-left: -4px;
1703
1708
  }
1704
1709
  .tl-error-boundary__content__actions__group {
1705
1710
  display: flex;
1706
- gap: var(--space-4);
1711
+ gap: var(--tl-space-4);
1707
1712
  }
1708
1713
  .tl-error-boundary__content .tl-error-boundary__reset {
1709
- color: var(--color-danger);
1714
+ color: var(--tl-color-danger);
1710
1715
  }
1711
1716
  .tl-error-boundary__content .tl-error-boundary__refresh {
1712
- background-color: var(--color-primary);
1713
- color: var(--color-selected-contrast);
1717
+ background-color: var(--tl-color-primary);
1718
+ color: var(--tl-color-selected-contrast);
1714
1719
  }
1715
1720
  .tl-container__focused:not(.tl-container__no-focus-ring)
1716
1721
  .tlui-button.tl-error-boundary__refresh:focus-visible {
@@ -1722,7 +1727,7 @@ it from receiving any pointer events or affecting the cursor. */
1722
1727
 
1723
1728
  .tl-hit-test-blocker {
1724
1729
  position: absolute;
1725
- z-index: var(--layer-canvas-blocker);
1730
+ z-index: var(--tl-layer-canvas-blocker);
1726
1731
  inset: 0px;
1727
1732
  width: 100%;
1728
1733
  height: 100%;
@@ -1742,32 +1747,32 @@ it from receiving any pointer events or affecting the cursor. */
1742
1747
 
1743
1748
  .tl-handle__bg:hover {
1744
1749
  cursor: var(--tl-cursor-grab);
1745
- fill: var(--color-selection-fill);
1750
+ fill: var(--tl-color-selection-fill);
1746
1751
  }
1747
1752
 
1748
1753
  .tl-bookmark__link:hover {
1749
- color: var(--color-selected);
1754
+ color: var(--tl-color-selected);
1750
1755
  }
1751
1756
 
1752
1757
  .tl-hyperlink-button:hover {
1753
- color: var(--color-selected);
1758
+ color: var(--tl-color-selected);
1754
1759
  }
1755
1760
 
1756
1761
  .tl-error-boundary__content button:hover {
1757
- background-color: var(--color-low);
1762
+ background-color: var(--tl-color-low);
1758
1763
  }
1759
1764
  .tl-error-boundary__content a:hover {
1760
- color: var(--color-text-1);
1765
+ color: var(--tl-color-text-1);
1761
1766
  }
1762
1767
  .tl-error-boundary__content .tl-error-boundary__refresh:hover {
1763
- background-color: var(--color-primary);
1768
+ background-color: var(--tl-color-primary);
1764
1769
  opacity: 0.9;
1765
1770
  }
1766
1771
 
1767
1772
  /* These three rules help preserve clicking into specific points in text areas *while*
1768
1773
  * already in edit mode when jumping from shape to shape. */
1769
1774
  .tl-canvas[data-iseditinganything='true'] .tl-text-wrapper:hover .tl-text-input {
1770
- z-index: var(--layer-text-editor);
1775
+ z-index: var(--tl-layer-text-editor);
1771
1776
  pointer-events: all;
1772
1777
  }
1773
1778
  }