@tldraw/tlschema 4.6.0-next.4dde09fa17ab → 4.6.0-next.59173cd7226e

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 (79) hide show
  1. package/dist-cjs/assets/TLBaseAsset.js +4 -3
  2. package/dist-cjs/assets/TLBaseAsset.js.map +2 -2
  3. package/dist-cjs/assets/TLBookmarkAsset.js +9 -7
  4. package/dist-cjs/assets/TLBookmarkAsset.js.map +2 -2
  5. package/dist-cjs/assets/TLImageAsset.js +12 -10
  6. package/dist-cjs/assets/TLImageAsset.js.map +2 -2
  7. package/dist-cjs/assets/TLVideoAsset.js +11 -9
  8. package/dist-cjs/assets/TLVideoAsset.js.map +2 -2
  9. package/dist-cjs/createTLSchema.js +10 -4
  10. package/dist-cjs/createTLSchema.js.map +2 -2
  11. package/dist-cjs/index.d.ts +601 -343
  12. package/dist-cjs/index.js +17 -7
  13. package/dist-cjs/index.js.map +2 -2
  14. package/dist-cjs/records/TLAsset.js +29 -14
  15. package/dist-cjs/records/TLAsset.js.map +2 -2
  16. package/dist-cjs/shapes/TLFrameShape.js +3 -1
  17. package/dist-cjs/shapes/TLFrameShape.js.map +2 -2
  18. package/dist-cjs/shapes/TLNoteShape.js +12 -2
  19. package/dist-cjs/shapes/TLNoteShape.js.map +2 -2
  20. package/dist-cjs/styles/StyleProp.js +38 -1
  21. package/dist-cjs/styles/StyleProp.js.map +2 -2
  22. package/dist-cjs/styles/TLColorStyle.js +36 -487
  23. package/dist-cjs/styles/TLColorStyle.js.map +2 -2
  24. package/dist-cjs/styles/TLDashStyle.js +1 -1
  25. package/dist-cjs/styles/TLDashStyle.js.map +2 -2
  26. package/dist-cjs/styles/TLFontFace.js +17 -0
  27. package/dist-cjs/styles/TLFontFace.js.map +7 -0
  28. package/dist-cjs/styles/TLFontStyle.js +36 -1
  29. package/dist-cjs/styles/TLFontStyle.js.map +2 -2
  30. package/dist-cjs/styles/TLTheme.js +17 -0
  31. package/dist-cjs/styles/TLTheme.js.map +7 -0
  32. package/dist-esm/assets/TLBaseAsset.mjs +4 -3
  33. package/dist-esm/assets/TLBaseAsset.mjs.map +2 -2
  34. package/dist-esm/assets/TLBookmarkAsset.mjs +9 -7
  35. package/dist-esm/assets/TLBookmarkAsset.mjs.map +2 -2
  36. package/dist-esm/assets/TLImageAsset.mjs +12 -10
  37. package/dist-esm/assets/TLImageAsset.mjs.map +2 -2
  38. package/dist-esm/assets/TLVideoAsset.mjs +11 -9
  39. package/dist-esm/assets/TLVideoAsset.mjs.map +2 -2
  40. package/dist-esm/createTLSchema.mjs +17 -8
  41. package/dist-esm/createTLSchema.mjs.map +2 -2
  42. package/dist-esm/index.d.mts +601 -343
  43. package/dist-esm/index.mjs +28 -14
  44. package/dist-esm/index.mjs.map +2 -2
  45. package/dist-esm/records/TLAsset.mjs +29 -14
  46. package/dist-esm/records/TLAsset.mjs.map +2 -2
  47. package/dist-esm/shapes/TLFrameShape.mjs +3 -1
  48. package/dist-esm/shapes/TLFrameShape.mjs.map +2 -2
  49. package/dist-esm/shapes/TLNoteShape.mjs +12 -2
  50. package/dist-esm/shapes/TLNoteShape.mjs.map +2 -2
  51. package/dist-esm/styles/StyleProp.mjs +38 -1
  52. package/dist-esm/styles/StyleProp.mjs.map +2 -2
  53. package/dist-esm/styles/TLColorStyle.mjs +36 -487
  54. package/dist-esm/styles/TLColorStyle.mjs.map +2 -2
  55. package/dist-esm/styles/TLDashStyle.mjs +1 -1
  56. package/dist-esm/styles/TLDashStyle.mjs.map +2 -2
  57. package/dist-esm/styles/TLFontFace.mjs +1 -0
  58. package/dist-esm/styles/TLFontFace.mjs.map +7 -0
  59. package/dist-esm/styles/TLFontStyle.mjs +36 -1
  60. package/dist-esm/styles/TLFontStyle.mjs.map +2 -2
  61. package/dist-esm/styles/TLTheme.mjs +1 -0
  62. package/dist-esm/styles/TLTheme.mjs.map +7 -0
  63. package/package.json +5 -5
  64. package/src/assets/TLBaseAsset.ts +25 -28
  65. package/src/assets/TLBookmarkAsset.ts +13 -33
  66. package/src/assets/TLImageAsset.ts +16 -42
  67. package/src/assets/TLVideoAsset.ts +15 -40
  68. package/src/createTLSchema.ts +54 -15
  69. package/src/index.ts +31 -11
  70. package/src/migrations.test.ts +22 -0
  71. package/src/records/TLAsset.ts +139 -74
  72. package/src/shapes/TLFrameShape.ts +3 -1
  73. package/src/shapes/TLNoteShape.ts +19 -5
  74. package/src/styles/StyleProp.ts +42 -5
  75. package/src/styles/TLColorStyle.ts +55 -698
  76. package/src/styles/TLDashStyle.ts +1 -1
  77. package/src/styles/TLFontFace.ts +65 -0
  78. package/src/styles/TLFontStyle.ts +53 -4
  79. package/src/styles/TLTheme.ts +240 -0
@@ -19,12 +19,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var TLColorStyle_exports = {};
20
20
  __export(TLColorStyle_exports, {
21
21
  DefaultColorStyle: () => DefaultColorStyle,
22
- DefaultColorThemePalette: () => DefaultColorThemePalette,
23
22
  DefaultLabelColorStyle: () => DefaultLabelColorStyle,
24
- defaultColorNames: () => defaultColorNames,
25
- getColorValue: () => getColorValue,
26
- getDefaultColorTheme: () => getDefaultColorTheme,
27
- isDefaultThemeColor: () => isDefaultThemeColor
23
+ registerColorsFromThemes: () => registerColorsFromThemes
28
24
  });
29
25
  module.exports = __toCommonJS(TLColorStyle_exports);
30
26
  var import_StyleProp = require("./StyleProp");
@@ -43,480 +39,6 @@ const defaultColorNames = [
43
39
  "red",
44
40
  "white"
45
41
  ];
