tldraw 3.15.0-canary.db14db4f5395 → 3.15.0-next.d30ed5ad740e

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 (66) hide show
  1. package/dist-cjs/index.d.ts +77 -84
  2. package/dist-cjs/index.js +31 -30
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +5 -5
  5. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
  6. package/dist-cjs/lib/shapes/text/TextShapeUtil.js +5 -11
  7. package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +2 -2
  8. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +11 -1
  9. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +2 -2
  10. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js +1 -0
  11. package/dist-cjs/lib/ui/components/MainMenu/DefaultMainMenuContent.js.map +2 -2
  12. package/dist-cjs/lib/ui/components/menu-items.js +16 -0
  13. package/dist-cjs/lib/ui/components/menu-items.js.map +2 -2
  14. package/dist-cjs/lib/ui/context/actions.js +28 -1
  15. package/dist-cjs/lib/ui/context/actions.js.map +2 -2
  16. package/dist-cjs/lib/ui/context/events.js.map +2 -2
  17. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +24 -7
  18. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +2 -2
  19. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +2 -2
  20. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +2 -2
  21. package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
  22. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +4 -0
  23. package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
  24. package/dist-cjs/lib/ui/version.js +3 -3
  25. package/dist-cjs/lib/ui/version.js.map +1 -1
  26. package/dist-esm/index.d.mts +77 -84
  27. package/dist-esm/index.mjs +134 -132
  28. package/dist-esm/index.mjs.map +2 -2
  29. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +5 -5
  30. package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
  31. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +5 -11
  32. package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +2 -2
  33. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +11 -1
  34. package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +2 -2
  35. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs +2 -0
  36. package/dist-esm/lib/ui/components/MainMenu/DefaultMainMenuContent.mjs.map +2 -2
  37. package/dist-esm/lib/ui/components/menu-items.mjs +16 -0
  38. package/dist-esm/lib/ui/components/menu-items.mjs.map +2 -2
  39. package/dist-esm/lib/ui/context/actions.mjs +28 -1
  40. package/dist-esm/lib/ui/context/actions.mjs.map +2 -2
  41. package/dist-esm/lib/ui/context/events.mjs.map +2 -2
  42. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +24 -7
  43. package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +2 -2
  44. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +2 -2
  45. package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +2 -2
  46. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +4 -0
  47. package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
  48. package/dist-esm/lib/ui/version.mjs +3 -3
  49. package/dist-esm/lib/ui/version.mjs.map +1 -1
  50. package/package.json +3 -3
  51. package/src/index.ts +159 -158
  52. package/src/lib/shapes/frame/FrameShapeUtil.tsx +5 -7
  53. package/src/lib/shapes/text/TextShapeUtil.tsx +5 -12
  54. package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +8 -0
  55. package/src/lib/ui/components/MainMenu/DefaultMainMenuContent.tsx +2 -0
  56. package/src/lib/ui/components/menu-items.tsx +17 -0
  57. package/src/lib/ui/context/actions.tsx +29 -1
  58. package/src/lib/ui/context/events.tsx +2 -0
  59. package/src/lib/ui/hooks/useClipboardEvents.ts +31 -10
  60. package/src/lib/ui/hooks/useKeyboardShortcuts.ts +3 -2
  61. package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +4 -0
  62. package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +4 -0
  63. package/src/lib/ui/version.ts +3 -3
  64. package/src/test/Editor.test.tsx +68 -1
  65. package/src/test/commands/clipboard.test.ts +1 -1
  66. package/src/test/editor.test.ts +0 -77
@@ -22,10 +22,10 @@ __export(version_exports, {
22
22
  version: () => version
23
23
  });
24
24
  module.exports = __toCommonJS(version_exports);
25
- const version = "3.15.0-canary.db14db4f5395";
25
+ const version = "3.15.0-next.d30ed5ad740e";
26
26
  const publishDates = {
27
27
  major: "2024-09-13T14:36:29.063Z",
28
- minor: "2025-07-03T15:24:41.419Z",
29
- patch: "2025-07-03T15:24:41.419Z"
28
+ minor: "2025-07-10T10:00:49.217Z",
29
+ patch: "2025-07-10T10:00:49.217Z"
30
30
  };
31
31
  //# sourceMappingURL=version.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/lib/ui/version.ts"],