46
- const DefaultColorThemePalette = {
47
- lightMode: {
48
- id: "light",
49
- text: "#000000",
50
- background: "#f9fafb",
51
- solid: "#fcfffe",
52
- black: {
53
- solid: "#1d1d1d",
54
- fill: "#1d1d1d",
55
- linedFill: "#363636",
56
- frameHeadingStroke: "#717171",
57
- frameHeadingFill: "#ffffff",
58
- frameStroke: "#717171",
59
- frameFill: "#ffffff",
60
- frameText: "#000000",
61
- noteFill: "#FCE19C",
62
- noteText: "#000000",
63
- semi: "#e8e8e8",
64
- pattern: "#494949",
65
- highlightSrgb: "#fddd00",
66
- highlightP3: "color(display-p3 0.972 0.8205 0.05)"
67
- },
68
- blue: {
69
- solid: "#4465e9",
70
- fill: "#4465e9",
71
- linedFill: "#6580ec",
72
- frameHeadingStroke: "#6681ec",
73
- frameHeadingFill: "#f9fafe",
74
- frameStroke: "#6681ec",
75
- frameFill: "#f9fafe",
76
- frameText: "#000000",
77
- noteFill: "#8AA3FF",
78
- noteText: "#000000",
79
- semi: "#dce1f8",
80
- pattern: "#6681ee",
81
- highlightSrgb: "#10acff",
82
- highlightP3: "color(display-p3 0.308 0.6632 0.9996)"
83
- },
84
- green: {
85
- solid: "#099268",
86
- fill: "#099268",
87
- linedFill: "#0bad7c",
88
- frameHeadingStroke: "#37a684",
89
- frameHeadingFill: "#f8fcfa",
90
- frameStroke: "#37a684",
91
- frameFill: "#f8fcfa",
92
- frameText: "#000000",
93
- noteFill: "#6FC896",
94
- noteText: "#000000",
95
- semi: "#d3e9e3",
96
- pattern: "#39a785",
97
- highlightSrgb: "#00ffc8",
98
- highlightP3: "color(display-p3 0.2536 0.984 0.7981)"
99
- },
100
- grey: {
101
- solid: "#9fa8b2",
102
- fill: "#9fa8b2",
103
- linedFill: "#bbc1c9",
104
- frameHeadingStroke: "#aaaaab",
105
- frameHeadingFill: "#fbfcfc",
106
- frameStroke: "#aaaaab",
107
- frameFill: "#fcfcfd",
108
- frameText: "#000000",
109
- noteFill: "#C0CAD3",
110
- noteText: "#000000",
111
- semi: "#eceef0",
112
- pattern: "#bcc3c9",
113
- highlightSrgb: "#cbe7f1",
114
- highlightP3: "color(display-p3 0.8163 0.9023 0.9416)"
115
- },
116
- "light-blue": {
117
- solid: "#4ba1f1",
118
- fill: "#4ba1f1",
119
- linedFill: "#7abaf5",
120
- frameHeadingStroke: "#6cb2f3",
121
- frameHeadingFill: "#f8fbfe",
122
- frameStroke: "#6cb2f3",
123
- frameFill: "#fafcff",
124
- frameText: "#000000",
125
- noteFill: "#9BC4FD",
126
- noteText: "#000000",
127
- semi: "#ddedfa",
128
- pattern: "#6fbbf8",
129
- highlightSrgb: "#00f4ff",
130
- highlightP3: "color(display-p3 0.1512 0.9414 0.9996)"
131
- },
132
- "light-green": {
133
- solid: "#4cb05e",
134
- fill: "#4cb05e",
135
- linedFill: "#7ec88c",
136
- frameHeadingStroke: "#6dbe7c",
137
- frameHeadingFill: "#f8fcf9",
138
- frameStroke: "#6dbe7c",
139
- frameFill: "#fafdfa",
140
- frameText: "#000000",
141
- noteFill: "#98D08A",
142
- noteText: "#000000",
143
- semi: "#dbf0e0",
144
- pattern: "#65cb78",
145
- highlightSrgb: "#65f641",
146
- highlightP3: "color(display-p3 0.563 0.9495 0.3857)"
147
- },
148
- "light-red": {
149
- solid: "#f87777",
150
- fill: "#f87777",
151
- linedFill: "#f99a9a",
152
- frameHeadingStroke: "#f89090",
153
- frameHeadingFill: "#fffafa",
154
- frameStroke: "#f89090",
155
- frameFill: "#fffbfb",
156
- frameText: "#000000",
157
- noteFill: "#F7A5A1",
158
- noteText: "#000000",
159
- semi: "#f4dadb",
160
- pattern: "#fe9e9e",
161
- highlightSrgb: "#ff7fa3",
162
- highlightP3: "color(display-p3 0.9988 0.5301 0.6397)"
163
- },
164
- "light-violet": {
165
- solid: "#e085f4",
166
- fill: "#e085f4",
167
- linedFill: "#e9abf7",
168
- frameHeadingStroke: "#e59bf5",
169
- frameHeadingFill: "#fefaff",
170
- frameStroke: "#e59bf5",
171
- frameFill: "#fefbff",
172
- frameText: "#000000",
173
- noteFill: "#DFB0F9",
174
- noteText: "#000000",
175
- semi: "#f5eafa",
176
- pattern: "#e9acf8",
177
- highlightSrgb: "#ff88ff",
178
- highlightP3: "color(display-p3 0.9676 0.5652 0.9999)"
179
- },
180
- orange: {
181
- solid: "#e16919",
182
- fill: "#e16919",
183
- linedFill: "#ea8643",
184
- frameHeadingStroke: "#e68544",
185
- frameHeadingFill: "#fef9f6",
186
- frameStroke: "#e68544",
187
- frameFill: "#fef9f6",
188
- frameText: "#000000",
189
- noteFill: "#FAA475",
190
- noteText: "#000000",
191
- semi: "#f8e2d4",
192
- pattern: "#f78438",
193
- highlightSrgb: "#ffa500",
194
- highlightP3: "color(display-p3 0.9988 0.6905 0.266)"
195
- },
196
- red: {
197
- solid: "#e03131",
198
- fill: "#e03131",
199
- linedFill: "#e75f5f",
200
- frameHeadingStroke: "#e55757",
201
- frameHeadingFill: "#fef7f7",
202
- frameStroke: "#e55757",
203
- frameFill: "#fef9f9",
204
- frameText: "#000000",
205
- noteFill: "#FC8282",
206
- noteText: "#000000",
207
- semi: "#f4dadb",
208
- pattern: "#e55959",
209
- highlightSrgb: "#ff636e",
210
- highlightP3: "color(display-p3 0.9992 0.4376 0.45)"
211
- },
212
- violet: {
213
- solid: "#ae3ec9",
214
- fill: "#ae3ec9",
215
- linedFill: "#be68d4",
216
- frameHeadingStroke: "#bc62d3",
217
- frameHeadingFill: "#fcf7fd",
218
- frameStroke: "#bc62d3",
219
- frameFill: "#fdf9fd",
220
- frameText: "#000000",
221
- noteFill: "#DB91FD",
222
- noteText: "#000000",
223
- semi: "#ecdcf2",
224
- pattern: "#bd63d3",
225
- highlightSrgb: "#c77cff",
226
- highlightP3: "color(display-p3 0.7469 0.5089 0.9995)"
227
- },
228
- yellow: {
229
- solid: "#f1ac4b",
230
- fill: "#f1ac4b",
231
- linedFill: "#f5c27a",
232
- frameHeadingStroke: "#f3bb6c",
233
- frameHeadingFill: "#fefcf8",
234
- frameStroke: "#f3bb6c",
235
- frameFill: "#fffdfa",
236
- frameText: "#000000",
237
- noteFill: "#FED49A",
238
- noteText: "#000000",
239
- semi: "#f9f0e6",
240
- pattern: "#fecb92",
241
- highlightSrgb: "#fddd00",
242
- highlightP3: "color(display-p3 0.972 0.8705 0.05)"
243
- },
244
- white: {
245
- solid: "#FFFFFF",
246
- fill: "#FFFFFF",
247
- linedFill: "#ffffff",
248
- semi: "#f5f5f5",
249
- pattern: "#f9f9f9",
250
- frameHeadingStroke: "#7d7d7d",
251
- frameHeadingFill: "#ffffff",
252
- frameStroke: "#7d7d7d",
253
- frameFill: "#ffffff",
254
- frameText: "#000000",
255
- noteFill: "#FFFFFF",
256
- noteText: "#000000",
257
- highlightSrgb: "#ffffff",
258
- highlightP3: "color(display-p3 1 1 1)"
259
- }
260
- },
261
- darkMode: {
262
- id: "dark",
263
- text: "hsl(210, 17%, 98%)",
264
- background: "hsl(240, 5%, 6.5%)",
265
- solid: "#010403",
266
- black: {
267
- solid: "#f2f2f2",
268
- fill: "#f2f2f2",
269
- linedFill: "#ffffff",
270
- frameHeadingStroke: "#5c5c5c",
271
- frameHeadingFill: "#252525",
272
- frameStroke: "#5c5c5c",
273
- frameFill: "#0c0c0c",
274
- frameText: "#f2f2f2",
275
- noteFill: "#2c2c2c",
276
- noteText: "#f2f2f2",
277
- semi: "#2c3036",
278
- pattern: "#989898",
279
- highlightSrgb: "#d2b700",
280
- highlightP3: "color(display-p3 0.8078 0.6225 0.0312)"
281
- },
282
- blue: {
283
- solid: "#4f72fc",
284
- // 3c60f0
285
- fill: "#4f72fc",
286
- linedFill: "#3c5cdd",
287
- frameHeadingStroke: "#384994",
288
- frameHeadingFill: "#1C2036",
289
- frameStroke: "#384994",
290
- frameFill: "#11141f",
291
- frameText: "#f2f2f2",
292
- noteFill: "#2A3F98",
293
- noteText: "#f2f2f2",
294
- semi: "#262d40",
295
- pattern: "#3a4b9e",
296
- highlightSrgb: "#0079d2",
297
- highlightP3: "color(display-p3 0.0032 0.4655 0.7991)"
298
- },
299
- green: {
300
- solid: "#099268",
301
- fill: "#099268",
302
- linedFill: "#087856",
303
- frameHeadingStroke: "#10513C",
304
- frameHeadingFill: "#14241f",
305
- frameStroke: "#10513C",
306
- frameFill: "#0E1614",
307
- frameText: "#f2f2f2",
308
- noteFill: "#014429",
309
- noteText: "#f2f2f2",
310
- semi: "#253231",
311
- pattern: "#366a53",
312
- highlightSrgb: "#009774",
313
- highlightP3: "color(display-p3 0.0085 0.582 0.4604)"
314
- },
315
- grey: {
316
- solid: "#9398b0",
317
- fill: "#9398b0",
318
- linedFill: "#8388a5",
319
- frameHeadingStroke: "#42474D",
320
- frameHeadingFill: "#23262A",
321
- frameStroke: "#42474D",
322
- frameFill: "#151719",
323
- frameText: "#f2f2f2",
324
- noteFill: "#56595F",
325
- noteText: "#f2f2f2",
326
- semi: "#33373c",
327
- pattern: "#7c8187",
328
- highlightSrgb: "#9cb4cb",
329
- highlightP3: "color(display-p3 0.6299 0.7012 0.7856)"
330
- },
331
- "light-blue": {
332
- solid: "#4dabf7",
333
- fill: "#4dabf7",
334
- linedFill: "#2793ec",
335
- frameHeadingStroke: "#075797",
336
- frameHeadingFill: "#142839",
337
- frameStroke: "#075797",
338
- frameFill: "#0B1823",
339
- frameText: "#f2f2f2",
340
- noteFill: "#1F5495",
341
- noteText: "#f2f2f2",
342
- semi: "#2a3642",
343
- pattern: "#4d7aa9",
344
- highlightSrgb: "#00bdc8",
345
- highlightP3: "color(display-p3 0.0023 0.7259 0.7735)"
346
- },
347
- "light-green": {
348
- solid: "#40c057",
349
- fill: "#40c057",
350
- linedFill: "#37a44b",
351
- frameHeadingStroke: "#1C5427",
352
- frameHeadingFill: "#18251A",
353
- frameStroke: "#1C5427",
354
- frameFill: "#0F1911",
355
- frameText: "#f2f2f2",
356
- noteFill: "#21581D",
357
- noteText: "#f2f2f2",
358
- semi: "#2a3830",
359
- pattern: "#4e874e",
360
- highlightSrgb: "#00a000",
361
- highlightP3: "color(display-p3 0.2711 0.6172 0.0195)"
362
- },
363
- "light-red": {
364
- solid: "#ff8787",
365
- fill: "#ff8787",
366
- linedFill: "#ff6666",
367
- frameHeadingStroke: "#6f3232",
368
- // Darker and desaturated variant of solid
369
- frameHeadingFill: "#341818",
370
- // Deep, muted dark red
371
- frameStroke: "#6f3232",
372
- // Matches headingStroke
373
- frameFill: "#181212",
374
- // Darker, muted background shade
375
- frameText: "#f2f2f2",
376
- // Consistent bright text color
377
- noteFill: "#7a3333",
378
- // Medium-dark, muted variant of solid
379
- noteText: "#f2f2f2",
380
- semi: "#3c2b2b",
381
- // Subdued, darker neutral-red tone
382
- pattern: "#a56767",
383
- // Existing pattern shade retained
384
- highlightSrgb: "#db005b",
385
- highlightP3: "color(display-p3 0.7849 0.0585 0.3589)"
386
- },
387
- "light-violet": {
388
- solid: "#e599f7",
389
- fill: "#e599f7",
390
- linedFill: "#dc71f4",
391
- frameHeadingStroke: "#6c367a",
392
- frameHeadingFill: "#2D2230",
393
- frameStroke: "#6c367a",
394
- frameFill: "#1C151E",
395
- frameText: "#f2f2f2",
396
- noteFill: "#762F8E",
397
- noteText: "#f2f2f2",
398
- semi: "#383442",
399
- pattern: "#9770a9",
400
- highlightSrgb: "#c400c7",
401
- highlightP3: "color(display-p3 0.7024 0.0403 0.753)"
402
- },
403
- orange: {
404
- solid: "#f76707",
405
- fill: "#f76707",
406
- linedFill: "#f54900",
407
- frameHeadingStroke: "#773a0e",
408
- // Darker, muted version of solid
409
- frameHeadingFill: "#2f1d13",
410
- // Deep, warm, muted background
411
- frameStroke: "#773a0e",
412
- // Matches headingStroke
413
- frameFill: "#1c1512",
414
- // Darker, richer muted background
415
- frameText: "#f2f2f2",
416
- // Bright text for contrast
417
- noteFill: "#7c3905",
418
- // Muted dark variant for note fill
419
- noteText: "#f2f2f2",
420
- semi: "#3b2e27",
421
- // Muted neutral-orange tone
422
- pattern: "#9f552d",
423
- // Retained existing shade
424
- highlightSrgb: "#d07a00",
425
- highlightP3: "color(display-p3 0.7699 0.4937 0.0085)"
426
- },
427
- red: {
428
- solid: "#e03131",
429
- fill: "#e03131",
430
- linedFill: "#c31d1d",
431
- frameHeadingStroke: "#701e1e",
432
- // Darker, muted variation of solid
433
- frameHeadingFill: "#301616",
434
- // Deep, muted reddish backdrop
435
- frameStroke: "#701e1e",
436
- // Matches headingStroke
437
- frameFill: "#1b1313",
438
- // Rich, dark muted background
439
- frameText: "#f2f2f2",
440
- // Bright text for readability
441
- noteFill: "#7e201f",
442
- // Muted dark variant for note fill
443
- noteText: "#f2f2f2",
444
- semi: "#382726",
445
- // Dark neutral-red tone
446
- pattern: "#8f3734",
447
- // Existing pattern color retained
448
- highlightSrgb: "#de002c",
449
- highlightP3: "color(display-p3 0.7978 0.0509 0.2035)"
450
- },
451
- violet: {
452
- solid: "#ae3ec9",
453
- fill: "#ae3ec9",
454
- linedFill: "#8f2fa7",
455
- frameHeadingStroke: "#6d1583",
456
- // Darker, muted variation of solid
457
- frameHeadingFill: "#27152e",
458
- // Deep, rich muted violet backdrop
459
- frameStroke: "#6d1583",
460
- // Matches headingStroke
461
- frameFill: "#1b0f21",
462
- // Darker muted violet background
463
- frameText: "#f2f2f2",
464
- // Consistent bright text color
465
- noteFill: "#5f1c70",
466
- // Muted dark variant for note fill
467
- noteText: "#f2f2f2",
468
- semi: "#342938",
469
- // Dark neutral-violet tone
470
- pattern: "#763a8b",
471
- // Retained existing pattern color
472
- highlightSrgb: "#9e00ee",
473
- highlightP3: "color(display-p3 0.5651 0.0079 0.8986)"
474
- },
475
- yellow: {
476
- solid: "#ffc034",
477
- fill: "#ffc034",
478
- linedFill: "#ffae00",
479
- frameHeadingStroke: "#684e12",
480
- // Darker, muted variant of solid
481
- frameHeadingFill: "#2a2113",
482
- // Rich, muted dark-yellow background
483
- frameStroke: "#684e12",
484
- // Matches headingStroke
485
- frameFill: "#1e1911",
486
- // Darker muted shade for background fill
487
- frameText: "#f2f2f2",
488
- // Bright text color for readability
489
- noteFill: "#8a5e1c",
490
- // Muted, dark complementary variant
491
- noteText: "#f2f2f2",
492
- semi: "#3b352b",
493
- // Dark muted neutral-yellow tone
494
- pattern: "#fecb92",
495
- // Existing shade retained
496
- highlightSrgb: "#d2b700",
497
- highlightP3: "color(display-p3 0.8078 0.7225 0.0312)"
498
- },
499
- white: {
500
- solid: "#f3f3f3",
501
- fill: "#f3f3f3",
502
- linedFill: "#f3f3f3",
503
- semi: "#f5f5f5",
504
- pattern: "#f9f9f9",
505
- frameHeadingStroke: "#ffffff",
506
- frameHeadingFill: "#ffffff",
507
- frameStroke: "#ffffff",
508
- frameFill: "#ffffff",
509
- frameText: "#000000",
510
- noteFill: "#eaeaea",
511
- noteText: "#1d1d1d",
512
- highlightSrgb: "#ffffff",
513
- highlightP3: "color(display-p3 1 1 1)"
514
- }
515
- }
516
- };
517
- function getDefaultColorTheme(opts) {
518
- return opts.isDarkMode ? DefaultColorThemePalette.darkMode : DefaultColorThemePalette.lightMode;
519
- }
520
42
  const DefaultColorStyle = import_StyleProp.StyleProp.defineEnum("tldraw:color", {
521
43
  defaultValue: "black",
522
44
  values: defaultColorNames
@@ -525,14 +47,41 @@ const DefaultLabelColorStyle = import_StyleProp.StyleProp.defineEnum("tldraw:lab
525
47
  defaultValue: "black",
526
48
  values: defaultColorNames
527
49
  });
528
- const defaultColorNamesSet = new Set(defaultColorNames);
529
- function isDefaultThemeColor(color) {
530
- return defaultColorNamesSet.has(color);
531
- }
532
- function getColorValue(theme, color, variant) {
533
- if (!isDefaultThemeColor(color)) {
534
- return color;
50
+ function registerColorsFromThemes(definitions) {
51
+ const colorNames = /* @__PURE__ */ new Set();
52
+ for (const def of Object.values(definitions)) {
53
+ for (const colorPalette of [def.colors.light, def.colors.dark]) {
54
+ for (const [key, value] of Object.entries(colorPalette)) {
55
+ if (typeof value === "object" && value !== null) {
56
+ colorNames.add(key);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ if (colorNames.size > 0) {
62
+ DefaultColorStyle.addValues(...colorNames);
63
+ DefaultLabelColorStyle.addValues(...colorNames);
64
+ }
65
+ const toRemove = DefaultColorStyle.values.filter((v) => !colorNames.has(v));
66
+ if (toRemove.length > 0) {
67
+ DefaultColorStyle.removeValues(...toRemove);
68
+ DefaultLabelColorStyle.removeValues(...toRemove);
69
+ }
70
+ if (process.env.NODE_ENV !== "production") {
71
+ for (const def of Object.values(definitions)) {
72
+ for (const color of colorNames) {
73
+ if (!(color in def.colors.light)) {
74
+ console.warn(
75
+ `Theme '${def.id}' light palette is missing color '${color}'. Shapes using this color won't render correctly.`
76
+ );
77
+ }
78
+ if (!(color in def.colors.dark)) {
79
+ console.warn(
80
+ `Theme '${def.id}' dark palette is missing color '${color}'. Shapes using this color won't render correctly.`
81
+ );
82
+ }
83
+ }
84
+ }
535
85
  }
536
- return theme[color][variant];
537
86
  }
538
87
  //# sourceMappingURL=TLColorStyle.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/styles/TLColorStyle.ts"],
4
- "sourcesContent": ["import { Expand } from '@tldraw/utils'\nimport { T } from '@tldraw/validate'\nimport { StyleProp } from './StyleProp'\n\n/**\n * Array of default color names available in tldraw's color palette.\n * These colors form the basis for the default color style system and are available\n * in both light and dark theme variants.\n *\n * @example\n * ```ts\n * import { defaultColorNames } from '@tldraw/tlschema'\n *\n * // Create a color picker with all default colors\n * const colorOptions = defaultColorNames.map(color => ({\n * name: color,\n * value: color\n * }))\n * ```\n *\n * @public\n */\nexport const defaultColorNames = [\n\t'black',\n\t'grey',\n\t'light-violet',\n\t'violet',\n\t'blue',\n\t'light-blue',\n\t'yellow',\n\t'orange',\n\t'green',\n\t'light-green',\n\t'light-red',\n\t'red',\n\t'white',\n] as const\n\n/**\n * Defines the color variants available for each color in the default theme.\n * Each color has multiple variants for different use cases like fills, strokes,\n * patterns, and UI elements like frames and notes.\n *\n * @example\n * ```ts\n * import { TLDefaultColorThemeColor } from '@tldraw/tlschema'\n *\n * const blueColor: TLDefaultColorThemeColor = {\n * solid: '#4465e9',\n * semi: '#dce1f8',\n * pattern: '#6681ee',\n * fill: '#4465e9',\n * // ... other variants\n * }\n * ```\n *\n * @public\n */\nexport interface TLDefaultColorThemeColor {\n\tsolid: string\n\tsemi: string\n\tpattern: string\n\tfill: string // usually same as solid\n\tlinedFill: string // usually slightly lighter than fill\n\tframeHeadingStroke: string\n\tframeHeadingFill: string\n\tframeStroke: string\n\tframeFill: string\n\tframeText: string\n\tnoteFill: string\n\tnoteText: string\n\thighlightSrgb: string\n\thighlightP3: string\n}\n\n/**\n * Complete color theme definition containing all colors and their variants\n * for either light or dark mode. Includes base theme properties and all\n * default colors with their respective color variants.\n *\n * @example\n * ```ts\n * import { TLDefaultColorTheme } from '@tldraw/tlschema'\n *\n * const customTheme: TLDefaultColorTheme = {\n * id: 'light',\n * text: '#000000',\n * background: '#ffffff',\n * solid: '#fcfffe',\n * black: { solid: '#000000', semi: '#cccccc', ... },\n * // ... other colors\n * }\n * ```\n *\n * @public\n */\nexport type TLDefaultColorTheme = Expand<\n\t{\n\t\tid: 'light' | 'dark'\n\t\ttext: string\n\t\tbackground: string\n\t\tsolid: string\n\t} & Record<(typeof defaultColorNames)[number], TLDefaultColorThemeColor>\n>\n\n/**\n * Complete color palette containing both light and dark theme definitions.\n * This object provides the full color system used by tldraw's default themes,\n * including all color variants and theme-specific adjustments.\n *\n * @example\n * ```ts\n * import { DefaultColorThemePalette } from '@tldraw/tlschema'\n *\n * // Get the dark theme colors\n * const darkTheme = DefaultColorThemePalette.darkMode\n * const redColor = darkTheme.red.solid // '#e03131'\n *\n * // Access light theme colors\n * const lightTheme = DefaultColorThemePalette.lightMode\n * const blueColor = lightTheme.blue.fill // '#4465e9'\n * ```\n *\n * @public\n */\nexport const DefaultColorThemePalette: {\n\tlightMode: TLDefaultColorTheme\n\tdarkMode: TLDefaultColorTheme\n} = {\n\tlightMode: {\n\t\tid: 'light',\n\t\ttext: '#000000',\n\t\tbackground: '#f9fafb',\n\t\tsolid: '#fcfffe',\n\t\tblack: {\n\t\t\tsolid: '#1d1d1d',\n\t\t\tfill: '#1d1d1d',\n\t\t\tlinedFill: '#363636',\n\t\t\tframeHeadingStroke: '#717171',\n\t\t\tframeHeadingFill: '#ffffff',\n\t\t\tframeStroke: '#717171',\n\t\t\tframeFill: '#ffffff',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#FCE19C',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#e8e8e8',\n\t\t\tpattern: '#494949',\n\t\t\thighlightSrgb: '#fddd00',\n\t\t\thighlightP3: 'color(display-p3 0.972 0.8205 0.05)',\n\t\t},\n\t\tblue: {\n\t\t\tsolid: '#4465e9',\n\t\t\tfill: '#4465e9',\n\t\t\tlinedFill: '#6580ec',\n\t\t\tframeHeadingStroke: '#6681ec',\n\t\t\tframeHeadingFill: '#f9fafe',\n\t\t\tframeStroke: '#6681ec',\n\t\t\tframeFill: '#f9fafe',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#8AA3FF',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#dce1f8',\n\t\t\tpattern: '#6681ee',\n\t\t\thighlightSrgb: '#10acff',\n\t\t\thighlightP3: 'color(display-p3 0.308 0.6632 0.9996)',\n\t\t},\n\t\tgreen: {\n\t\t\tsolid: '#099268',\n\t\t\tfill: '#099268',\n\t\t\tlinedFill: '#0bad7c',\n\t\t\tframeHeadingStroke: '#37a684',\n\t\t\tframeHeadingFill: '#f8fcfa',\n\t\t\tframeStroke: '#37a684',\n\t\t\tframeFill: '#f8fcfa',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#6FC896',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#d3e9e3',\n\t\t\tpattern: '#39a785',\n\t\t\thighlightSrgb: '#00ffc8',\n\t\t\thighlightP3: 'color(display-p3 0.2536 0.984 0.7981)',\n\t\t},\n\t\tgrey: {\n\t\t\tsolid: '#9fa8b2',\n\t\t\tfill: '#9fa8b2',\n\t\t\tlinedFill: '#bbc1c9',\n\t\t\tframeHeadingStroke: '#aaaaab',\n\t\t\tframeHeadingFill: '#fbfcfc',\n\t\t\tframeStroke: '#aaaaab',\n\t\t\tframeFill: '#fcfcfd',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#C0CAD3',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#eceef0',\n\t\t\tpattern: '#bcc3c9',\n\t\t\thighlightSrgb: '#cbe7f1',\n\t\t\thighlightP3: 'color(display-p3 0.8163 0.9023 0.9416)',\n\t\t},\n\t\t'light-blue': {\n\t\t\tsolid: '#4ba1f1',\n\t\t\tfill: '#4ba1f1',\n\t\t\tlinedFill: '#7abaf5',\n\t\t\tframeHeadingStroke: '#6cb2f3',\n\t\t\tframeHeadingFill: '#f8fbfe',\n\t\t\tframeStroke: '#6cb2f3',\n\t\t\tframeFill: '#fafcff',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#9BC4FD',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#ddedfa',\n\t\t\tpattern: '#6fbbf8',\n\t\t\thighlightSrgb: '#00f4ff',\n\t\t\thighlightP3: 'color(display-p3 0.1512 0.9414 0.9996)',\n\t\t},\n\t\t'light-green': {\n\t\t\tsolid: '#4cb05e',\n\t\t\tfill: '#4cb05e',\n\t\t\tlinedFill: '#7ec88c',\n\t\t\tframeHeadingStroke: '#6dbe7c',\n\t\t\tframeHeadingFill: '#f8fcf9',\n\t\t\tframeStroke: '#6dbe7c',\n\t\t\tframeFill: '#fafdfa',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#98D08A',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#dbf0e0',\n\t\t\tpattern: '#65cb78',\n\t\t\thighlightSrgb: '#65f641',\n\t\t\thighlightP3: 'color(display-p3 0.563 0.9495 0.3857)',\n\t\t},\n\t\t'light-red': {\n\t\t\tsolid: '#f87777',\n\t\t\tfill: '#f87777',\n\t\t\tlinedFill: '#f99a9a',\n\t\t\tframeHeadingStroke: '#f89090',\n\t\t\tframeHeadingFill: '#fffafa',\n\t\t\tframeStroke: '#f89090',\n\t\t\tframeFill: '#fffbfb',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#F7A5A1',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#f4dadb',\n\t\t\tpattern: '#fe9e9e',\n\t\t\thighlightSrgb: '#ff7fa3',\n\t\t\thighlightP3: 'color(display-p3 0.9988 0.5301 0.6397)',\n\t\t},\n\t\t'light-violet': {\n\t\t\tsolid: '#e085f4',\n\t\t\tfill: '#e085f4',\n\t\t\tlinedFill: '#e9abf7',\n\t\t\tframeHeadingStroke: '#e59bf5',\n\t\t\tframeHeadingFill: '#fefaff',\n\t\t\tframeStroke: '#e59bf5',\n\t\t\tframeFill: '#fefbff',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#DFB0F9',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#f5eafa',\n\t\t\tpattern: '#e9acf8',\n\t\t\thighlightSrgb: '#ff88ff',\n\t\t\thighlightP3: 'color(display-p3 0.9676 0.5652 0.9999)',\n\t\t},\n\t\torange: {\n\t\t\tsolid: '#e16919',\n\t\t\tfill: '#e16919',\n\t\t\tlinedFill: '#ea8643',\n\t\t\tframeHeadingStroke: '#e68544',\n\t\t\tframeHeadingFill: '#fef9f6',\n\t\t\tframeStroke: '#e68544',\n\t\t\tframeFill: '#fef9f6',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#FAA475',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#f8e2d4',\n\t\t\tpattern: '#f78438',\n\t\t\thighlightSrgb: '#ffa500',\n\t\t\thighlightP3: 'color(display-p3 0.9988 0.6905 0.266)',\n\t\t},\n\t\tred: {\n\t\t\tsolid: '#e03131',\n\t\t\tfill: '#e03131',\n\t\t\tlinedFill: '#e75f5f',\n\t\t\tframeHeadingStroke: '#e55757',\n\t\t\tframeHeadingFill: '#fef7f7',\n\t\t\tframeStroke: '#e55757',\n\t\t\tframeFill: '#fef9f9',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#FC8282',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#f4dadb',\n\t\t\tpattern: '#e55959',\n\t\t\thighlightSrgb: '#ff636e',\n\t\t\thighlightP3: 'color(display-p3 0.9992 0.4376 0.45)',\n\t\t},\n\t\tviolet: {\n\t\t\tsolid: '#ae3ec9',\n\t\t\tfill: '#ae3ec9',\n\t\t\tlinedFill: '#be68d4',\n\t\t\tframeHeadingStroke: '#bc62d3',\n\t\t\tframeHeadingFill: '#fcf7fd',\n\t\t\tframeStroke: '#bc62d3',\n\t\t\tframeFill: '#fdf9fd',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#DB91FD',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#ecdcf2',\n\t\t\tpattern: '#bd63d3',\n\t\t\thighlightSrgb: '#c77cff',\n\t\t\thighlightP3: 'color(display-p3 0.7469 0.5089 0.9995)',\n\t\t},\n\t\tyellow: {\n\t\t\tsolid: '#f1ac4b',\n\t\t\tfill: '#f1ac4b',\n\t\t\tlinedFill: '#f5c27a',\n\t\t\tframeHeadingStroke: '#f3bb6c',\n\t\t\tframeHeadingFill: '#fefcf8',\n\t\t\tframeStroke: '#f3bb6c',\n\t\t\tframeFill: '#fffdfa',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#FED49A',\n\t\t\tnoteText: '#000000',\n\t\t\tsemi: '#f9f0e6',\n\t\t\tpattern: '#fecb92',\n\t\t\thighlightSrgb: '#fddd00',\n\t\t\thighlightP3: 'color(display-p3 0.972 0.8705 0.05)',\n\t\t},\n\t\twhite: {\n\t\t\tsolid: '#FFFFFF',\n\t\t\tfill: '#FFFFFF',\n\t\t\tlinedFill: '#ffffff',\n\t\t\tsemi: '#f5f5f5',\n\t\t\tpattern: '#f9f9f9',\n\t\t\tframeHeadingStroke: '#7d7d7d',\n\t\t\tframeHeadingFill: '#ffffff',\n\t\t\tframeStroke: '#7d7d7d',\n\t\t\tframeFill: '#ffffff',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#FFFFFF',\n\t\t\tnoteText: '#000000',\n\t\t\thighlightSrgb: '#ffffff',\n\t\t\thighlightP3: 'color(display-p3 1 1 1)',\n\t\t},\n\t},\n\tdarkMode: {\n\t\tid: 'dark',\n\t\ttext: 'hsl(210, 17%, 98%)',\n\t\tbackground: 'hsl(240, 5%, 6.5%)',\n\t\tsolid: '#010403',\n\n\t\tblack: {\n\t\t\tsolid: '#f2f2f2',\n\t\t\tfill: '#f2f2f2',\n\t\t\tlinedFill: '#ffffff',\n\t\t\tframeHeadingStroke: '#5c5c5c',\n\t\t\tframeHeadingFill: '#252525',\n\t\t\tframeStroke: '#5c5c5c',\n\t\t\tframeFill: '#0c0c0c',\n\t\t\tframeText: '#f2f2f2',\n\t\t\tnoteFill: '#2c2c2c',\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#2c3036',\n\t\t\tpattern: '#989898',\n\t\t\thighlightSrgb: '#d2b700',\n\t\t\thighlightP3: 'color(display-p3 0.8078 0.6225 0.0312)',\n\t\t},\n\t\tblue: {\n\t\t\tsolid: '#4f72fc', // 3c60f0\n\t\t\tfill: '#4f72fc',\n\t\t\tlinedFill: '#3c5cdd',\n\t\t\tframeHeadingStroke: '#384994',\n\t\t\tframeHeadingFill: '#1C2036',\n\t\t\tframeStroke: '#384994',\n\t\t\tframeFill: '#11141f',\n\t\t\tframeText: '#f2f2f2',\n\t\t\tnoteFill: '#2A3F98',\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#262d40',\n\t\t\tpattern: '#3a4b9e',\n\t\t\thighlightSrgb: '#0079d2',\n\t\t\thighlightP3: 'color(display-p3 0.0032 0.4655 0.7991)',\n\t\t},\n\t\tgreen: {\n\t\t\tsolid: '#099268',\n\t\t\tfill: '#099268',\n\t\t\tlinedFill: '#087856',\n\t\t\tframeHeadingStroke: '#10513C',\n\t\t\tframeHeadingFill: '#14241f',\n\t\t\tframeStroke: '#10513C',\n\t\t\tframeFill: '#0E1614',\n\t\t\tframeText: '#f2f2f2',\n\t\t\tnoteFill: '#014429',\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#253231',\n\t\t\tpattern: '#366a53',\n\t\t\thighlightSrgb: '#009774',\n\t\t\thighlightP3: 'color(display-p3 0.0085 0.582 0.4604)',\n\t\t},\n\t\tgrey: {\n\t\t\tsolid: '#9398b0',\n\t\t\tfill: '#9398b0',\n\t\t\tlinedFill: '#8388a5',\n\t\t\tframeHeadingStroke: '#42474D',\n\t\t\tframeHeadingFill: '#23262A',\n\t\t\tframeStroke: '#42474D',\n\t\t\tframeFill: '#151719',\n\t\t\tframeText: '#f2f2f2',\n\t\t\tnoteFill: '#56595F',\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#33373c',\n\t\t\tpattern: '#7c8187',\n\t\t\thighlightSrgb: '#9cb4cb',\n\t\t\thighlightP3: 'color(display-p3 0.6299 0.7012 0.7856)',\n\t\t},\n\t\t'light-blue': {\n\t\t\tsolid: '#4dabf7',\n\t\t\tfill: '#4dabf7',\n\t\t\tlinedFill: '#2793ec',\n\t\t\tframeHeadingStroke: '#075797',\n\t\t\tframeHeadingFill: '#142839',\n\t\t\tframeStroke: '#075797',\n\t\t\tframeFill: '#0B1823',\n\t\t\tframeText: '#f2f2f2',\n\t\t\tnoteFill: '#1F5495',\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#2a3642',\n\t\t\tpattern: '#4d7aa9',\n\t\t\thighlightSrgb: '#00bdc8',\n\t\t\thighlightP3: 'color(display-p3 0.0023 0.7259 0.7735)',\n\t\t},\n\t\t'light-green': {\n\t\t\tsolid: '#40c057',\n\t\t\tfill: '#40c057',\n\t\t\tlinedFill: '#37a44b',\n\t\t\tframeHeadingStroke: '#1C5427',\n\t\t\tframeHeadingFill: '#18251A',\n\t\t\tframeStroke: '#1C5427',\n\t\t\tframeFill: '#0F1911',\n\t\t\tframeText: '#f2f2f2',\n\t\t\tnoteFill: '#21581D',\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#2a3830',\n\t\t\tpattern: '#4e874e',\n\t\t\thighlightSrgb: '#00a000',\n\t\t\thighlightP3: 'color(display-p3 0.2711 0.6172 0.0195)',\n\t\t},\n\t\t'light-red': {\n\t\t\tsolid: '#ff8787',\n\t\t\tfill: '#ff8787',\n\t\t\tlinedFill: '#ff6666',\n\t\t\tframeHeadingStroke: '#6f3232', // Darker and desaturated variant of solid\n\t\t\tframeHeadingFill: '#341818', // Deep, muted dark red\n\t\t\tframeStroke: '#6f3232', // Matches headingStroke\n\t\t\tframeFill: '#181212', // Darker, muted background shade\n\t\t\tframeText: '#f2f2f2', // Consistent bright text color\n\t\t\tnoteFill: '#7a3333', // Medium-dark, muted variant of solid\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#3c2b2b', // Subdued, darker neutral-red tone\n\t\t\tpattern: '#a56767', // Existing pattern shade retained\n\t\t\thighlightSrgb: '#db005b',\n\t\t\thighlightP3: 'color(display-p3 0.7849 0.0585 0.3589)',\n\t\t},\n\t\t'light-violet': {\n\t\t\tsolid: '#e599f7',\n\t\t\tfill: '#e599f7',\n\t\t\tlinedFill: '#dc71f4',\n\t\t\tframeHeadingStroke: '#6c367a',\n\t\t\tframeHeadingFill: '#2D2230',\n\t\t\tframeStroke: '#6c367a',\n\t\t\tframeFill: '#1C151E',\n\t\t\tframeText: '#f2f2f2',\n\t\t\tnoteFill: '#762F8E',\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#383442',\n\t\t\tpattern: '#9770a9',\n\t\t\thighlightSrgb: '#c400c7',\n\t\t\thighlightP3: 'color(display-p3 0.7024 0.0403 0.753)',\n\t\t},\n\t\torange: {\n\t\t\tsolid: '#f76707',\n\t\t\tfill: '#f76707',\n\t\t\tlinedFill: '#f54900',\n\t\t\tframeHeadingStroke: '#773a0e', // Darker, muted version of solid\n\t\t\tframeHeadingFill: '#2f1d13', // Deep, warm, muted background\n\t\t\tframeStroke: '#773a0e', // Matches headingStroke\n\t\t\tframeFill: '#1c1512', // Darker, richer muted background\n\t\t\tframeText: '#f2f2f2', // Bright text for contrast\n\t\t\tnoteFill: '#7c3905', // Muted dark variant for note fill\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#3b2e27', // Muted neutral-orange tone\n\t\t\tpattern: '#9f552d', // Retained existing shade\n\t\t\thighlightSrgb: '#d07a00',\n\t\t\thighlightP3: 'color(display-p3 0.7699 0.4937 0.0085)',\n\t\t},\n\t\tred: {\n\t\t\tsolid: '#e03131',\n\t\t\tfill: '#e03131',\n\t\t\tlinedFill: '#c31d1d',\n\t\t\tframeHeadingStroke: '#701e1e', // Darker, muted variation of solid\n\t\t\tframeHeadingFill: '#301616', // Deep, muted reddish backdrop\n\t\t\tframeStroke: '#701e1e', // Matches headingStroke\n\t\t\tframeFill: '#1b1313', // Rich, dark muted background\n\t\t\tframeText: '#f2f2f2', // Bright text for readability\n\t\t\tnoteFill: '#7e201f', // Muted dark variant for note fill\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#382726', // Dark neutral-red tone\n\t\t\tpattern: '#8f3734', // Existing pattern color retained\n\t\t\thighlightSrgb: '#de002c',\n\t\t\thighlightP3: 'color(display-p3 0.7978 0.0509 0.2035)',\n\t\t},\n\t\tviolet: {\n\t\t\tsolid: '#ae3ec9',\n\t\t\tfill: '#ae3ec9',\n\t\t\tlinedFill: '#8f2fa7',\n\t\t\tframeHeadingStroke: '#6d1583', // Darker, muted variation of solid\n\t\t\tframeHeadingFill: '#27152e', // Deep, rich muted violet backdrop\n\t\t\tframeStroke: '#6d1583', // Matches headingStroke\n\t\t\tframeFill: '#1b0f21', // Darker muted violet background\n\t\t\tframeText: '#f2f2f2', // Consistent bright text color\n\t\t\tnoteFill: '#5f1c70', // Muted dark variant for note fill\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#342938', // Dark neutral-violet tone\n\t\t\tpattern: '#763a8b', // Retained existing pattern color\n\t\t\thighlightSrgb: '#9e00ee',\n\t\t\thighlightP3: 'color(display-p3 0.5651 0.0079 0.8986)',\n\t\t},\n\t\tyellow: {\n\t\t\tsolid: '#ffc034',\n\t\t\tfill: '#ffc034',\n\t\t\tlinedFill: '#ffae00',\n\t\t\tframeHeadingStroke: '#684e12', // Darker, muted variant of solid\n\t\t\tframeHeadingFill: '#2a2113', // Rich, muted dark-yellow background\n\t\t\tframeStroke: '#684e12', // Matches headingStroke\n\t\t\tframeFill: '#1e1911', // Darker muted shade for background fill\n\t\t\tframeText: '#f2f2f2', // Bright text color for readability\n\t\t\tnoteFill: '#8a5e1c', // Muted, dark complementary variant\n\t\t\tnoteText: '#f2f2f2',\n\t\t\tsemi: '#3b352b', // Dark muted neutral-yellow tone\n\t\t\tpattern: '#fecb92', // Existing shade retained\n\t\t\thighlightSrgb: '#d2b700',\n\t\t\thighlightP3: 'color(display-p3 0.8078 0.7225 0.0312)',\n\t\t},\n\t\twhite: {\n\t\t\tsolid: '#f3f3f3',\n\t\t\tfill: '#f3f3f3',\n\t\t\tlinedFill: '#f3f3f3',\n\t\t\tsemi: '#f5f5f5',\n\t\t\tpattern: '#f9f9f9',\n\t\t\tframeHeadingStroke: '#ffffff',\n\t\t\tframeHeadingFill: '#ffffff',\n\t\t\tframeStroke: '#ffffff',\n\t\t\tframeFill: '#ffffff',\n\t\t\tframeText: '#000000',\n\t\t\tnoteFill: '#eaeaea',\n\t\t\tnoteText: '#1d1d1d',\n\t\t\thighlightSrgb: '#ffffff',\n\t\t\thighlightP3: 'color(display-p3 1 1 1)',\n\t\t},\n\t},\n}\n\n/**\n * Returns the appropriate default color theme based on the dark mode preference.\n *\n * @param opts - Configuration options\n * - isDarkMode - Whether to return the dark theme (true) or light theme (false)\n * @returns The corresponding TLDefaultColorTheme (light or dark)\n *\n * @example\n * ```ts\n * import { getDefaultColorTheme } from '@tldraw/tlschema'\n *\n * // Get light theme\n * const lightTheme = getDefaultColorTheme({ isDarkMode: false })\n *\n * // Get dark theme\n * const darkTheme = getDefaultColorTheme({ isDarkMode: true })\n *\n * // Use with editor\n * const theme = getDefaultColorTheme({ isDarkMode: window.matchMedia('(prefers-color-scheme: dark)').matches })\n * ```\n *\n * @public\n */\nexport function getDefaultColorTheme(opts: { isDarkMode: boolean }): TLDefaultColorTheme {\n\treturn opts.isDarkMode ? DefaultColorThemePalette.darkMode : DefaultColorThemePalette.lightMode\n}\n\n/**\n * Default color style property used by tldraw shapes for their primary color.\n * This style prop allows shapes to use any of the default color names and\n * automatically saves the last used value for new shapes.\n *\n * @example\n * ```ts\n * import { DefaultColorStyle } from '@tldraw/tlschema'\n *\n * // Use in shape props definition\n * interface MyShapeProps {\n * color: typeof DefaultColorStyle\n * // other props...\n * }\n *\n * // Set color on a shape\n * const shape = {\n * // ... other properties\n * props: {\n * color: 'red' as const,\n * // ... other props\n * }\n * }\n * ```\n *\n * @public\n */\nexport const DefaultColorStyle = StyleProp.defineEnum('tldraw:color', {\n\tdefaultValue: 'black',\n\tvalues: defaultColorNames,\n})\n\n/**\n * Default label color style property used for text labels on shapes.\n * This is separate from the main color style to allow different colors\n * for shape fills/strokes versus their text labels.\n *\n * @example\n * ```ts\n * import { DefaultLabelColorStyle } from '@tldraw/tlschema'\n *\n * // Use in shape props definition\n * interface MyShapeProps {\n * labelColor: typeof DefaultLabelColorStyle\n * // other props...\n * }\n *\n * // Create a shape with different fill and label colors\n * const shape = {\n * // ... other properties\n * props: {\n * color: 'blue' as const,\n * labelColor: 'white' as const,\n * // ... other props\n * }\n * }\n * ```\n *\n * @public\n */\nexport const DefaultLabelColorStyle = StyleProp.defineEnum('tldraw:labelColor', {\n\tdefaultValue: 'black',\n\tvalues: defaultColorNames,\n})\n\n/**\n * Type representing a default color style value.\n * This is a union type of all available default color names.\n *\n * @example\n * ```ts\n * import { TLDefaultColorStyle } from '@tldraw/tlschema'\n *\n * // Valid color values\n * const redColor: TLDefaultColorStyle = 'red'\n * const blueColor: TLDefaultColorStyle = 'blue'\n *\n * // Type guard usage\n * function isValidColor(color: string): color is TLDefaultColorStyle {\n * return ['black', 'red', 'blue'].includes(color as TLDefaultColorStyle)\n * }\n * ```\n *\n * @public\n */\nexport type TLDefaultColorStyle = T.TypeOf<typeof DefaultColorStyle>\n\nconst defaultColorNamesSet = new Set(defaultColorNames)\n\n/**\n * Type guard to check if a color value is one of the default theme colors.\n * Useful for determining if a color can be looked up in the theme palette.\n *\n * @param color - The color value to check\n * @returns True if the color is a default theme color, false otherwise\n *\n * @example\n * ```ts\n * import { isDefaultThemeColor, TLDefaultColorStyle } from '@tldraw/tlschema'\n *\n * const color: TLDefaultColorStyle = 'red'\n *\n * if (isDefaultThemeColor(color)) {\n * // color is guaranteed to be a default theme color\n * console.log(`${color} is a default theme color`)\n * } else {\n * // color might be a custom hex value or other format\n * console.log(`${color} is a custom color`)\n * }\n * ```\n *\n * @public\n */\nexport function isDefaultThemeColor(\n\tcolor: TLDefaultColorStyle\n): color is (typeof defaultColorNames)[number] {\n\treturn defaultColorNamesSet.has(color as (typeof defaultColorNames)[number])\n}\n\n/**\n * Resolves a color style value to its actual CSS color string for a given theme and variant.\n * If the color is not a default theme color, returns the color value as-is.\n *\n * @param theme - The color theme to use for resolution\n * @param color - The color style value to resolve\n * @param variant - Which variant of the color to return (solid, fill, pattern, etc.)\n * @returns The CSS color string for the specified color and variant\n *\n * @example\n * ```ts\n * import { getColorValue, getDefaultColorTheme } from '@tldraw/tlschema'\n *\n * const theme = getDefaultColorTheme({ isDarkMode: false })\n *\n * // Get the solid variant of red\n * const redSolid = getColorValue(theme, 'red', 'solid') // '#e03131'\n *\n * // Get the fill variant of blue\n * const blueFill = getColorValue(theme, 'blue', 'fill') // '#4465e9'\n *\n * // Custom color passes through unchanged\n * const customColor = getColorValue(theme, '#ff0000', 'solid') // '#ff0000'\n * ```\n *\n * @public\n */\nexport function getColorValue(\n\ttheme: TLDefaultColorTheme,\n\tcolor: TLDefaultColorStyle,\n\tvariant: keyof TLDefaultColorThemeColor\n): string {\n\tif (!isDefaultThemeColor(color)) {\n\t\treturn color\n\t}\n\n\treturn theme[color][variant]\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { StyleProp } from './StyleProp'\nimport { TLDefaultColor, TLThemeDefaultColors, TLThemes } from './TLTheme'\n\n/**\n * The names of all available shape colors, derived from {@link TLThemeDefaultColors}.\n * Extend {@link TLThemeDefaultColors} to add custom color names.\n *\n * @public\n */\nexport type TLDefaultColorStyle = {\n\t[K in keyof TLThemeDefaultColors]: TLThemeDefaultColors[K] extends TLDefaultColor ? K : never\n}[keyof TLThemeDefaultColors] &\n\tstring\n\n/**\n * Used only for initial values of the color style; the source of truth has moved to TLTheme.\n *\n * @internal\n */\nconst defaultColorNames: TLDefaultColorStyle[] = [\n\t'black',\n\t'grey',\n\t'light-violet',\n\t'violet',\n\t'blue',\n\t'light-blue',\n\t'yellow',\n\t'orange',\n\t'green',\n\t'light-green',\n\t'light-red',\n\t'red',\n\t'white',\n] as const\n\n/**\n * @public\n */\nexport const DefaultColorStyle = StyleProp.defineEnum('tldraw:color', {\n\tdefaultValue: 'black',\n\tvalues: defaultColorNames,\n})\n\n/**\n * @public\n */\nexport const DefaultLabelColorStyle = StyleProp.defineEnum('tldraw:labelColor', {\n\tdefaultValue: 'black',\n\tvalues: defaultColorNames,\n})\n\n/**\n * Scan theme definitions and sync color registrations to match.\n * A color entry is any key in `TLThemeColors` whose value is an object\n * (i.e. a {@link TLDefaultColor}), as opposed to utility strings like\n * `background` or `text`.\n *\n * Colors present in themes but not yet registered will be added.\n * Colors currently registered but absent from all themes will be removed.\n *\n * @public\n */\nexport function registerColorsFromThemes(definitions: TLThemes): void {\n\tconst colorNames = new Set<TLDefaultColorStyle>()\n\tfor (const def of Object.values(definitions)) {\n\t\tfor (const colorPalette of [def.colors.light, def.colors.dark]) {\n\t\t\tfor (const [key, value] of Object.entries(colorPalette)) {\n\t\t\t\tif (typeof value === 'object' && value !== null) {\n\t\t\t\t\tcolorNames.add(key as TLDefaultColorStyle)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (colorNames.size > 0) {\n\t\tDefaultColorStyle.addValues(...colorNames)\n\t\tDefaultLabelColorStyle.addValues(...colorNames)\n\t}\n\n\tconst toRemove = DefaultColorStyle.values.filter((v) => !colorNames.has(v as TLDefaultColorStyle))\n\tif (toRemove.length > 0) {\n\t\tDefaultColorStyle.removeValues(...toRemove)\n\t\tDefaultLabelColorStyle.removeValues(...toRemove)\n\t}\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t\tfor (const def of Object.values(definitions)) {\n\t\t\tfor (const color of colorNames) {\n\t\t\t\tif (!(color in def.colors.light)) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Theme '${def.id}' light palette is missing color '${color}'. Shapes using this color won't render correctly.`\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tif (!(color in def.colors.dark)) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Theme '${def.id}' dark palette is missing color '${color}'. Shapes using this color won't render correctly.`\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0B;AAmB1B,MAAM,oBAA2C;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAKO,MAAM,oBAAoB,2BAAU,WAAW,gBAAgB;AAAA,EACrE,cAAc;AAAA,EACd,QAAQ;AACT,CAAC;AAKM,MAAM,yBAAyB,2BAAU,WAAW,qBAAqB;AAAA,EAC/E,cAAc;AAAA,EACd,QAAQ;AACT,CAAC;AAaM,SAAS,yBAAyB,aAA6B;AACrE,QAAM,aAAa,oBAAI,IAAyB;AAChD,aAAW,OAAO,OAAO,OAAO,WAAW,GAAG;AAC7C,eAAW,gBAAgB,CAAC,IAAI,OAAO,OAAO,IAAI,OAAO,IAAI,GAAG;AAC/D,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACxD,YAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAChD,qBAAW,IAAI,GAA0B;AAAA,QAC1C;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACA,MAAI,WAAW,OAAO,GAAG;AACxB,sBAAkB,UAAU,GAAG,UAAU;AACzC,2BAAuB,UAAU,GAAG,UAAU;AAAA,EAC/C;AAEA,QAAM,WAAW,kBAAkB,OAAO,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,CAAwB,CAAC;AACjG,MAAI,SAAS,SAAS,GAAG;AACxB,sBAAkB,aAAa,GAAG,QAAQ;AAC1C,2BAAuB,aAAa,GAAG,QAAQ;AAAA,EAChD;AAEA,MAAI,QAAQ,IAAI,aAAa,cAAc;AAC1C,eAAW,OAAO,OAAO,OAAO,WAAW,GAAG;AAC7C,iBAAW,SAAS,YAAY;AAC/B,YAAI,EAAE,SAAS,IAAI,OAAO,QAAQ;AACjC,kBAAQ;AAAA,YACP,UAAU,IAAI,EAAE,qCAAqC,KAAK;AAAA,UAC3D;AAAA,QACD;AACA,YAAI,EAAE,SAAS,IAAI,OAAO,OAAO;AAChC,kBAAQ;AAAA,YACP,UAAU,IAAI,EAAE,oCAAoC,KAAK;AAAA,UAC1D;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;",
6
6
  "names": []
7
7
  }
@@ -24,6 +24,6 @@ module.exports = __toCommonJS(TLDashStyle_exports);
24
24
  var import_StyleProp = require("./StyleProp");
25
25
  const DefaultDashStyle = import_StyleProp.StyleProp.defineEnum("tldraw:dash", {
26
26
  defaultValue: "draw",
27
- values: ["draw", "solid", "dashed", "dotted"]
27
+ values: ["draw", "solid", "dashed", "dotted", "none"]
28
28
  });
29
29
  //# sourceMappingURL=TLDashStyle.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/styles/TLDashStyle.ts"],
4
- "sourcesContent": ["import { T } from '@tldraw/validate'\nimport { StyleProp } from './StyleProp'\n\n/**\n * Default dash style property used by tldraw shapes for line styling.\n * Controls how shape outlines and lines are rendered with different dash patterns.\n *\n * Available values:\n * - `draw` - Hand-drawn, sketchy line style\n * - `solid` - Continuous solid line\n * - `dashed` - Evenly spaced dashes\n * - `dotted` - Evenly spaced dots\n *\n * @example\n * ```ts\n * import { DefaultDashStyle } from '@tldraw/tlschema'\n *\n * // Use in shape props definition\n * interface MyShapeProps {\n * dash: typeof DefaultDashStyle\n * // other props...\n * }\n *\n * // Create a shape with dashed outline\n * const shape = {\n * // ... other properties\n * props: {\n * dash: 'dashed' as const,\n * // ... other props\n * }\n * }\n * ```\n *\n * @public\n */\nexport const DefaultDashStyle = StyleProp.defineEnum('tldraw:dash', {\n\tdefaultValue: 'draw',\n\tvalues: ['draw', 'solid', 'dashed', 'dotted'],\n})\n\n/**\n * Type representing a default dash style value.\n * This is a union type of all available dash style options.\n *\n * @example\n * ```ts\n * import { TLDefaultDashStyle } from '@tldraw/tlschema'\n *\n * // Valid dash style values\n * const drawStyle: TLDefaultDashStyle = 'draw'\n * const solidStyle: TLDefaultDashStyle = 'solid'\n * const dashedStyle: TLDefaultDashStyle = 'dashed'\n * const dottedStyle: TLDefaultDashStyle = 'dotted'\n *\n * // Use in a function parameter\n * function setShapeDash(dash: TLDefaultDashStyle) {\n * // Apply dash style to shape\n * }\n * ```\n *\n * @public\n */\nexport type TLDefaultDashStyle = T.TypeOf<typeof DefaultDashStyle>\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAA0B;AAkCnB,MAAM,mBAAmB,2BAAU,WAAW,eAAe;AAAA,EACnE,cAAc;AAAA,EACd,QAAQ,CAAC,QAAQ,SAAS,UAAU,QAAQ;AAC7C,CAAC;",
4
+ "sourcesContent": ["import { T } from '@tldraw/validate'\nimport { StyleProp } from './StyleProp'\n\n/**\n * Default dash style property used by tldraw shapes for line styling.\n * Controls how shape outlines and lines are rendered with different dash patterns.\n *\n * Available values:\n * - `draw` - Hand-drawn, sketchy line style\n * - `solid` - Continuous solid line\n * - `dashed` - Evenly spaced dashes\n * - `dotted` - Evenly spaced dots\n *\n * @example\n * ```ts\n * import { DefaultDashStyle } from '@tldraw/tlschema'\n *\n * // Use in shape props definition\n * interface MyShapeProps {\n * dash: typeof DefaultDashStyle\n * // other props...\n * }\n *\n * // Create a shape with dashed outline\n * const shape = {\n * // ... other properties\n * props: {\n * dash: 'dashed' as const,\n * // ... other props\n * }\n * }\n * ```\n *\n * @public\n */\nexport const DefaultDashStyle = StyleProp.defineEnum('tldraw:dash', {\n\tdefaultValue: 'draw',\n\tvalues: ['draw', 'solid', 'dashed', 'dotted', 'none'],\n})\n\n/**\n * Type representing a default dash style value.\n * This is a union type of all available dash style options.\n *\n * @example\n * ```ts\n * import { TLDefaultDashStyle } from '@tldraw/tlschema'\n *\n * // Valid dash style values\n * const drawStyle: TLDefaultDashStyle = 'draw'\n * const solidStyle: TLDefaultDashStyle = 'solid'\n * const dashedStyle: TLDefaultDashStyle = 'dashed'\n * const dottedStyle: TLDefaultDashStyle = 'dotted'\n *\n * // Use in a function parameter\n * function setShapeDash(dash: TLDefaultDashStyle) {\n * // Apply dash style to shape\n * }\n * ```\n *\n * @public\n */\nexport type TLDefaultDashStyle = T.TypeOf<typeof DefaultDashStyle>\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAA0B;AAkCnB,MAAM,mBAAmB,2BAAU,WAAW,eAAe;AAAA,EACnE,cAAc;AAAA,EACd,QAAQ,CAAC,QAAQ,SAAS,UAAU,UAAU,MAAM;AACrD,CAAC;",
6
6
  "names": []
7
7
  }