4
- "sourcesContent": ["// This file is automatically generated by internal/scripts/refresh-assets.ts.\n// Do not edit manually. Or do, I'm a comment, not a cop.\n\nexport const version = '3.15.0-canary.db14db4f5395'\nexport const publishDates = {\n\tmajor: '2024-09-13T14:36:29.063Z',\n\tminor: '2025-07-03T15:24:41.419Z',\n\tpatch: '2025-07-03T15:24:41.419Z',\n}\n"],
4
+ "sourcesContent": ["// This file is automatically generated by internal/scripts/refresh-assets.ts.\n// Do not edit manually. Or do, I'm a comment, not a cop.\n\nexport const version = '3.15.0-next.d30ed5ad740e'\nexport const publishDates = {\n\tmajor: '2024-09-13T14:36:29.063Z',\n\tminor: '2025-07-10T10:00:49.217Z',\n\tpatch: '2025-07-10T10:00:49.217Z',\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,UAAU;AAChB,MAAM,eAAe;AAAA,EAC3B,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACR;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,3 @@
1
- /// <reference types="react" />
2
-
3
1
  import { Atom } from '@tldraw/editor';
4
2
  import { BaseBoxShapeTool } from '@tldraw/editor';
5
3
  import { BaseBoxShapeUtil } from '@tldraw/editor';
@@ -10,7 +8,6 @@ import { BindingOnShapeIsolateOptions } from '@tldraw/editor';
10
8
  import { BindingUtil } from '@tldraw/editor';
11
9
  import { Box } from '@tldraw/editor';
12
10
  import { Circle2d } from '@tldraw/editor';
13
- import { ClipboardEvent as ClipboardEvent_2 } from 'react';
14
11
  import { ComponentType } from 'react';
15
12
  import { CSSProperties } from 'react';
16
13
  import { Editor } from '@tldraw/editor';
@@ -30,7 +27,6 @@ import { MigrationSequence } from '@tldraw/editor';
30
27
  import { NamedExoticComponent } from 'react';
31
28
  import { Node as Node_2 } from '@tiptap/pm/model';
32
29
  import { PerfectDashTerminal } from '@tldraw/editor';
33
- import { PointerEvent as PointerEvent_2 } from 'react';
34
30
  import { Polygon2d } from '@tldraw/editor';
35
31
  import { Polyline2d } from '@tldraw/editor';
36
32
  import * as React_2 from 'react';
@@ -68,12 +64,15 @@ import { TLBookmarkShapeProps } from '@tldraw/editor';
68
64
  import { TLClickEventInfo } from '@tldraw/editor';
69
65
  import { TLContent } from '@tldraw/editor';
70
66
  import { TLCropInfo } from '@tldraw/editor';
67
+ import { TLDefaultColorStyle } from '@tldraw/editor';
71
68
  import { TLDefaultColorTheme } from '@tldraw/editor';
72
69
  import { TLDefaultColorThemeColor } from '@tldraw/editor';
70
+ import { TLDefaultDashStyle } from '@tldraw/editor';
73
71
  import { TLDefaultFillStyle } from '@tldraw/editor';
74
72
  import { TLDefaultFontStyle } from '@tldraw/editor';
75
73
  import { TLDefaultHorizontalAlignStyle } from '@tldraw/editor';
76
74
  import { TLDefaultSizeStyle } from '@tldraw/editor';
75
+ import { TLDefaultTextAlignStyle } from '@tldraw/editor';
77
76
  import { TLDefaultVerticalAlignStyle } from '@tldraw/editor';
78
77
  import { TLDragShapesOutInfo } from '@tldraw/editor';
79
78
  import { TLDragShapesOverInfo } from '@tldraw/editor';
@@ -93,6 +92,7 @@ import { TLFrameShape } from '@tldraw/editor';
93
92
  import { TLFrameShapeProps } from '@tldraw/editor';
94
93
  import { TLGeometryOpts } from '@tldraw/editor';
95
94
  import { TLGeoShape } from '@tldraw/editor';
95
+ import { TLGeoShapeGeoStyle } from '@tldraw/editor';
96
96
  import { TLGeoShapeProps } from '@tldraw/editor';
97
97
  import { TLHandle } from '@tldraw/editor';
98
98
  import { TLHandleDragInfo } from '@tldraw/editor';
@@ -106,8 +106,10 @@ import { TLImageShapeProps } from '@tldraw/editor';
106
106
  import { TLKeyboardEventInfo } from '@tldraw/editor';
107
107
  import { TLLineShape } from '@tldraw/editor';
108
108
  import { TLLineShapePoint } from '@tldraw/editor';
109
+ import { TLLineShapeSplineStyle } from '@tldraw/editor';
109
110
  import { TLNoteShape } from '@tldraw/editor';
110
111
  import { TLNoteShapeProps } from '@tldraw/editor';
112
+ import { TLOpacityType } from '@tldraw/editor';
111
113
  import { TLPageId } from '@tldraw/editor';
112
114
  import { TLParentId } from '@tldraw/editor';
113
115
  import { TLPointerEventInfo } from '@tldraw/editor';
@@ -403,7 +405,7 @@ export declare class BookmarkShapeUtil extends BaseBoxShapeUtil<TLBookmarkShape>
403
405
  index: IndexKey;
404
406
  isLocked: boolean;
405
407
  meta: JsonObject;
406
- opacity: number;
408
+ opacity: TLOpacityType;
407
409
  parentId: TLParentId;
408
410
  props: {
409
411
  assetId: null | TLAssetId;
@@ -422,7 +424,7 @@ export declare class BookmarkShapeUtil extends BaseBoxShapeUtil<TLBookmarkShape>
422
424
  index: IndexKey;
423
425
  isLocked: boolean;
424
426
  meta: JsonObject;
425
- opacity: number;
427
+ opacity: TLOpacityType;
426
428
  parentId: TLParentId;
427
429
  props: {
428
430
  assetId: null | TLAssetId;
@@ -1064,8 +1066,8 @@ export declare function DistributeMenuItems(): JSX_2.Element;
1064
1066
  * @public
1065
1067
  */
1066
1068
  export declare function downsizeImage(blob: Blob, width: number, height: number, opts?: {
1067
- quality?: number | undefined;
1068
- type?: string | undefined;
1069
+ quality?: number;
1070
+ type?: string;
1069
1071
  }): Promise<Blob>;
1070
1072
 
1071
1073
  /** @public */
@@ -1634,26 +1636,23 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1634
1636
  index: IndexKey;
1635
1637
  isLocked: boolean;
1636
1638
  meta: JsonObject;
1637
- opacity: number;
1639
+ opacity: TLOpacityType;
1638
1640
  parentId: TLParentId;
1639
1641
  props: {
1640
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
1641
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1642
- dash: "dashed" | "dotted" | "draw" | "solid";
1643
- fill: "fill" | "none" | "pattern" | "semi" | "solid";
1644
- font: "draw" | "mono" | "sans" | "serif";
1645
- geo: "arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "check-box" | "cloud" | "diamond" | "ellipse" | "heart" | "hexagon" | "octagon" | "oval" | "pentagon" | "rectangle" | "rhombus-2" | "rhombus" | "star" | "trapezoid" | "triangle" | "x-box";
1642
+ align: TLDefaultHorizontalAlignStyle;
1643
+ color: TLDefaultColorStyle;
1644
+ dash: TLDefaultDashStyle;
1645
+ fill: TLDefaultFillStyle;
1646
+ font: TLDefaultFontStyle;
1647
+ geo: TLGeoShapeGeoStyle;
1646
1648
  growY: number;
1647
1649
  h: number;
1648
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1649
- richText: {
1650
- content: unknown[];
1651
- type: string;
1652
- };
1650
+ labelColor: TLDefaultColorStyle;
1651
+ richText: TLRichText;
1653
1652
  scale: number;
1654
- size: "l" | "m" | "s" | "xl";
1653
+ size: TLDefaultSizeStyle;
1655
1654
  url: string;
1656
- verticalAlign: "end" | "middle" | "start";
1655
+ verticalAlign: TLDefaultVerticalAlignStyle;
1657
1656
  w: number;
1658
1657
  };
1659
1658
  rotation: number;
@@ -1667,26 +1666,23 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1667
1666
  index: IndexKey;
1668
1667
  isLocked: boolean;
1669
1668
  meta: JsonObject;
1670
- opacity: number;
1669
+ opacity: TLOpacityType;
1671
1670
  parentId: TLParentId;
1672
1671
  props: {
1673
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
1674
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1675
- dash: "dashed" | "dotted" | "draw" | "solid";
1676
- fill: "fill" | "none" | "pattern" | "semi" | "solid";
1677
- font: "draw" | "mono" | "sans" | "serif";
1678
- geo: "arrow-down" | "arrow-left" | "arrow-right" | "arrow-up" | "check-box" | "cloud" | "diamond" | "ellipse" | "heart" | "hexagon" | "octagon" | "oval" | "pentagon" | "rectangle" | "rhombus-2" | "rhombus" | "star" | "trapezoid" | "triangle" | "x-box";
1672
+ align: TLDefaultHorizontalAlignStyle;
1673
+ color: TLDefaultColorStyle;
1674
+ dash: TLDefaultDashStyle;
1675
+ fill: TLDefaultFillStyle;
1676
+ font: TLDefaultFontStyle;
1677
+ geo: TLGeoShapeGeoStyle;
1679
1678
  growY: number;
1680
1679
  h: number;
1681
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1682
- richText: {
1683
- content: unknown[];
1684
- type: string;
1685
- };
1680
+ labelColor: TLDefaultColorStyle;
1681
+ richText: TLRichText;
1686
1682
  scale: number;
1687
- size: "l" | "m" | "s" | "xl";
1683
+ size: TLDefaultSizeStyle;
1688
1684
  url: string;
1689
- verticalAlign: "end" | "middle" | "start";
1685
+ verticalAlign: TLDefaultVerticalAlignStyle;
1690
1686
  w: number;
1691
1687
  };
1692
1688
  rotation: number;
@@ -1700,7 +1696,7 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1700
1696
  index: IndexKey;
1701
1697
  isLocked: boolean;
1702
1698
  meta: JsonObject;
1703
- opacity: number;
1699
+ opacity: TLOpacityType;
1704
1700
  parentId: TLParentId;
1705
1701
  props: {
1706
1702
  geo: "check-box";
@@ -1715,7 +1711,7 @@ export declare class GeoShapeUtil extends BaseBoxShapeUtil<TLGeoShape> {
1715
1711
  index: IndexKey;
1716
1712
  isLocked: boolean;
1717
1713
  meta: JsonObject;
1718
- opacity: number;
1714
+ opacity: TLOpacityType;
1719
1715
  parentId: TLParentId;
1720
1716
  props: {
1721
1717
  geo: "rectangle";
@@ -1933,11 +1929,11 @@ export declare class LineShapeUtil extends ShapeUtil<TLLineShape> {
1933
1929
  index: IndexKey;
1934
1930
  isLocked: boolean;
1935
1931
  meta: JsonObject;
1936
- opacity: number;
1932
+ opacity: TLOpacityType;
1937
1933
  parentId: TLParentId;
1938
1934
  props: {
1939
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
1940
- dash: "dashed" | "dotted" | "draw" | "solid";
1935
+ color: TLDefaultColorStyle;
1936
+ dash: TLDefaultDashStyle;
1941
1937
  points: {
1942
1938
  [x: string]: {
1943
1939
  id: string;
@@ -1947,8 +1943,8 @@ export declare class LineShapeUtil extends ShapeUtil<TLLineShape> {
1947
1943
  } | TLLineShapePoint;
1948
1944
  };
1949
1945
  scale: number;
1950
- size: "l" | "m" | "s" | "xl";
1951
- spline: "cubic" | "line";
1946
+ size: TLDefaultSizeStyle;
1947
+ spline: TLLineShapeSplineStyle;
1952
1948
  };
1953
1949
  rotation: number;
1954
1950
  type: "line";
@@ -2026,23 +2022,20 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2026
2022
  index: IndexKey;
2027
2023
  isLocked: boolean;
2028
2024
  meta: JsonObject;
2029
- opacity: number;
2025
+ opacity: TLOpacityType;
2030
2026
  parentId: TLParentId;
2031
2027
  props: {
2032
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
2033
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2034
- font: "draw" | "mono" | "sans" | "serif";
2028
+ align: TLDefaultHorizontalAlignStyle;
2029
+ color: TLDefaultColorStyle;
2030
+ font: TLDefaultFontStyle;
2035
2031
  fontSizeAdjustment: number;
2036
2032
  growY: number;
2037
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2038
- richText: {
2039
- content: unknown[];
2040
- type: string;
2041
- };
2033
+ labelColor: TLDefaultColorStyle;
2034
+ richText: TLRichText;
2042
2035
  scale: number;
2043
- size: "l" | "m" | "s" | "xl";
2036
+ size: TLDefaultSizeStyle;
2044
2037
  url: string;
2045
- verticalAlign: "end" | "middle" | "start";
2038
+ verticalAlign: TLDefaultVerticalAlignStyle;
2046
2039
  };
2047
2040
  rotation: number;
2048
2041
  type: "note";
@@ -2055,23 +2048,20 @@ export declare class NoteShapeUtil extends ShapeUtil<TLNoteShape> {
2055
2048
  index: IndexKey;
2056
2049
  isLocked: boolean;
2057
2050
  meta: JsonObject;
2058
- opacity: number;
2051
+ opacity: TLOpacityType;
2059
2052
  parentId: TLParentId;
2060
2053
  props: {
2061
- align: "end-legacy" | "end" | "middle-legacy" | "middle" | "start-legacy" | "start";
2062
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2063
- font: "draw" | "mono" | "sans" | "serif";
2054
+ align: TLDefaultHorizontalAlignStyle;
2055
+ color: TLDefaultColorStyle;
2056
+ font: TLDefaultFontStyle;
2064
2057
  fontSizeAdjustment: number;
2065
2058
  growY: number;
2066
- labelColor: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2067
- richText: {
2068
- content: unknown[];
2069
- type: string;
2070
- };
2059
+ labelColor: TLDefaultColorStyle;
2060
+ richText: TLRichText;
2071
2061
  scale: number;
2072
- size: "l" | "m" | "s" | "xl";
2062
+ size: TLDefaultSizeStyle;
2073
2063
  url: string;
2074
- verticalAlign: "end" | "middle" | "start";
2064
+ verticalAlign: TLDefaultVerticalAlignStyle;
2075
2065
  };
2076
2066
  rotation: number;
2077
2067
  type: "note";
@@ -2594,19 +2584,16 @@ export declare class TextShapeUtil extends ShapeUtil<TLTextShape> {
2594
2584
  index: IndexKey;
2595
2585
  isLocked: boolean;
2596
2586
  meta: JsonObject;
2597
- opacity: number;
2587
+ opacity: TLOpacityType;
2598
2588
  parentId: TLParentId;
2599
2589
  props: {
2600
2590
  autoSize: boolean;
2601
- color: "black" | "blue" | "green" | "grey" | "light-blue" | "light-green" | "light-red" | "light-violet" | "orange" | "red" | "violet" | "white" | "yellow";
2602
- font: "draw" | "mono" | "sans" | "serif";
2603
- richText: {
2604
- content: unknown[];
2605
- type: string;
2606
- };
2591
+ color: TLDefaultColorStyle;
2592
+ font: TLDefaultFontStyle;
2593
+ richText: TLRichText;
2607
2594
  scale: number;
2608
- size: "l" | "m" | "s" | "xl";
2609
- textAlign: "end" | "middle" | "start";
2595
+ size: TLDefaultSizeStyle;
2596
+ textAlign: TLDefaultTextAlignStyle;
2610
2597
  w: number;
2611
2598
  };
2612
2599
  rotation: number;
@@ -3142,6 +3129,7 @@ export declare interface TLUiActionItem<TransationKey extends string = string, I
3142
3129
  } | TransationKey;
3143
3130
  readonlyOk?: boolean;
3144
3131
  checkbox?: boolean;
3132
+ isRequiredA11yAction?: boolean;
3145
3133
  onSelect(source: TLUiEventSource): Promise<void> | void;
3146
3134
  }
3147
3135
 
@@ -3528,6 +3516,7 @@ export declare interface TLUiEventMap {
3528
3516
  'toggle-paste-at-cursor': null;
3529
3517
  'toggle-lock': null;
3530
3518
  'toggle-reduce-motion': null;
3519
+ 'toggle-keyboard-shortcuts': null;
3531
3520
  'toggle-edge-scrolling': null;
3532
3521
  'color-scheme': {
3533
3522
  value: string;
@@ -3552,6 +3541,7 @@ export declare interface TLUiEventMap {
3552
3541
  'copy-link': null;
3553
3542
  'image-replace': null;
3554
3543
  'video-replace': null;
3544
+ 'open-kbd-shortcuts': null;
3555
3545
  'rich-text': {
3556
3546
  operation: 'bold' | 'bulletList' | 'heading' | 'link-edit' | 'link-remove' | 'link-visit' | 'link' | 'strike';
3557
3547
  };
@@ -3930,7 +3920,7 @@ export declare interface TLUiTranslation {
3930
3920
  export declare type TLUiTranslationContextType = TLUiTranslation;
3931
3921
 
3932
3922
  /** @public */
3933
- export declare type TLUiTranslationKey = 'a11y.adjust-shape-styles' | 'a11y.enlarge-shape' | 'a11y.enter-leave-container' | 'a11y.move-shape-faster' | 'a11y.move-shape' | 'a11y.multiple-shapes' | 'a11y.open-context-menu' | 'a11y.pan-camera' | 'a11y.repeat-shape' | 'a11y.select-shape-direction' | 'a11y.select-shape' | 'a11y.shape-image' | 'a11y.shape-index' | 'a11y.shape-video' | 'a11y.shrink-shape' | 'a11y.skip-to-main-content' | 'a11y.status' | 'action.align-bottom' | 'action.align-center-horizontal.short' | 'action.align-center-horizontal' | 'action.align-center-vertical.short' | 'action.align-center-vertical' | 'action.align-left' | 'action.align-right' | 'action.align-top' | 'action.back-to-content' | 'action.bring-forward' | 'action.bring-to-front' | 'action.convert-to-bookmark' | 'action.convert-to-embed' | 'action.copy-as-png.short' | 'action.copy-as-png' | 'action.copy-as-svg.short' | 'action.copy-as-svg' | 'action.copy' | 'action.cut' | 'action.delete' | 'action.distribute-horizontal.short' | 'action.distribute-horizontal' | 'action.distribute-vertical.short' | 'action.distribute-vertical' | 'action.download-original' | 'action.duplicate' | 'action.edit-link' | 'action.exit-pen-mode' | 'action.export-all-as-png.short' | 'action.export-all-as-png' | 'action.export-all-as-svg.short' | 'action.export-all-as-svg' | 'action.export-as-png.short' | 'action.export-as-png' | 'action.export-as-svg.short' | 'action.export-as-svg' | 'action.fit-frame-to-content' | 'action.flatten-to-image' | 'action.flip-horizontal.short' | 'action.flip-horizontal' | 'action.flip-vertical.short' | 'action.flip-vertical' | 'action.fork-project-on-tldraw' | 'action.fork-project' | 'action.group' | 'action.insert-embed' | 'action.insert-media' | 'action.leave-shared-project' | 'action.new-project' | 'action.new-shared-project' | 'action.open-cursor-chat' | 'action.open-embed-link' | 'action.open-file' | 'action.pack' | 'action.paste-error-description' | 'action.paste-error-title' | 'action.paste' | 'action.print' | 'action.redo' | 'action.remove-frame' | 'action.rename' | 'action.rotate-ccw' | 'action.rotate-cw' | 'action.save-copy' | 'action.select-all' | 'action.select-none' | 'action.send-backward' | 'action.send-to-back' | 'action.share-project' | 'action.stack-horizontal.short' | 'action.stack-horizontal' | 'action.stack-vertical.short' | 'action.stack-vertical' | 'action.stop-following' | 'action.stretch-horizontal.short' | 'action.stretch-horizontal' | 'action.stretch-vertical.short' | 'action.stretch-vertical' | 'action.toggle-auto-size' | 'action.toggle-dark-mode.menu' | 'action.toggle-dark-mode' | 'action.toggle-debug-mode.menu' | 'action.toggle-debug-mode' | 'action.toggle-dynamic-size-mode.menu' | 'action.toggle-dynamic-size-mode' | 'action.toggle-edge-scrolling.menu' | 'action.toggle-edge-scrolling' | 'action.toggle-focus-mode.menu' | 'action.toggle-focus-mode' | 'action.toggle-grid.menu' | 'action.toggle-grid' | 'action.toggle-lock' | 'action.toggle-paste-at-cursor.menu' | 'action.toggle-paste-at-cursor' | 'action.toggle-reduce-motion.menu' | 'action.toggle-reduce-motion' | 'action.toggle-snap-mode.menu' | 'action.toggle-snap-mode' | 'action.toggle-tool-lock.menu' | 'action.toggle-tool-lock' | 'action.toggle-transparent.context-menu' | 'action.toggle-transparent.menu' | 'action.toggle-transparent' | 'action.toggle-wrap-mode.menu' | 'action.toggle-wrap-mode' | 'action.undo' | 'action.ungroup' | 'action.unlock-all' | 'action.zoom-in' | 'action.zoom-out' | 'action.zoom-to-100' | 'action.zoom-to-fit' | 'action.zoom-to-selection' | 'actions-menu.title' | 'align-style.end' | 'align-style.justify' | 'align-style.middle' | 'align-style.start' | 'app.loading' | 'arrow-kind-style.arc' | 'arrow-kind-style.elbow' | 'arrowheadEnd-style.arrow' | 'arrowheadEnd-style.bar' | 'arrowheadEnd-style.diamond' | 'arrowheadEnd-style.dot' | 'arrowheadEnd-style.inverted' | 'arrowheadEnd-style.none' | 'arrowheadEnd-style.pipe' | 'arrowheadEnd-style.square' | 'arrowheadEnd-style.triangle' | 'arrowheadStart-style.arrow' | 'arrowheadStart-style.bar' | 'arrowheadStart-style.diamond' | 'arrowheadStart-style.dot' | 'arrowheadStart-style.inverted' | 'arrowheadStart-style.none' | 'arrowheadStart-style.pipe' | 'arrowheadStart-style.square' | 'arrowheadStart-style.triangle' | 'assets.files.amount-too-many' | 'assets.files.size-too-big' | 'assets.files.type-not-allowed' | 'assets.files.upload-failed' | 'assets.url.failed' | 'color-style.black' | 'color-style.blue' | 'color-style.green' | 'color-style.grey' | 'color-style.light-blue' | 'color-style.light-green' | 'color-style.light-red' | 'color-style.light-violet' | 'color-style.orange' | 'color-style.red' | 'color-style.violet' | 'color-style.white' | 'color-style.yellow' | 'context-menu.arrange' | 'context-menu.copy-as' | 'context-menu.edit' | 'context-menu.export-all-as' | 'context-menu.export-as' | 'context-menu.move-to-page' | 'context-menu.reorder' | 'context-menu.title' | 'context.pages.new-page' | 'cursor-chat.type-to-chat' | 'dash-style.dashed' | 'dash-style.dotted' | 'dash-style.draw' | 'dash-style.solid' | 'document-name-menu.copy-link' | 'document.default-name' | 'edit-link-dialog.cancel' | 'edit-link-dialog.clear' | 'edit-link-dialog.detail' | 'edit-link-dialog.external-link' | 'edit-link-dialog.invalid-url' | 'edit-link-dialog.save' | 'edit-link-dialog.title' | 'edit-link-dialog.url' | 'embed-dialog.back' | 'embed-dialog.cancel' | 'embed-dialog.create' | 'embed-dialog.instruction' | 'embed-dialog.invalid-url' | 'embed-dialog.title' | 'embed-dialog.url' | 'file-system.confirm-clear.cancel' | 'file-system.confirm-clear.continue' | 'file-system.confirm-clear.description' | 'file-system.confirm-clear.dont-show-again' | 'file-system.confirm-clear.title' | 'file-system.confirm-open.cancel' | 'file-system.confirm-open.description' | 'file-system.confirm-open.dont-show-again' | 'file-system.confirm-open.open' | 'file-system.confirm-open.title' | 'file-system.file-open-error.file-format-version-too-new' | 'file-system.file-open-error.generic-corrupted-file' | 'file-system.file-open-error.not-a-tldraw-file' | 'file-system.file-open-error.title' | 'file-system.shared-document-file-open-error.description' | 'file-system.shared-document-file-open-error.title' | 'fill-style.fill' | 'fill-style.none' | 'fill-style.pattern' | 'fill-style.semi' | 'fill-style.solid' | 'focus-mode.toggle-focus-mode' | 'font-style.draw' | 'font-style.mono' | 'font-style.sans' | 'font-style.serif' | 'geo-style.arrow-down' | 'geo-style.arrow-left' | 'geo-style.arrow-right' | 'geo-style.arrow-up' | 'geo-style.check-box' | 'geo-style.cloud' | 'geo-style.diamond' | 'geo-style.ellipse' | 'geo-style.heart' | 'geo-style.hexagon' | 'geo-style.octagon' | 'geo-style.oval' | 'geo-style.pentagon' | 'geo-style.rectangle' | 'geo-style.rhombus' | 'geo-style.star' | 'geo-style.trapezoid' | 'geo-style.triangle' | 'geo-style.x-box' | 'handle.crop.bottom-left' | 'handle.crop.bottom-right' | 'handle.crop.bottom' | 'handle.crop.left' | 'handle.crop.right' | 'handle.crop.top-left' | 'handle.crop.top-right' | 'handle.crop.top' | 'handle.resize-bottom-left' | 'handle.resize-bottom-right' | 'handle.resize-bottom' | 'handle.resize-left' | 'handle.resize-right' | 'handle.resize-top-left' | 'handle.resize-top-right' | 'handle.resize-top' | 'handle.rotate.bottom_left_rotate' | 'handle.rotate.bottom_right_rotate' | 'handle.rotate.mobile_rotate' | 'handle.rotate.top_left_rotate' | 'handle.rotate.top_right_rotate' | 'help-menu.about' | 'help-menu.discord' | 'help-menu.github' | 'help-menu.import-tldr-file' | 'help-menu.keyboard-shortcuts' | 'help-menu.privacy' | 'help-menu.terms' | 'help-menu.title' | 'help-menu.twitter' | 'menu.copy-as' | 'menu.edit' | 'menu.export-as' | 'menu.file' | 'menu.language' | 'menu.preferences' | 'menu.theme' | 'menu.title' | 'menu.view' | 'navigation-zone.minimap' | 'navigation-zone.title' | 'navigation-zone.toggle-minimap' | 'navigation-zone.zoom' | 'opacity-style.0.1' | 'opacity-style.0.25' | 'opacity-style.0.5' | 'opacity-style.0.75' | 'opacity-style.1' | 'page-menu.create-new-page' | 'page-menu.edit-done' | 'page-menu.edit-start' | 'page-menu.go-to-page' | 'page-menu.max-page-count-reached' | 'page-menu.new-page-initial-name' | 'page-menu.submenu.delete' | 'page-menu.submenu.duplicate-page' | 'page-menu.submenu.move-down' | 'page-menu.submenu.move-up' | 'page-menu.submenu.rename' | 'page-menu.submenu.title' | 'page-menu.title' | 'people-menu.anonymous-user' | 'people-menu.avatar-color' | 'people-menu.change-color' | 'people-menu.change-name' | 'people-menu.follow' | 'people-menu.following' | 'people-menu.invite' | 'people-menu.leading' | 'people-menu.title' | 'people-menu.user' | 'share-menu.copied' | 'share-menu.copy-link-note' | 'share-menu.copy-link' | 'share-menu.copy-readonly-link-note' | 'share-menu.copy-readonly-link' | 'share-menu.create-snapshot-link' | 'share-menu.creating-project' | 'share-menu.fork-note' | 'share-menu.offline-note' | 'share-menu.project-too-large' | 'share-menu.save-note' | 'share-menu.share-project' | 'share-menu.snapshot-link-note' | 'share-menu.title' | 'share-menu.upload-failed' | 'sharing.confirm-leave.cancel' | 'sharing.confirm-leave.description' | 'sharing.confirm-leave.dont-show-again' | 'sharing.confirm-leave.leave' | 'sharing.confirm-leave.title' | 'shortcuts-dialog.a11y' | 'shortcuts-dialog.collaboration' | 'shortcuts-dialog.edit' | 'shortcuts-dialog.file' | 'shortcuts-dialog.preferences' | 'shortcuts-dialog.text-formatting' | 'shortcuts-dialog.title' | 'shortcuts-dialog.tools' | 'shortcuts-dialog.transform' | 'shortcuts-dialog.view' | 'size-style.l' | 'size-style.m' | 'size-style.s' | 'size-style.xl' | 'spline-style.cubic' | 'spline-style.line' | 'status.offline' | 'style-panel.align' | 'style-panel.arrow-kind' | 'style-panel.arrowhead-end' | 'style-panel.arrowhead-start' | 'style-panel.arrowheads' | 'style-panel.color' | 'style-panel.dash' | 'style-panel.fill' | 'style-panel.font' | 'style-panel.geo' | 'style-panel.label-align' | 'style-panel.mixed' | 'style-panel.opacity' | 'style-panel.position' | 'style-panel.size' | 'style-panel.spline' | 'style-panel.title' | 'style-panel.vertical-align' | 'theme.dark' | 'theme.light' | 'theme.system' | 'toast.close' | 'toast.error.copy-fail.desc' | 'toast.error.copy-fail.title' | 'toast.error.export-fail.desc' | 'toast.error.export-fail.title' | 'toast.error' | 'toast.info' | 'toast.success' | 'toast.warning' | 'tool-panel.more' | 'tool-panel.title' | 'tool.arrow-down' | 'tool.arrow-left' | 'tool.arrow-right' | 'tool.arrow-up' | 'tool.arrow' | 'tool.aspect-ratio.circle' | 'tool.aspect-ratio.landscape' | 'tool.aspect-ratio.original' | 'tool.aspect-ratio.portrait' | 'tool.aspect-ratio.square' | 'tool.aspect-ratio.wide' | 'tool.aspect-ratio' | 'tool.bookmark' | 'tool.check-box' | 'tool.cloud' | 'tool.diamond' | 'tool.draw' | 'tool.ellipse' | 'tool.embed' | 'tool.eraser' | 'tool.flip-horz' | 'tool.flip-vert' | 'tool.frame' | 'tool.hand' | 'tool.heart' | 'tool.hexagon' | 'tool.highlight' | 'tool.image-crop' | 'tool.image-toolbar-title' | 'tool.image-zoom' | 'tool.laser' | 'tool.line' | 'tool.media-alt-text-confirm' | 'tool.media-alt-text-desc' | 'tool.media-alt-text' | 'tool.media' | 'tool.note' | 'tool.octagon' | 'tool.oval' | 'tool.pentagon' | 'tool.pointer-down' | 'tool.rectangle' | 'tool.replace-media' | 'tool.rhombus' | 'tool.rich-text-bold' | 'tool.rich-text-bulletList' | 'tool.rich-text-code' | 'tool.rich-text-header' | 'tool.rich-text-highlight' | 'tool.rich-text-italic' | 'tool.rich-text-link-remove' | 'tool.rich-text-link-visit' | 'tool.rich-text-link' | 'tool.rich-text-orderedList' | 'tool.rich-text-strikethrough' | 'tool.rich-text-toolbar-title' | 'tool.rotate-cw' | 'tool.select' | 'tool.star' | 'tool.text' | 'tool.trapezoid' | 'tool.triangle' | 'tool.x-box' | 'ui.checked' | 'ui.close' | 'ui.unchecked' | 'verticalAlign-style.end' | 'verticalAlign-style.middle' | 'verticalAlign-style.start' | 'vscode.file-open.backup-failed' | 'vscode.file-open.backup-saved' | 'vscode.file-open.backup' | 'vscode.file-open.desc' | 'vscode.file-open.dont-show-again' | 'vscode.file-open.open';
3923
+ export declare type TLUiTranslationKey = 'a11y.adjust-shape-styles' | 'a11y.enlarge-shape' | 'a11y.enter-leave-container' | 'a11y.move-shape-faster' | 'a11y.move-shape' | 'a11y.multiple-shapes' | 'a11y.open-context-menu' | 'a11y.open-keyboard-shortcuts' | 'a11y.pan-camera' | 'a11y.repeat-shape' | 'a11y.select-shape-direction' | 'a11y.select-shape' | 'a11y.shape-image' | 'a11y.shape-index' | 'a11y.shape-video' | 'a11y.shrink-shape' | 'a11y.skip-to-main-content' | 'a11y.status' | 'action.align-bottom' | 'action.align-center-horizontal.short' | 'action.align-center-horizontal' | 'action.align-center-vertical.short' | 'action.align-center-vertical' | 'action.align-left' | 'action.align-right' | 'action.align-top' | 'action.back-to-content' | 'action.bring-forward' | 'action.bring-to-front' | 'action.convert-to-bookmark' | 'action.convert-to-embed' | 'action.copy-as-png.short' | 'action.copy-as-png' | 'action.copy-as-svg.short' | 'action.copy-as-svg' | 'action.copy' | 'action.cut' | 'action.delete' | 'action.distribute-horizontal.short' | 'action.distribute-horizontal' | 'action.distribute-vertical.short' | 'action.distribute-vertical' | 'action.download-original' | 'action.duplicate' | 'action.edit-link' | 'action.exit-pen-mode' | 'action.export-all-as-png.short' | 'action.export-all-as-png' | 'action.export-all-as-svg.short' | 'action.export-all-as-svg' | 'action.export-as-png.short' | 'action.export-as-png' | 'action.export-as-svg.short' | 'action.export-as-svg' | 'action.fit-frame-to-content' | 'action.flatten-to-image' | 'action.flip-horizontal.short' | 'action.flip-horizontal' | 'action.flip-vertical.short' | 'action.flip-vertical' | 'action.fork-project-on-tldraw' | 'action.fork-project' | 'action.group' | 'action.insert-embed' | 'action.insert-media' | 'action.leave-shared-project' | 'action.new-project' | 'action.new-shared-project' | 'action.open-cursor-chat' | 'action.open-embed-link' | 'action.open-file' | 'action.open-kbd-shortcuts' | 'action.pack' | 'action.paste-error-description' | 'action.paste-error-title' | 'action.paste' | 'action.print' | 'action.redo' | 'action.remove-frame' | 'action.rename' | 'action.rotate-ccw' | 'action.rotate-cw' | 'action.save-copy' | 'action.select-all' | 'action.select-none' | 'action.send-backward' | 'action.send-to-back' | 'action.share-project' | 'action.stack-horizontal.short' | 'action.stack-horizontal' | 'action.stack-vertical.short' | 'action.stack-vertical' | 'action.stop-following' | 'action.stretch-horizontal.short' | 'action.stretch-horizontal' | 'action.stretch-vertical.short' | 'action.stretch-vertical' | 'action.toggle-auto-size' | 'action.toggle-dark-mode.menu' | 'action.toggle-dark-mode' | 'action.toggle-debug-mode.menu' | 'action.toggle-debug-mode' | 'action.toggle-dynamic-size-mode.menu' | 'action.toggle-dynamic-size-mode' | 'action.toggle-edge-scrolling.menu' | 'action.toggle-edge-scrolling' | 'action.toggle-focus-mode.menu' | 'action.toggle-focus-mode' | 'action.toggle-grid.menu' | 'action.toggle-grid' | 'action.toggle-keyboard-shortcuts.menu' | 'action.toggle-keyboard-shortcuts' | 'action.toggle-lock' | 'action.toggle-paste-at-cursor.menu' | 'action.toggle-paste-at-cursor' | 'action.toggle-reduce-motion.menu' | 'action.toggle-reduce-motion' | 'action.toggle-snap-mode.menu' | 'action.toggle-snap-mode' | 'action.toggle-tool-lock.menu' | 'action.toggle-tool-lock' | 'action.toggle-transparent.context-menu' | 'action.toggle-transparent.menu' | 'action.toggle-transparent' | 'action.toggle-wrap-mode.menu' | 'action.toggle-wrap-mode' | 'action.undo' | 'action.ungroup' | 'action.unlock-all' | 'action.zoom-in' | 'action.zoom-out' | 'action.zoom-to-100' | 'action.zoom-to-fit' | 'action.zoom-to-selection' | 'actions-menu.title' | 'align-style.end' | 'align-style.justify' | 'align-style.middle' | 'align-style.start' | 'app.loading' | 'arrow-kind-style.arc' | 'arrow-kind-style.elbow' | 'arrowheadEnd-style.arrow' | 'arrowheadEnd-style.bar' | 'arrowheadEnd-style.diamond' | 'arrowheadEnd-style.dot' | 'arrowheadEnd-style.inverted' | 'arrowheadEnd-style.none' | 'arrowheadEnd-style.pipe' | 'arrowheadEnd-style.square' | 'arrowheadEnd-style.triangle' | 'arrowheadStart-style.arrow' | 'arrowheadStart-style.bar' | 'arrowheadStart-style.diamond' | 'arrowheadStart-style.dot' | 'arrowheadStart-style.inverted' | 'arrowheadStart-style.none' | 'arrowheadStart-style.pipe' | 'arrowheadStart-style.square' | 'arrowheadStart-style.triangle' | 'assets.files.amount-too-many' | 'assets.files.size-too-big' | 'assets.files.type-not-allowed' | 'assets.files.upload-failed' | 'assets.url.failed' | 'color-style.black' | 'color-style.blue' | 'color-style.green' | 'color-style.grey' | 'color-style.light-blue' | 'color-style.light-green' | 'color-style.light-red' | 'color-style.light-violet' | 'color-style.orange' | 'color-style.red' | 'color-style.violet' | 'color-style.white' | 'color-style.yellow' | 'context-menu.arrange' | 'context-menu.copy-as' | 'context-menu.edit' | 'context-menu.export-all-as' | 'context-menu.export-as' | 'context-menu.move-to-page' | 'context-menu.reorder' | 'context-menu.title' | 'context.pages.new-page' | 'cursor-chat.type-to-chat' | 'dash-style.dashed' | 'dash-style.dotted' | 'dash-style.draw' | 'dash-style.solid' | 'document-name-menu.copy-link' | 'document.default-name' | 'edit-link-dialog.cancel' | 'edit-link-dialog.clear' | 'edit-link-dialog.detail' | 'edit-link-dialog.external-link' | 'edit-link-dialog.invalid-url' | 'edit-link-dialog.save' | 'edit-link-dialog.title' | 'edit-link-dialog.url' | 'embed-dialog.back' | 'embed-dialog.cancel' | 'embed-dialog.create' | 'embed-dialog.instruction' | 'embed-dialog.invalid-url' | 'embed-dialog.title' | 'embed-dialog.url' | 'file-system.confirm-clear.cancel' | 'file-system.confirm-clear.continue' | 'file-system.confirm-clear.description' | 'file-system.confirm-clear.dont-show-again' | 'file-system.confirm-clear.title' | 'file-system.confirm-open.cancel' | 'file-system.confirm-open.description' | 'file-system.confirm-open.dont-show-again' | 'file-system.confirm-open.open' | 'file-system.confirm-open.title' | 'file-system.file-open-error.file-format-version-too-new' | 'file-system.file-open-error.generic-corrupted-file' | 'file-system.file-open-error.not-a-tldraw-file' | 'file-system.file-open-error.title' | 'file-system.shared-document-file-open-error.description' | 'file-system.shared-document-file-open-error.title' | 'fill-style.fill' | 'fill-style.none' | 'fill-style.pattern' | 'fill-style.semi' | 'fill-style.solid' | 'focus-mode.toggle-focus-mode' | 'font-style.draw' | 'font-style.mono' | 'font-style.sans' | 'font-style.serif' | 'geo-style.arrow-down' | 'geo-style.arrow-left' | 'geo-style.arrow-right' | 'geo-style.arrow-up' | 'geo-style.check-box' | 'geo-style.cloud' | 'geo-style.diamond' | 'geo-style.ellipse' | 'geo-style.heart' | 'geo-style.hexagon' | 'geo-style.octagon' | 'geo-style.oval' | 'geo-style.pentagon' | 'geo-style.rectangle' | 'geo-style.rhombus' | 'geo-style.star' | 'geo-style.trapezoid' | 'geo-style.triangle' | 'geo-style.x-box' | 'handle.crop.bottom-left' | 'handle.crop.bottom-right' | 'handle.crop.bottom' | 'handle.crop.left' | 'handle.crop.right' | 'handle.crop.top-left' | 'handle.crop.top-right' | 'handle.crop.top' | 'handle.resize-bottom-left' | 'handle.resize-bottom-right' | 'handle.resize-bottom' | 'handle.resize-left' | 'handle.resize-right' | 'handle.resize-top-left' | 'handle.resize-top-right' | 'handle.resize-top' | 'handle.rotate.bottom_left_rotate' | 'handle.rotate.bottom_right_rotate' | 'handle.rotate.mobile_rotate' | 'handle.rotate.top_left_rotate' | 'handle.rotate.top_right_rotate' | 'help-menu.about' | 'help-menu.discord' | 'help-menu.github' | 'help-menu.import-tldr-file' | 'help-menu.keyboard-shortcuts' | 'help-menu.privacy' | 'help-menu.terms' | 'help-menu.title' | 'help-menu.twitter' | 'menu.copy-as' | 'menu.edit' | 'menu.export-as' | 'menu.file' | 'menu.language' | 'menu.preferences' | 'menu.theme' | 'menu.title' | 'menu.view' | 'navigation-zone.minimap' | 'navigation-zone.title' | 'navigation-zone.toggle-minimap' | 'navigation-zone.zoom' | 'opacity-style.0.1' | 'opacity-style.0.25' | 'opacity-style.0.5' | 'opacity-style.0.75' | 'opacity-style.1' | 'page-menu.create-new-page' | 'page-menu.edit-done' | 'page-menu.edit-start' | 'page-menu.go-to-page' | 'page-menu.max-page-count-reached' | 'page-menu.new-page-initial-name' | 'page-menu.submenu.delete' | 'page-menu.submenu.duplicate-page' | 'page-menu.submenu.move-down' | 'page-menu.submenu.move-up' | 'page-menu.submenu.rename' | 'page-menu.submenu.title' | 'page-menu.title' | 'people-menu.anonymous-user' | 'people-menu.avatar-color' | 'people-menu.change-color' | 'people-menu.change-name' | 'people-menu.follow' | 'people-menu.following' | 'people-menu.invite' | 'people-menu.leading' | 'people-menu.title' | 'people-menu.user' | 'share-menu.copied' | 'share-menu.copy-link-note' | 'share-menu.copy-link' | 'share-menu.copy-readonly-link-note' | 'share-menu.copy-readonly-link' | 'share-menu.create-snapshot-link' | 'share-menu.creating-project' | 'share-menu.fork-note' | 'share-menu.offline-note' | 'share-menu.project-too-large' | 'share-menu.save-note' | 'share-menu.share-project' | 'share-menu.snapshot-link-note' | 'share-menu.title' | 'share-menu.upload-failed' | 'sharing.confirm-leave.cancel' | 'sharing.confirm-leave.description' | 'sharing.confirm-leave.dont-show-again' | 'sharing.confirm-leave.leave' | 'sharing.confirm-leave.title' | 'shortcuts-dialog.a11y' | 'shortcuts-dialog.collaboration' | 'shortcuts-dialog.edit' | 'shortcuts-dialog.file' | 'shortcuts-dialog.preferences' | 'shortcuts-dialog.text-formatting' | 'shortcuts-dialog.title' | 'shortcuts-dialog.tools' | 'shortcuts-dialog.transform' | 'shortcuts-dialog.view' | 'size-style.l' | 'size-style.m' | 'size-style.s' | 'size-style.xl' | 'spline-style.cubic' | 'spline-style.line' | 'status.offline' | 'style-panel.align' | 'style-panel.arrow-kind' | 'style-panel.arrowhead-end' | 'style-panel.arrowhead-start' | 'style-panel.arrowheads' | 'style-panel.color' | 'style-panel.dash' | 'style-panel.fill' | 'style-panel.font' | 'style-panel.geo' | 'style-panel.label-align' | 'style-panel.mixed' | 'style-panel.opacity' | 'style-panel.position' | 'style-panel.size' | 'style-panel.spline' | 'style-panel.title' | 'style-panel.vertical-align' | 'theme.dark' | 'theme.light' | 'theme.system' | 'toast.close' | 'toast.error.copy-fail.desc' | 'toast.error.copy-fail.title' | 'toast.error.export-fail.desc' | 'toast.error.export-fail.title' | 'toast.error' | 'toast.info' | 'toast.success' | 'toast.warning' | 'tool-panel.more' | 'tool-panel.title' | 'tool.arrow-down' | 'tool.arrow-left' | 'tool.arrow-right' | 'tool.arrow-up' | 'tool.arrow' | 'tool.aspect-ratio.circle' | 'tool.aspect-ratio.landscape' | 'tool.aspect-ratio.original' | 'tool.aspect-ratio.portrait' | 'tool.aspect-ratio.square' | 'tool.aspect-ratio.wide' | 'tool.aspect-ratio' | 'tool.bookmark' | 'tool.check-box' | 'tool.cloud' | 'tool.diamond' | 'tool.draw' | 'tool.ellipse' | 'tool.embed' | 'tool.eraser' | 'tool.flip-horz' | 'tool.flip-vert' | 'tool.frame' | 'tool.hand' | 'tool.heart' | 'tool.hexagon' | 'tool.highlight' | 'tool.image-crop' | 'tool.image-toolbar-title' | 'tool.image-zoom' | 'tool.laser' | 'tool.line' | 'tool.media-alt-text-confirm' | 'tool.media-alt-text-desc' | 'tool.media-alt-text' | 'tool.media' | 'tool.note' | 'tool.octagon' | 'tool.oval' | 'tool.pentagon' | 'tool.pointer-down' | 'tool.rectangle' | 'tool.replace-media' | 'tool.rhombus' | 'tool.rich-text-bold' | 'tool.rich-text-bulletList' | 'tool.rich-text-code' | 'tool.rich-text-header' | 'tool.rich-text-highlight' | 'tool.rich-text-italic' | 'tool.rich-text-link-remove' | 'tool.rich-text-link-visit' | 'tool.rich-text-link' | 'tool.rich-text-orderedList' | 'tool.rich-text-strikethrough' | 'tool.rich-text-toolbar-title' | 'tool.rotate-cw' | 'tool.select' | 'tool.star' | 'tool.text' | 'tool.trapezoid' | 'tool.triangle' | 'tool.x-box' | 'ui.checked' | 'ui.close' | 'ui.unchecked' | 'verticalAlign-style.end' | 'verticalAlign-style.middle' | 'verticalAlign-style.start' | 'vscode.file-open.backup-failed' | 'vscode.file-open.backup-saved' | 'vscode.file-open.backup' | 'vscode.file-open.desc' | 'vscode.file-open.dont-show-again' | 'vscode.file-open.open';
3934
3924
 
3935
3925
  /** @public */
3936
3926
  export declare interface TLUiTranslationProviderProps {
@@ -4042,6 +4032,9 @@ export declare function ToggleFocusModeItem(): JSX_2.Element;
4042
4032
  /** @public @react */
4043
4033
  export declare function ToggleGridItem(): JSX_2.Element;
4044
4034
 
4035
+ /** @public @react */
4036
+ export declare function ToggleKeyboardShortcutsItem(): JSX_2.Element;
4037
+
4045
4038
  /** @public @react */
4046
4039
  export declare function ToggleLockMenuItem(): JSX_2.Element | null;
4047
4040
 
@@ -4149,10 +4142,10 @@ export declare function useDefaultColorTheme(): {
4149
4142
  /** @public */
4150
4143
  export declare function useDefaultHelpers(): {
4151
4144
  addDialog: (dialog: Omit<TLUiDialog, "id"> & {
4152
- id?: string | undefined;
4145
+ id?: string;
4153
4146
  }) => string;
4154
4147
  addToast: (toast: Omit<TLUiToast, "id"> & {
4155
- id?: string | undefined;
4148
+ id?: string;
4156
4149
  }) => string;
4157
4150
  clearDialogs: () => void;
4158
4151
  clearToasts: () => void;
@@ -4163,11 +4156,11 @@ export declare function useDefaultHelpers(): {
4163
4156
  getEmbedDefinition: (url: string) => TLEmbedResult;
4164
4157
  insertMedia: () => Promise<void>;
4165
4158
  isMobile: boolean;
4166
- msg: (id?: string | undefined) => string;
4167
- paste: (data: ClipboardItem[] | DataTransfer, source: TLUiEventSource, point?: VecLike | undefined) => Promise<void>;
4159
+ msg: (id?: Exclude<string, TLUiTranslationKey> | string) => string;
4160
+ paste: (data: ClipboardItem[] | DataTransfer, source: TLUiEventSource, point?: VecLike) => Promise<void>;
4168
4161
  printSelectionOrPages: () => Promise<void>;
4169
4162
  removeDialog: (id: string) => string;
4170
- removeToast: (id: string) => string;
4163
+ removeToast: (id: TLUiToast["id"]) => string;
4171
4164
  replaceImage: () => Promise<void>;
4172
4165
  replaceVideo: () => Promise<void>;
4173
4166
  };
@@ -4183,7 +4176,7 @@ export declare function useEditablePlainText(shapeId: TLShapeId, type: string, t
4183
4176
  }) => void;
4184
4177
  handleDoubleClick: (e: any) => any;
4185
4178
  handleFocus: () => void;
4186
- handleInputPointerDown: (e: React_3.PointerEvent<Element>) => void;
4179
+ handleInputPointerDown: (e: React_3.PointerEvent) => void;
4187
4180
  handleKeyDown: (e: KeyboardEvent) => void;
4188
4181
  handlePaste: (e: ClipboardEvent | React_3.ClipboardEvent<HTMLTextAreaElement>) => void;
4189
4182
  isEditing: boolean;
@@ -4200,9 +4193,9 @@ export declare function useEditableRichText(shapeId: TLShapeId, type: string, ri
4200
4193
  }) => void;
4201
4194
  handleDoubleClick: (e: any) => any;
4202
4195
  handleFocus: () => void;
4203
- handleInputPointerDown: (e: PointerEvent_2<Element>) => void;
4196
+ handleInputPointerDown: (e: React.PointerEvent) => void;
4204
4197
  handleKeyDown: (e: KeyboardEvent) => void;
4205
- handlePaste: (e: ClipboardEvent | ClipboardEvent_2<HTMLTextAreaElement>) => void;
4198
+ handlePaste: (e: ClipboardEvent | React.ClipboardEvent<HTMLTextAreaElement>) => void;
4206
4199
  isEditing: boolean;
4207
4200
  isEmpty: boolean | undefined;
4208
4201
  isReadyForEditing: boolean;
@@ -4361,7 +4354,7 @@ export declare class ZoomTool extends StateNode {
4361
4354
  static children(): TLStateNodeConstructor[];
4362
4355
  static isLockable: boolean;
4363
4356
  info: TLPointerEventInfo & {
4364
- onInteractionEnd?: string | undefined;
4357
+ onInteractionEnd?: string;
4365
4358
  };
4366
4359
  onEnter(info: TLPointerEventInfo & {
4367
4360
  onInteractionEnd: string;