From ef636934f2b38fbb70d0ce36f877f49d5a5a7d40 Mon Sep 17 00:00:00 2001
From: webadderall <131426131+webadderall@users.noreply.github.com>
Date: Sun, 26 Apr 2026 00:21:41 +1000
Subject: [PATCH] Wire new cursor asset sets
---
package.json | 2 +-
src/assets/cursors/Cursor=Beachball.svg | 46 ----
src/assets/cursors/Cursor=Cross.svg | 5 -
src/assets/cursors/Cursor=Default.svg | 5 -
src/assets/cursors/Cursor=Hand-(Grabbing).svg | 5 -
src/assets/cursors/Cursor=Hand-(Open).svg | 5 -
src/assets/cursors/Cursor=Hand-(Pointing).svg | 5 -
src/assets/cursors/Cursor=Menu.svg | 18 --
src/assets/cursors/Cursor=Move.svg | 5 -
src/assets/cursors/Cursor=Resize-(Down).svg | 5 -
src/assets/cursors/Cursor=Resize-(Left).svg | 5 -
.../cursors/Cursor=Resize-(Left-Right).svg | 5 -
src/assets/cursors/Cursor=Resize-(Right).svg | 5 -
src/assets/cursors/Cursor=Resize-(Up).svg | 5 -
.../cursors/Cursor=Resize-(Up-Down).svg | 5 -
.../Cursor=Resize-North-East-South-West.svg | 5 -
.../cursors/Cursor=Resize-North-South.svg | 5 -
.../Cursor=Resize-North-West-South-East.svg | 5 -
.../cursors/Cursor=Resize-West-East.svg | 5 -
src/assets/cursors/Cursor=Text-Cursor.svg | 5 -
src/assets/cursors/Cursor=Zoom-In.svg | 8 -
src/assets/cursors/Cursor=Zoom-Out.svg | 6 -
.../cursors/macos/beachball-1__50-50.svg | 36 +++
.../macos/busybutclickable-1__23-0.svg | 40 +++
src/assets/cursors/macos/cell-1__50-50.svg | 7 +
.../cursors/macos/closedhand-1__50-50.svg | 7 +
.../cursors/macos/contextualmenu-1__26-21.svg | 7 +
src/assets/cursors/macos/copy-1__23-0.svg | 40 +++
src/assets/cursors/macos/cross-1__50-50.svg | 7 +
.../cursors/macos/crosshair-1__50-50.svg | 5 +
src/assets/cursors/macos/help-1__50-50.svg | 7 +
src/assets/cursors/macos/ibeam-1__50-50.svg | 4 +
.../cursors/macos/ibeamstroke-1__50-50.svg | 7 +
.../cursors/macos/ibeamvertical-1__50-50.svg | 9 +
.../macos/ibeamverticalstroke-1__50-50.svg | 7 +
.../cursors/macos/makealias-1__63-29.svg | 7 +
src/assets/cursors/macos/move-1__50-50.svg | 7 +
.../cursors/macos/notallowed-1__23-0.svg | 40 +++
.../cursors/macos/openhand-1__50-50.svg | 7 +
src/assets/cursors/macos/pointer-1__34-24.svg | 7 +
.../cursors/macos/pointinghand-1__39-26.svg | 7 +
src/assets/cursors/macos/proof-1__23-0.svg | 40 +++
.../cursors/macos/resizedown-1__50-50.svg | 7 +
.../cursors/macos/resizeeast-1__50-50.svg | 7 +
.../cursors/macos/resizeeastwest-1__50-50.svg | 7 +
.../cursors/macos/resizeleft-1__50-50.svg | 7 +
.../macos/resizeleftright-1__50-50.svg | 7 +
.../cursors/macos/resizenorth-1__50-50.svg | 7 +
.../macos/resizenortheast-1__50-50.svg | 7 +
.../resizenortheastsouthwest-1__50-50.svg | 7 +
.../macos/resizenorthsouth-1__50-50.svg | 7 +
.../macos/resizenorthwest-1__50-50.svg | 7 +
.../resizenorthwestsoutheast-1__50-50.svg | 7 +
.../cursors/macos/resizeright-1__50-50.svg | 7 +
.../cursors/macos/resizesouth-1__50-50.svg | 7 +
.../macos/resizesoutheast-1__50-50.svg | 7 +
.../macos/resizesouthwest-1__50-50.svg | 7 +
.../cursors/macos/resizeup-1__50-50.svg | 7 +
.../cursors/macos/resizeupdown-1__50-50.svg | 7 +
.../cursors/macos/resizewest-1__50-50.svg | 7 +
.../macos/screenshotselection-1__50-50.svg | 92 +++++++
.../macos/screenshotwindow-1__50-50.svg | 7 +
src/assets/cursors/macos/zoomin-1__43-43.svg | 7 +
src/assets/cursors/macos/zoomout-1__43-43.svg | 7 +
.../cursors/tahoe/beachball-1__50-46.svg | 57 +++++
.../tahoe/busybutclickable-1__23-0.svg | 40 +++
src/assets/cursors/tahoe/cell-1__50-50.svg | 7 +
.../cursors/tahoe/closedhand-1__50-46.svg | 18 ++
.../cursors/tahoe/contextualmenu-1__12-5.svg | 24 ++
src/assets/cursors/tahoe/copy-1__23-0.svg | 40 +++
src/assets/cursors/tahoe/cross-1__50-46.svg | 18 ++
.../cursors/tahoe/crosshair-1__50-50.svg | 5 +
src/assets/cursors/tahoe/help-1__50-50.svg | 7 +
src/assets/cursors/tahoe/ibeam-1__50-44.svg | 18 ++
.../cursors/tahoe/ibeamstroke-1__50-44.svg | 23 ++
.../cursors/tahoe/ibeamvertical-1__50-50.svg | 18 ++
.../tahoe/ibeamverticalstroke-1__50-50.svg | 18 ++
.../cursors/tahoe/makealias-1__63-29.svg | 7 +
src/assets/cursors/tahoe/move-1__50-46.svg | 18 ++
.../cursors/tahoe/notallowed-1__23-0.svg | 40 +++
.../cursors/tahoe/openhand-1__55-57.svg | 18 ++
src/assets/cursors/tahoe/pointer-1__14-6.svg | 18 ++
.../cursors/tahoe/pointinghand-1__40-10.svg | 18 ++
src/assets/cursors/tahoe/proof-1__23-0.svg | 40 +++
.../cursors/tahoe/resizedown-1__50-36.svg | 18 ++
.../cursors/tahoe/resizeeast-1__50-50.svg | 27 +++
.../cursors/tahoe/resizeeastwest-1__50-50.svg | 23 ++
.../cursors/tahoe/resizeleft-1__62-46.svg | 18 ++
.../tahoe/resizeleftright-1__50-43.svg | 18 ++
.../cursors/tahoe/resizenorth-1__50-49.svg | 22 ++
.../tahoe/resizenortheast-1__50-49.svg | 22 ++
.../resizenortheastsouthwest-1__50-46.svg | 18 ++
.../tahoe/resizenorthsouth-1__50-49.svg | 18 ++
.../tahoe/resizenorthwest-1__50-49.svg | 22 ++
.../resizenorthwestsoutheast-1__51-46.svg | 18 ++
.../cursors/tahoe/resizeright-1__38-45.svg | 18 ++
.../cursors/tahoe/resizesouth-1__50-49.svg | 22 ++
.../tahoe/resizesoutheast-1__50-49.svg | 22 ++
.../tahoe/resizesouthwest-1__50-49.svg | 22 ++
.../cursors/tahoe/resizeup-1__50-57.svg | 18 ++
.../cursors/tahoe/resizeupdown-1__51-48.svg | 18 ++
.../cursors/tahoe/resizewest-1__50-50.svg | 27 +++
.../tahoe/screenshotselection-1__50-50.svg | 92 +++++++
.../tahoe/screenshotwindow-1__50-50.svg | 7 +
src/assets/cursors/tahoe/zoomin-1__42-39.svg | 21 ++
src/assets/cursors/tahoe/zoomout-1__43-39.svg | 19 ++
src/components/video-editor/SettingsPanel.tsx | 45 ++--
.../video-editor/projectPersistence.ts | 27 ++-
src/components/video-editor/types.ts | 2 +-
.../videoPlayback/cursorRenderer.ts | 227 ++++++------------
.../videoPlayback/uploadedCursorAssets.ts | 110 ++++-----
src/i18n/locales/en/settings.json | 6 +-
src/i18n/locales/es/settings.json | 12 +-
src/i18n/locales/fr/settings.json | 12 +-
src/i18n/locales/ko/settings.json | 12 +-
src/i18n/locales/nl/settings.json | 12 +-
src/i18n/locales/zh-CN/settings.json | 12 +-
vite.config.ts | 8 +
118 files changed, 1689 insertions(+), 460 deletions(-)
delete mode 100644 src/assets/cursors/Cursor=Beachball.svg
delete mode 100644 src/assets/cursors/Cursor=Cross.svg
delete mode 100644 src/assets/cursors/Cursor=Default.svg
delete mode 100644 src/assets/cursors/Cursor=Hand-(Grabbing).svg
delete mode 100644 src/assets/cursors/Cursor=Hand-(Open).svg
delete mode 100644 src/assets/cursors/Cursor=Hand-(Pointing).svg
delete mode 100644 src/assets/cursors/Cursor=Menu.svg
delete mode 100644 src/assets/cursors/Cursor=Move.svg
delete mode 100644 src/assets/cursors/Cursor=Resize-(Down).svg
delete mode 100644 src/assets/cursors/Cursor=Resize-(Left).svg
delete mode 100644 src/assets/cursors/Cursor=Resize-(Left-Right).svg
delete mode 100644 src/assets/cursors/Cursor=Resize-(Right).svg
delete mode 100644 src/assets/cursors/Cursor=Resize-(Up).svg
delete mode 100644 src/assets/cursors/Cursor=Resize-(Up-Down).svg
delete mode 100644 src/assets/cursors/Cursor=Resize-North-East-South-West.svg
delete mode 100644 src/assets/cursors/Cursor=Resize-North-South.svg
delete mode 100644 src/assets/cursors/Cursor=Resize-North-West-South-East.svg
delete mode 100644 src/assets/cursors/Cursor=Resize-West-East.svg
delete mode 100644 src/assets/cursors/Cursor=Text-Cursor.svg
delete mode 100644 src/assets/cursors/Cursor=Zoom-In.svg
delete mode 100644 src/assets/cursors/Cursor=Zoom-Out.svg
create mode 100644 src/assets/cursors/macos/beachball-1__50-50.svg
create mode 100644 src/assets/cursors/macos/busybutclickable-1__23-0.svg
create mode 100644 src/assets/cursors/macos/cell-1__50-50.svg
create mode 100644 src/assets/cursors/macos/closedhand-1__50-50.svg
create mode 100644 src/assets/cursors/macos/contextualmenu-1__26-21.svg
create mode 100644 src/assets/cursors/macos/copy-1__23-0.svg
create mode 100644 src/assets/cursors/macos/cross-1__50-50.svg
create mode 100644 src/assets/cursors/macos/crosshair-1__50-50.svg
create mode 100644 src/assets/cursors/macos/help-1__50-50.svg
create mode 100644 src/assets/cursors/macos/ibeam-1__50-50.svg
create mode 100644 src/assets/cursors/macos/ibeamstroke-1__50-50.svg
create mode 100644 src/assets/cursors/macos/ibeamvertical-1__50-50.svg
create mode 100644 src/assets/cursors/macos/ibeamverticalstroke-1__50-50.svg
create mode 100644 src/assets/cursors/macos/makealias-1__63-29.svg
create mode 100644 src/assets/cursors/macos/move-1__50-50.svg
create mode 100644 src/assets/cursors/macos/notallowed-1__23-0.svg
create mode 100644 src/assets/cursors/macos/openhand-1__50-50.svg
create mode 100644 src/assets/cursors/macos/pointer-1__34-24.svg
create mode 100644 src/assets/cursors/macos/pointinghand-1__39-26.svg
create mode 100644 src/assets/cursors/macos/proof-1__23-0.svg
create mode 100644 src/assets/cursors/macos/resizedown-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizeeast-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizeeastwest-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizeleft-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizeleftright-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizenorth-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizenortheast-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizenortheastsouthwest-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizenorthsouth-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizenorthwest-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizenorthwestsoutheast-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizeright-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizesouth-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizesoutheast-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizesouthwest-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizeup-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizeupdown-1__50-50.svg
create mode 100644 src/assets/cursors/macos/resizewest-1__50-50.svg
create mode 100644 src/assets/cursors/macos/screenshotselection-1__50-50.svg
create mode 100644 src/assets/cursors/macos/screenshotwindow-1__50-50.svg
create mode 100644 src/assets/cursors/macos/zoomin-1__43-43.svg
create mode 100644 src/assets/cursors/macos/zoomout-1__43-43.svg
create mode 100644 src/assets/cursors/tahoe/beachball-1__50-46.svg
create mode 100644 src/assets/cursors/tahoe/busybutclickable-1__23-0.svg
create mode 100644 src/assets/cursors/tahoe/cell-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/closedhand-1__50-46.svg
create mode 100644 src/assets/cursors/tahoe/contextualmenu-1__12-5.svg
create mode 100644 src/assets/cursors/tahoe/copy-1__23-0.svg
create mode 100644 src/assets/cursors/tahoe/cross-1__50-46.svg
create mode 100644 src/assets/cursors/tahoe/crosshair-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/help-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/ibeam-1__50-44.svg
create mode 100644 src/assets/cursors/tahoe/ibeamstroke-1__50-44.svg
create mode 100644 src/assets/cursors/tahoe/ibeamvertical-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/ibeamverticalstroke-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/makealias-1__63-29.svg
create mode 100644 src/assets/cursors/tahoe/move-1__50-46.svg
create mode 100644 src/assets/cursors/tahoe/notallowed-1__23-0.svg
create mode 100644 src/assets/cursors/tahoe/openhand-1__55-57.svg
create mode 100644 src/assets/cursors/tahoe/pointer-1__14-6.svg
create mode 100644 src/assets/cursors/tahoe/pointinghand-1__40-10.svg
create mode 100644 src/assets/cursors/tahoe/proof-1__23-0.svg
create mode 100644 src/assets/cursors/tahoe/resizedown-1__50-36.svg
create mode 100644 src/assets/cursors/tahoe/resizeeast-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/resizeeastwest-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/resizeleft-1__62-46.svg
create mode 100644 src/assets/cursors/tahoe/resizeleftright-1__50-43.svg
create mode 100644 src/assets/cursors/tahoe/resizenorth-1__50-49.svg
create mode 100644 src/assets/cursors/tahoe/resizenortheast-1__50-49.svg
create mode 100644 src/assets/cursors/tahoe/resizenortheastsouthwest-1__50-46.svg
create mode 100644 src/assets/cursors/tahoe/resizenorthsouth-1__50-49.svg
create mode 100644 src/assets/cursors/tahoe/resizenorthwest-1__50-49.svg
create mode 100644 src/assets/cursors/tahoe/resizenorthwestsoutheast-1__51-46.svg
create mode 100644 src/assets/cursors/tahoe/resizeright-1__38-45.svg
create mode 100644 src/assets/cursors/tahoe/resizesouth-1__50-49.svg
create mode 100644 src/assets/cursors/tahoe/resizesoutheast-1__50-49.svg
create mode 100644 src/assets/cursors/tahoe/resizesouthwest-1__50-49.svg
create mode 100644 src/assets/cursors/tahoe/resizeup-1__50-57.svg
create mode 100644 src/assets/cursors/tahoe/resizeupdown-1__51-48.svg
create mode 100644 src/assets/cursors/tahoe/resizewest-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/screenshotselection-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/screenshotwindow-1__50-50.svg
create mode 100644 src/assets/cursors/tahoe/zoomin-1__42-39.svg
create mode 100644 src/assets/cursors/tahoe/zoomout-1__43-39.svg
diff --git a/package.json b/package.json
index 6fac6f9d..8004dfd5 100644
--- a/package.json
+++ b/package.json
@@ -104,5 +104,5 @@
"vitest": "^4.0.16",
"web-demuxer": "^4.0.0"
},
- "main": "dist-electron/main.js"
+ "main": "dist-electron/main.cjs"
}
diff --git a/src/assets/cursors/Cursor=Beachball.svg b/src/assets/cursors/Cursor=Beachball.svg
deleted file mode 100644
index 30bdbe50..00000000
--- a/src/assets/cursors/Cursor=Beachball.svg
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Cross.svg b/src/assets/cursors/Cursor=Cross.svg
deleted file mode 100644
index b404553d..00000000
--- a/src/assets/cursors/Cursor=Cross.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Default.svg b/src/assets/cursors/Cursor=Default.svg
deleted file mode 100644
index f76f31fd..00000000
--- a/src/assets/cursors/Cursor=Default.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Hand-(Grabbing).svg b/src/assets/cursors/Cursor=Hand-(Grabbing).svg
deleted file mode 100644
index 08278675..00000000
--- a/src/assets/cursors/Cursor=Hand-(Grabbing).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Hand-(Open).svg b/src/assets/cursors/Cursor=Hand-(Open).svg
deleted file mode 100644
index 4ceafb0f..00000000
--- a/src/assets/cursors/Cursor=Hand-(Open).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Hand-(Pointing).svg b/src/assets/cursors/Cursor=Hand-(Pointing).svg
deleted file mode 100644
index 19a70a67..00000000
--- a/src/assets/cursors/Cursor=Hand-(Pointing).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Menu.svg b/src/assets/cursors/Cursor=Menu.svg
deleted file mode 100644
index 3489257b..00000000
--- a/src/assets/cursors/Cursor=Menu.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Move.svg b/src/assets/cursors/Cursor=Move.svg
deleted file mode 100644
index 50e56b76..00000000
--- a/src/assets/cursors/Cursor=Move.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-(Down).svg b/src/assets/cursors/Cursor=Resize-(Down).svg
deleted file mode 100644
index fba36729..00000000
--- a/src/assets/cursors/Cursor=Resize-(Down).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-(Left).svg b/src/assets/cursors/Cursor=Resize-(Left).svg
deleted file mode 100644
index 6e21fb77..00000000
--- a/src/assets/cursors/Cursor=Resize-(Left).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-(Left-Right).svg b/src/assets/cursors/Cursor=Resize-(Left-Right).svg
deleted file mode 100644
index 7021d229..00000000
--- a/src/assets/cursors/Cursor=Resize-(Left-Right).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-(Right).svg b/src/assets/cursors/Cursor=Resize-(Right).svg
deleted file mode 100644
index 1ce801ce..00000000
--- a/src/assets/cursors/Cursor=Resize-(Right).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-(Up).svg b/src/assets/cursors/Cursor=Resize-(Up).svg
deleted file mode 100644
index 9c4ac0f0..00000000
--- a/src/assets/cursors/Cursor=Resize-(Up).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-(Up-Down).svg b/src/assets/cursors/Cursor=Resize-(Up-Down).svg
deleted file mode 100644
index b01a40e3..00000000
--- a/src/assets/cursors/Cursor=Resize-(Up-Down).svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-North-East-South-West.svg b/src/assets/cursors/Cursor=Resize-North-East-South-West.svg
deleted file mode 100644
index 1185c1ff..00000000
--- a/src/assets/cursors/Cursor=Resize-North-East-South-West.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-North-South.svg b/src/assets/cursors/Cursor=Resize-North-South.svg
deleted file mode 100644
index 57eaa056..00000000
--- a/src/assets/cursors/Cursor=Resize-North-South.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-North-West-South-East.svg b/src/assets/cursors/Cursor=Resize-North-West-South-East.svg
deleted file mode 100644
index f00fc879..00000000
--- a/src/assets/cursors/Cursor=Resize-North-West-South-East.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Resize-West-East.svg b/src/assets/cursors/Cursor=Resize-West-East.svg
deleted file mode 100644
index ef1929fb..00000000
--- a/src/assets/cursors/Cursor=Resize-West-East.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Text-Cursor.svg b/src/assets/cursors/Cursor=Text-Cursor.svg
deleted file mode 100644
index 1bfd0809..00000000
--- a/src/assets/cursors/Cursor=Text-Cursor.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Zoom-In.svg b/src/assets/cursors/Cursor=Zoom-In.svg
deleted file mode 100644
index 8ec9b3ce..00000000
--- a/src/assets/cursors/Cursor=Zoom-In.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
diff --git a/src/assets/cursors/Cursor=Zoom-Out.svg b/src/assets/cursors/Cursor=Zoom-Out.svg
deleted file mode 100644
index 810878ba..00000000
--- a/src/assets/cursors/Cursor=Zoom-Out.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
diff --git a/src/assets/cursors/macos/beachball-1__50-50.svg b/src/assets/cursors/macos/beachball-1__50-50.svg
new file mode 100644
index 00000000..d6b3ae45
--- /dev/null
+++ b/src/assets/cursors/macos/beachball-1__50-50.svg
@@ -0,0 +1,36 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/busybutclickable-1__23-0.svg b/src/assets/cursors/macos/busybutclickable-1__23-0.svg
new file mode 100644
index 00000000..3dfed791
--- /dev/null
+++ b/src/assets/cursors/macos/busybutclickable-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/cell-1__50-50.svg b/src/assets/cursors/macos/cell-1__50-50.svg
new file mode 100644
index 00000000..e7119c0b
--- /dev/null
+++ b/src/assets/cursors/macos/cell-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/closedhand-1__50-50.svg b/src/assets/cursors/macos/closedhand-1__50-50.svg
new file mode 100644
index 00000000..12dc7d18
--- /dev/null
+++ b/src/assets/cursors/macos/closedhand-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/contextualmenu-1__26-21.svg b/src/assets/cursors/macos/contextualmenu-1__26-21.svg
new file mode 100644
index 00000000..ff27b69e
--- /dev/null
+++ b/src/assets/cursors/macos/contextualmenu-1__26-21.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/copy-1__23-0.svg b/src/assets/cursors/macos/copy-1__23-0.svg
new file mode 100644
index 00000000..6f7085e9
--- /dev/null
+++ b/src/assets/cursors/macos/copy-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/cross-1__50-50.svg b/src/assets/cursors/macos/cross-1__50-50.svg
new file mode 100644
index 00000000..5f2f5522
--- /dev/null
+++ b/src/assets/cursors/macos/cross-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/crosshair-1__50-50.svg b/src/assets/cursors/macos/crosshair-1__50-50.svg
new file mode 100644
index 00000000..4f76ba3d
--- /dev/null
+++ b/src/assets/cursors/macos/crosshair-1__50-50.svg
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/help-1__50-50.svg b/src/assets/cursors/macos/help-1__50-50.svg
new file mode 100644
index 00000000..7b292313
--- /dev/null
+++ b/src/assets/cursors/macos/help-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/ibeam-1__50-50.svg b/src/assets/cursors/macos/ibeam-1__50-50.svg
new file mode 100644
index 00000000..55783048
--- /dev/null
+++ b/src/assets/cursors/macos/ibeam-1__50-50.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/ibeamstroke-1__50-50.svg b/src/assets/cursors/macos/ibeamstroke-1__50-50.svg
new file mode 100644
index 00000000..7d40f01d
--- /dev/null
+++ b/src/assets/cursors/macos/ibeamstroke-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/ibeamvertical-1__50-50.svg b/src/assets/cursors/macos/ibeamvertical-1__50-50.svg
new file mode 100644
index 00000000..238e8f62
--- /dev/null
+++ b/src/assets/cursors/macos/ibeamvertical-1__50-50.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/ibeamverticalstroke-1__50-50.svg b/src/assets/cursors/macos/ibeamverticalstroke-1__50-50.svg
new file mode 100644
index 00000000..bc0dd69f
--- /dev/null
+++ b/src/assets/cursors/macos/ibeamverticalstroke-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/makealias-1__63-29.svg b/src/assets/cursors/macos/makealias-1__63-29.svg
new file mode 100644
index 00000000..1e188e75
--- /dev/null
+++ b/src/assets/cursors/macos/makealias-1__63-29.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/move-1__50-50.svg b/src/assets/cursors/macos/move-1__50-50.svg
new file mode 100644
index 00000000..7e358e29
--- /dev/null
+++ b/src/assets/cursors/macos/move-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/notallowed-1__23-0.svg b/src/assets/cursors/macos/notallowed-1__23-0.svg
new file mode 100644
index 00000000..7ee2ef75
--- /dev/null
+++ b/src/assets/cursors/macos/notallowed-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/openhand-1__50-50.svg b/src/assets/cursors/macos/openhand-1__50-50.svg
new file mode 100644
index 00000000..2afa2724
--- /dev/null
+++ b/src/assets/cursors/macos/openhand-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/pointer-1__34-24.svg b/src/assets/cursors/macos/pointer-1__34-24.svg
new file mode 100644
index 00000000..fd4f6cb4
--- /dev/null
+++ b/src/assets/cursors/macos/pointer-1__34-24.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/pointinghand-1__39-26.svg b/src/assets/cursors/macos/pointinghand-1__39-26.svg
new file mode 100644
index 00000000..11ed47b7
--- /dev/null
+++ b/src/assets/cursors/macos/pointinghand-1__39-26.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/proof-1__23-0.svg b/src/assets/cursors/macos/proof-1__23-0.svg
new file mode 100644
index 00000000..86ac7db9
--- /dev/null
+++ b/src/assets/cursors/macos/proof-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizedown-1__50-50.svg b/src/assets/cursors/macos/resizedown-1__50-50.svg
new file mode 100644
index 00000000..9416c506
--- /dev/null
+++ b/src/assets/cursors/macos/resizedown-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizeeast-1__50-50.svg b/src/assets/cursors/macos/resizeeast-1__50-50.svg
new file mode 100644
index 00000000..d52b7cc3
--- /dev/null
+++ b/src/assets/cursors/macos/resizeeast-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizeeastwest-1__50-50.svg b/src/assets/cursors/macos/resizeeastwest-1__50-50.svg
new file mode 100644
index 00000000..4db1b5f5
--- /dev/null
+++ b/src/assets/cursors/macos/resizeeastwest-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizeleft-1__50-50.svg b/src/assets/cursors/macos/resizeleft-1__50-50.svg
new file mode 100644
index 00000000..d64ecab2
--- /dev/null
+++ b/src/assets/cursors/macos/resizeleft-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizeleftright-1__50-50.svg b/src/assets/cursors/macos/resizeleftright-1__50-50.svg
new file mode 100644
index 00000000..eeab5ecb
--- /dev/null
+++ b/src/assets/cursors/macos/resizeleftright-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizenorth-1__50-50.svg b/src/assets/cursors/macos/resizenorth-1__50-50.svg
new file mode 100644
index 00000000..3a44a0bc
--- /dev/null
+++ b/src/assets/cursors/macos/resizenorth-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizenortheast-1__50-50.svg b/src/assets/cursors/macos/resizenortheast-1__50-50.svg
new file mode 100644
index 00000000..cec926f0
--- /dev/null
+++ b/src/assets/cursors/macos/resizenortheast-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizenortheastsouthwest-1__50-50.svg b/src/assets/cursors/macos/resizenortheastsouthwest-1__50-50.svg
new file mode 100644
index 00000000..a15f61a8
--- /dev/null
+++ b/src/assets/cursors/macos/resizenortheastsouthwest-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizenorthsouth-1__50-50.svg b/src/assets/cursors/macos/resizenorthsouth-1__50-50.svg
new file mode 100644
index 00000000..40d4718b
--- /dev/null
+++ b/src/assets/cursors/macos/resizenorthsouth-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizenorthwest-1__50-50.svg b/src/assets/cursors/macos/resizenorthwest-1__50-50.svg
new file mode 100644
index 00000000..0fb5cca6
--- /dev/null
+++ b/src/assets/cursors/macos/resizenorthwest-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizenorthwestsoutheast-1__50-50.svg b/src/assets/cursors/macos/resizenorthwestsoutheast-1__50-50.svg
new file mode 100644
index 00000000..dc8d3aed
--- /dev/null
+++ b/src/assets/cursors/macos/resizenorthwestsoutheast-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizeright-1__50-50.svg b/src/assets/cursors/macos/resizeright-1__50-50.svg
new file mode 100644
index 00000000..5c96c8e7
--- /dev/null
+++ b/src/assets/cursors/macos/resizeright-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizesouth-1__50-50.svg b/src/assets/cursors/macos/resizesouth-1__50-50.svg
new file mode 100644
index 00000000..19a3aade
--- /dev/null
+++ b/src/assets/cursors/macos/resizesouth-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizesoutheast-1__50-50.svg b/src/assets/cursors/macos/resizesoutheast-1__50-50.svg
new file mode 100644
index 00000000..12149454
--- /dev/null
+++ b/src/assets/cursors/macos/resizesoutheast-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizesouthwest-1__50-50.svg b/src/assets/cursors/macos/resizesouthwest-1__50-50.svg
new file mode 100644
index 00000000..61616725
--- /dev/null
+++ b/src/assets/cursors/macos/resizesouthwest-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizeup-1__50-50.svg b/src/assets/cursors/macos/resizeup-1__50-50.svg
new file mode 100644
index 00000000..4a7b5d49
--- /dev/null
+++ b/src/assets/cursors/macos/resizeup-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizeupdown-1__50-50.svg b/src/assets/cursors/macos/resizeupdown-1__50-50.svg
new file mode 100644
index 00000000..ac4f5b15
--- /dev/null
+++ b/src/assets/cursors/macos/resizeupdown-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/resizewest-1__50-50.svg b/src/assets/cursors/macos/resizewest-1__50-50.svg
new file mode 100644
index 00000000..2c8b9a05
--- /dev/null
+++ b/src/assets/cursors/macos/resizewest-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/screenshotselection-1__50-50.svg b/src/assets/cursors/macos/screenshotselection-1__50-50.svg
new file mode 100644
index 00000000..5717500b
--- /dev/null
+++ b/src/assets/cursors/macos/screenshotselection-1__50-50.svg
@@ -0,0 +1,92 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/screenshotwindow-1__50-50.svg b/src/assets/cursors/macos/screenshotwindow-1__50-50.svg
new file mode 100644
index 00000000..25122f5c
--- /dev/null
+++ b/src/assets/cursors/macos/screenshotwindow-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/zoomin-1__43-43.svg b/src/assets/cursors/macos/zoomin-1__43-43.svg
new file mode 100644
index 00000000..ed08654c
--- /dev/null
+++ b/src/assets/cursors/macos/zoomin-1__43-43.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/macos/zoomout-1__43-43.svg b/src/assets/cursors/macos/zoomout-1__43-43.svg
new file mode 100644
index 00000000..b54c6f0e
--- /dev/null
+++ b/src/assets/cursors/macos/zoomout-1__43-43.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/beachball-1__50-46.svg b/src/assets/cursors/tahoe/beachball-1__50-46.svg
new file mode 100644
index 00000000..72f52d7e
--- /dev/null
+++ b/src/assets/cursors/tahoe/beachball-1__50-46.svg
@@ -0,0 +1,57 @@
+
diff --git a/src/assets/cursors/tahoe/busybutclickable-1__23-0.svg b/src/assets/cursors/tahoe/busybutclickable-1__23-0.svg
new file mode 100644
index 00000000..3dfed791
--- /dev/null
+++ b/src/assets/cursors/tahoe/busybutclickable-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/cell-1__50-50.svg b/src/assets/cursors/tahoe/cell-1__50-50.svg
new file mode 100644
index 00000000..e7119c0b
--- /dev/null
+++ b/src/assets/cursors/tahoe/cell-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/closedhand-1__50-46.svg b/src/assets/cursors/tahoe/closedhand-1__50-46.svg
new file mode 100644
index 00000000..5bff2092
--- /dev/null
+++ b/src/assets/cursors/tahoe/closedhand-1__50-46.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/contextualmenu-1__12-5.svg b/src/assets/cursors/tahoe/contextualmenu-1__12-5.svg
new file mode 100644
index 00000000..e983117a
--- /dev/null
+++ b/src/assets/cursors/tahoe/contextualmenu-1__12-5.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/assets/cursors/tahoe/copy-1__23-0.svg b/src/assets/cursors/tahoe/copy-1__23-0.svg
new file mode 100644
index 00000000..6f7085e9
--- /dev/null
+++ b/src/assets/cursors/tahoe/copy-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/cross-1__50-46.svg b/src/assets/cursors/tahoe/cross-1__50-46.svg
new file mode 100644
index 00000000..251f624f
--- /dev/null
+++ b/src/assets/cursors/tahoe/cross-1__50-46.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/crosshair-1__50-50.svg b/src/assets/cursors/tahoe/crosshair-1__50-50.svg
new file mode 100644
index 00000000..4f76ba3d
--- /dev/null
+++ b/src/assets/cursors/tahoe/crosshair-1__50-50.svg
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/help-1__50-50.svg b/src/assets/cursors/tahoe/help-1__50-50.svg
new file mode 100644
index 00000000..7b292313
--- /dev/null
+++ b/src/assets/cursors/tahoe/help-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/ibeam-1__50-44.svg b/src/assets/cursors/tahoe/ibeam-1__50-44.svg
new file mode 100644
index 00000000..9b50370a
--- /dev/null
+++ b/src/assets/cursors/tahoe/ibeam-1__50-44.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/ibeamstroke-1__50-44.svg b/src/assets/cursors/tahoe/ibeamstroke-1__50-44.svg
new file mode 100644
index 00000000..2022f643
--- /dev/null
+++ b/src/assets/cursors/tahoe/ibeamstroke-1__50-44.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/assets/cursors/tahoe/ibeamvertical-1__50-50.svg b/src/assets/cursors/tahoe/ibeamvertical-1__50-50.svg
new file mode 100644
index 00000000..b7e1b9bc
--- /dev/null
+++ b/src/assets/cursors/tahoe/ibeamvertical-1__50-50.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/ibeamverticalstroke-1__50-50.svg b/src/assets/cursors/tahoe/ibeamverticalstroke-1__50-50.svg
new file mode 100644
index 00000000..fd1b6b0e
--- /dev/null
+++ b/src/assets/cursors/tahoe/ibeamverticalstroke-1__50-50.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/makealias-1__63-29.svg b/src/assets/cursors/tahoe/makealias-1__63-29.svg
new file mode 100644
index 00000000..1e188e75
--- /dev/null
+++ b/src/assets/cursors/tahoe/makealias-1__63-29.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/move-1__50-46.svg b/src/assets/cursors/tahoe/move-1__50-46.svg
new file mode 100644
index 00000000..623a1428
--- /dev/null
+++ b/src/assets/cursors/tahoe/move-1__50-46.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/notallowed-1__23-0.svg b/src/assets/cursors/tahoe/notallowed-1__23-0.svg
new file mode 100644
index 00000000..7ee2ef75
--- /dev/null
+++ b/src/assets/cursors/tahoe/notallowed-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/openhand-1__55-57.svg b/src/assets/cursors/tahoe/openhand-1__55-57.svg
new file mode 100644
index 00000000..a4b8ff00
--- /dev/null
+++ b/src/assets/cursors/tahoe/openhand-1__55-57.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/pointer-1__14-6.svg b/src/assets/cursors/tahoe/pointer-1__14-6.svg
new file mode 100644
index 00000000..2acf2f63
--- /dev/null
+++ b/src/assets/cursors/tahoe/pointer-1__14-6.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/pointinghand-1__40-10.svg b/src/assets/cursors/tahoe/pointinghand-1__40-10.svg
new file mode 100644
index 00000000..5ea2bd86
--- /dev/null
+++ b/src/assets/cursors/tahoe/pointinghand-1__40-10.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/proof-1__23-0.svg b/src/assets/cursors/tahoe/proof-1__23-0.svg
new file mode 100644
index 00000000..86ac7db9
--- /dev/null
+++ b/src/assets/cursors/tahoe/proof-1__23-0.svg
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/resizedown-1__50-36.svg b/src/assets/cursors/tahoe/resizedown-1__50-36.svg
new file mode 100644
index 00000000..047c1449
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizedown-1__50-36.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizeeast-1__50-50.svg b/src/assets/cursors/tahoe/resizeeast-1__50-50.svg
new file mode 100644
index 00000000..0f88973d
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizeeast-1__50-50.svg
@@ -0,0 +1,27 @@
+
diff --git a/src/assets/cursors/tahoe/resizeeastwest-1__50-50.svg b/src/assets/cursors/tahoe/resizeeastwest-1__50-50.svg
new file mode 100644
index 00000000..e6ce73f8
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizeeastwest-1__50-50.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/assets/cursors/tahoe/resizeleft-1__62-46.svg b/src/assets/cursors/tahoe/resizeleft-1__62-46.svg
new file mode 100644
index 00000000..e1294d4f
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizeleft-1__62-46.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizeleftright-1__50-43.svg b/src/assets/cursors/tahoe/resizeleftright-1__50-43.svg
new file mode 100644
index 00000000..d4bfad19
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizeleftright-1__50-43.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizenorth-1__50-49.svg b/src/assets/cursors/tahoe/resizenorth-1__50-49.svg
new file mode 100644
index 00000000..fd495bd8
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizenorth-1__50-49.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/assets/cursors/tahoe/resizenortheast-1__50-49.svg b/src/assets/cursors/tahoe/resizenortheast-1__50-49.svg
new file mode 100644
index 00000000..fc17ef52
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizenortheast-1__50-49.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/assets/cursors/tahoe/resizenortheastsouthwest-1__50-46.svg b/src/assets/cursors/tahoe/resizenortheastsouthwest-1__50-46.svg
new file mode 100644
index 00000000..b3cd9883
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizenortheastsouthwest-1__50-46.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizenorthsouth-1__50-49.svg b/src/assets/cursors/tahoe/resizenorthsouth-1__50-49.svg
new file mode 100644
index 00000000..92332cdd
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizenorthsouth-1__50-49.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizenorthwest-1__50-49.svg b/src/assets/cursors/tahoe/resizenorthwest-1__50-49.svg
new file mode 100644
index 00000000..da352ddd
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizenorthwest-1__50-49.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/assets/cursors/tahoe/resizenorthwestsoutheast-1__51-46.svg b/src/assets/cursors/tahoe/resizenorthwestsoutheast-1__51-46.svg
new file mode 100644
index 00000000..d621a37e
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizenorthwestsoutheast-1__51-46.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizeright-1__38-45.svg b/src/assets/cursors/tahoe/resizeright-1__38-45.svg
new file mode 100644
index 00000000..0451c859
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizeright-1__38-45.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizesouth-1__50-49.svg b/src/assets/cursors/tahoe/resizesouth-1__50-49.svg
new file mode 100644
index 00000000..06d1630b
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizesouth-1__50-49.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/assets/cursors/tahoe/resizesoutheast-1__50-49.svg b/src/assets/cursors/tahoe/resizesoutheast-1__50-49.svg
new file mode 100644
index 00000000..79aa4ab4
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizesoutheast-1__50-49.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/assets/cursors/tahoe/resizesouthwest-1__50-49.svg b/src/assets/cursors/tahoe/resizesouthwest-1__50-49.svg
new file mode 100644
index 00000000..5ddb8780
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizesouthwest-1__50-49.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/assets/cursors/tahoe/resizeup-1__50-57.svg b/src/assets/cursors/tahoe/resizeup-1__50-57.svg
new file mode 100644
index 00000000..71c4ebc1
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizeup-1__50-57.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizeupdown-1__51-48.svg b/src/assets/cursors/tahoe/resizeupdown-1__51-48.svg
new file mode 100644
index 00000000..68b44dec
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizeupdown-1__51-48.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/assets/cursors/tahoe/resizewest-1__50-50.svg b/src/assets/cursors/tahoe/resizewest-1__50-50.svg
new file mode 100644
index 00000000..6b3537ad
--- /dev/null
+++ b/src/assets/cursors/tahoe/resizewest-1__50-50.svg
@@ -0,0 +1,27 @@
+
diff --git a/src/assets/cursors/tahoe/screenshotselection-1__50-50.svg b/src/assets/cursors/tahoe/screenshotselection-1__50-50.svg
new file mode 100644
index 00000000..5717500b
--- /dev/null
+++ b/src/assets/cursors/tahoe/screenshotselection-1__50-50.svg
@@ -0,0 +1,92 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/screenshotwindow-1__50-50.svg b/src/assets/cursors/tahoe/screenshotwindow-1__50-50.svg
new file mode 100644
index 00000000..25122f5c
--- /dev/null
+++ b/src/assets/cursors/tahoe/screenshotwindow-1__50-50.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/src/assets/cursors/tahoe/zoomin-1__42-39.svg b/src/assets/cursors/tahoe/zoomin-1__42-39.svg
new file mode 100644
index 00000000..7a026cbb
--- /dev/null
+++ b/src/assets/cursors/tahoe/zoomin-1__42-39.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/assets/cursors/tahoe/zoomout-1__43-39.svg b/src/assets/cursors/tahoe/zoomout-1__43-39.svg
new file mode 100644
index 00000000..d220d21f
--- /dev/null
+++ b/src/assets/cursors/tahoe/zoomout-1__43-39.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/components/video-editor/SettingsPanel.tsx b/src/components/video-editor/SettingsPanel.tsx
index 0902094c..3fc31a40 100644
--- a/src/components/video-editor/SettingsPanel.tsx
+++ b/src/components/video-editor/SettingsPanel.tsx
@@ -24,7 +24,6 @@ import {
} from "@/lib/wallpapers";
import { type AspectRatio } from "@/utils/aspectRatioUtils";
import minimalCursorUrl from "../../../Minimal Cursor.svg";
-import tahoeCursorUrl from "../../assets/cursors/Cursor=Default.svg";
import { useI18n, useScopedT } from "../../contexts/I18nContext";
import type { AppLocale } from "../../i18n/config";
import { SUPPORTED_LOCALES } from "../../i18n/config";
@@ -77,12 +76,11 @@ import {
SPEED_OPTIONS,
} from "./types";
import { fromCursorSwaySliderValue, toCursorSwaySliderValue } from "./videoPlayback/cursorSway";
-import {
- UPLOADED_CURSOR_SAMPLE_SIZE,
- uploadedCursorAssets,
-} from "./videoPlayback/uploadedCursorAssets";
+import { cursorSetAssets } from "./videoPlayback/uploadedCursorAssets";
import { getWebcamPositionForPreset, resolveWebcamCorner } from "./webcamOverlay";
+const tahoeCursorUrl = cursorSetAssets.tahoe.arrow.url;
+
const GRADIENTS = [
"linear-gradient( 111.6deg, rgba(114,167,232,1) 9.4%, rgba(253,129,82,1) 43.9%, rgba(253,129,82,1) 54.8%, rgba(249,202,86,1) 86.3% )",
"linear-gradient(120deg, #d4fc79 0%, #96e6a1 100%)",
@@ -470,10 +468,11 @@ type WallpaperTile = {
};
const BUILTIN_CURSOR_STYLE_OPTIONS: CursorStyleOption[] = [
+ { value: "macos", label: "macOS" },
{ value: "tahoe", label: "Tahoe" },
+ { value: "tahoe-inverted", label: "Tahoe Inverted" },
{ value: "dot", label: "Dot" },
{ value: "figma", label: "Minimal" },
- { value: "mono", label: "Inverted" },
];
const CAPTION_LANGUAGE_OPTIONS = [
@@ -644,15 +643,17 @@ function CursorStylePreview({
previewUrls: Partial>;
}) {
const previewSrc =
- style === "tahoe"
- ? (previewUrls.tahoe ?? tahoeCursorUrl)
- : style === "figma"
- ? (previewUrls.figma ?? minimalCursorUrl)
- : style === "mono"
- ? (previewUrls.mono ?? tahoeCursorUrl)
- : previewUrls[style];
+ style === "macos"
+ ? (previewUrls.macos ?? tahoeCursorUrl)
+ : style === "tahoe"
+ ? (previewUrls.tahoe ?? tahoeCursorUrl)
+ : style === "figma"
+ ? (previewUrls.figma ?? minimalCursorUrl)
+ : style === "tahoe-inverted"
+ ? (previewUrls["tahoe-inverted"] ?? tahoeCursorUrl)
+ : previewUrls[style];
- if (style === "tahoe") {
+ if (style === "macos" || style === "tahoe") {
return (
{
try {
- const tahoeAsset = uploadedCursorAssets.arrow;
- const tahoePreview = tahoeAsset
- ? await createTrimmedSvgPreview(
- tahoeAsset.url,
- UPLOADED_CURSOR_SAMPLE_SIZE,
- tahoeAsset.trim,
- )
- : tahoeCursorUrl;
+ const macosPreview = cursorSetAssets.macos.arrow.url;
+ const tahoePreview = cursorSetAssets.tahoe.arrow.url;
const minimalPreview = await createTrimmedSvgPreview(minimalCursorUrl, 512);
const invertedPreview = await createInvertedPreview(tahoePreview);
if (!cancelled) {
setBuiltInCursorPreviewUrls({
+ macos: macosPreview,
tahoe: tahoePreview,
figma: minimalPreview,
- mono: invertedPreview,
+ "tahoe-inverted": invertedPreview,
});
}
} catch {
if (!cancelled) {
setBuiltInCursorPreviewUrls({
+ macos: tahoeCursorUrl,
tahoe: tahoeCursorUrl,
figma: minimalCursorUrl,
- mono: tahoeCursorUrl,
+ "tahoe-inverted": tahoeCursorUrl,
});
}
}
diff --git a/src/components/video-editor/projectPersistence.ts b/src/components/video-editor/projectPersistence.ts
index a9bf87d0..5ebfa011 100644
--- a/src/components/video-editor/projectPersistence.ts
+++ b/src/components/video-editor/projectPersistence.ts
@@ -37,6 +37,7 @@ import {
DEFAULT_CURSOR_STYLE,
DEFAULT_CURSOR_SWAY,
DEFAULT_FIGURE_DATA,
+ DEFAULT_PADDING,
DEFAULT_PLAYBACK_SPEED,
DEFAULT_WEBCAM_CORNER_RADIUS,
DEFAULT_WEBCAM_MARGIN,
@@ -62,7 +63,6 @@ import {
type WebcamOverlaySettings,
type ZoomRegion,
type ZoomTransitionEasing,
- DEFAULT_PADDING,
} from "./types";
export const PROJECT_VERSION = 1;
@@ -100,6 +100,8 @@ export interface ProjectEditorState {
zoomRegions: ZoomRegion[];
trimRegions: TrimRegion[];
clipRegions: ClipRegion[];
+ autoFullTrackClipId?: string | null;
+ autoFullTrackClipEndMs?: number | null;
speedRegions: SpeedRegion[];
annotationRegions: AnnotationRegion[];
audioRegions: AudioRegion[];
@@ -413,6 +415,12 @@ export function normalizeProjectEditor(editor: Partial): Pro
})
: [];
+ const normalizedAutoFullTrackClipId =
+ typeof editor.autoFullTrackClipId === "string" ? editor.autoFullTrackClipId : null;
+ const normalizedAutoFullTrackClipEndMs = isFiniteNumber(editor.autoFullTrackClipEndMs)
+ ? Math.round(editor.autoFullTrackClipEndMs)
+ : null;
+
const normalizedSpeedRegions: SpeedRegion[] = Array.isArray(editor.speedRegions)
? editor.speedRegions
.filter((region): region is SpeedRegion =>
@@ -698,6 +706,12 @@ export function normalizeProjectEditor(editor: Partial): Pro
)
? (webcam as Partial<{ zoomScaleEffect: number }>).zoomScaleEffect
: null;
+ const normalizedCursorStyle =
+ typeof editor.cursorStyle === "string" && editor.cursorStyle.trim().length > 0
+ ? editor.cursorStyle === "mono"
+ ? "tahoe-inverted"
+ : editor.cursorStyle
+ : DEFAULT_CURSOR_STYLE;
return {
wallpaper: typeof editor.wallpaper === "string" ? editor.wallpaper : DEFAULT_WALLPAPER_PATH,
@@ -718,10 +732,7 @@ export function normalizeProjectEditor(editor: Partial): Pro
),
showCursor: typeof editor.showCursor === "boolean" ? editor.showCursor : true,
loopCursor: typeof editor.loopCursor === "boolean" ? editor.loopCursor : false,
- cursorStyle:
- typeof editor.cursorStyle === "string" && editor.cursorStyle.trim().length > 0
- ? editor.cursorStyle
- : DEFAULT_CURSOR_STYLE,
+ cursorStyle: normalizedCursorStyle,
cursorSize: isFiniteNumber(editor.cursorSize)
? clamp(editor.cursorSize, 0.5, 10)
: DEFAULT_CURSOR_SIZE,
@@ -786,6 +797,8 @@ export function normalizeProjectEditor(editor: Partial): Pro
zoomRegions: normalizedZoomRegions,
trimRegions: normalizedTrimRegions,
clipRegions: normalizedClipRegions,
+ autoFullTrackClipId: normalizedAutoFullTrackClipId,
+ autoFullTrackClipEndMs: normalizedAutoFullTrackClipEndMs,
speedRegions: normalizedSpeedRegions,
annotationRegions: normalizedAnnotationRegions,
audioRegions: normalizedAudioRegions,
@@ -892,9 +905,7 @@ export function createProjectData(
): EditorProjectData {
return {
version: PROJECT_VERSION,
- ...(typeof projectId === "string" && projectId.trim().length > 0
- ? { projectId }
- : {}),
+ ...(typeof projectId === "string" && projectId.trim().length > 0 ? { projectId } : {}),
videoPath,
editor,
};
diff --git a/src/components/video-editor/types.ts b/src/components/video-editor/types.ts
index 170d48f3..69cde9ad 100644
--- a/src/components/video-editor/types.ts
+++ b/src/components/video-editor/types.ts
@@ -50,7 +50,7 @@ export interface CursorVisualSettings {
style: CursorStyle;
}
-export type CursorStyle = "tahoe" | "dot" | "figma" | "mono" | (string & {}); // extension-contributed cursor styles
+export type CursorStyle = "macos" | "tahoe" | "tahoe-inverted" | "dot" | "figma" | (string & {}); // extension-contributed cursor styles
export const DEFAULT_CURSOR_STYLE: CursorStyle = "tahoe";
export type EditorEffectSection =
diff --git a/src/components/video-editor/videoPlayback/cursorRenderer.ts b/src/components/video-editor/videoPlayback/cursorRenderer.ts
index 5f84799c..13dae641 100644
--- a/src/components/video-editor/videoPlayback/cursorRenderer.ts
+++ b/src/components/video-editor/videoPlayback/cursorRenderer.ts
@@ -17,10 +17,10 @@ import {
resetSpringState,
stepSpringValue,
} from "./motionSmoothing";
-import { UPLOADED_CURSOR_SAMPLE_SIZE, uploadedCursorAssets } from "./uploadedCursorAssets";
+import { cursorSetAssets } from "./uploadedCursorAssets";
type CursorAssetKey = NonNullable;
-type StatefulCursorStyle = Extract;
+type StatefulCursorStyle = Extract;
type SingleCursorStyle = Extract;
type CursorPackStyle = Exclude;
type CursorPackVariant = "default" | "pointer";
@@ -95,12 +95,21 @@ const CURSOR_SHADOW_OFFSET_X = 0;
const CURSOR_SHADOW_OFFSET_Y = 2;
const CURSOR_SHADOW_BLUR = 3;
const CURSOR_SHADOW_PADDING = 12;
+const MACOS_POINTER_RAW_HEIGHT = 746;
+const TAHOE_POINTER_RAW_HEIGHT = 958;
+const CURSOR_STYLE_SIZE_MULTIPLIERS: Record = {
+ macos: TAHOE_POINTER_RAW_HEIGHT / MACOS_POINTER_RAW_HEIGHT,
+ tahoe: 1,
+ "tahoe-inverted": 1,
+};
let cursorAssetsPromise: Promise | null = null;
let cursorPackAssetsPromise: Promise | null = null;
let loadedCursorPackSourcesSignature = "";
let loadedCursorAssets: Partial> = {};
-let loadedInvertedCursorAssets: Partial> = {};
+let loadedCursorSetAssets: Partial<
+ Record>>
+> = {};
let loadedCursorStyleAssets: Partial> = {};
let loadedCursorPackAssets: Partial> = {};
const warnedMissingCursorPackStyles = new Set();
@@ -147,13 +156,17 @@ function buildCursorPackSourcesSignature(sources: Record {
- const img = await loadImage(url);
-
- // Draw at full sample size
- const srcCanvas = document.createElement("canvas");
- srcCanvas.width = sampleSize;
- srcCanvas.height = sampleSize;
- const srcCtx = srcCanvas.getContext("2d")!;
- srcCtx.drawImage(img, 0, 0, sampleSize, sampleSize);
-
- // Crop to trim bounds
- const dstCanvas = document.createElement("canvas");
- dstCanvas.width = trimWidth;
- dstCanvas.height = trimHeight;
- const dstCtx = dstCanvas.getContext("2d")!;
- dstCtx.drawImage(srcCanvas, trimX, trimY, trimWidth, trimHeight, 0, 0, trimWidth, trimHeight);
-
- return {
- dataUrl: dstCanvas.toDataURL("image/png"),
- width: dstCanvas.width,
- height: dstCanvas.height,
- };
-}
-
function getCursorAsset(key: CursorAssetKey): LoadedCursorAsset {
const asset = loadedCursorAssets[key];
if (!asset) {
@@ -438,7 +400,7 @@ function getCursorPackStyleAsset(style: CursorPackStyle, key: CursorAssetKey) {
}
function getStatefulCursorAsset(style: StatefulCursorStyle, key: CursorAssetKey) {
- const assetMap = style === "mono" ? loadedInvertedCursorAssets : loadedCursorAssets;
+ const assetMap = loadedCursorSetAssets[style] ?? loadedCursorAssets;
const asset = assetMap[key] ?? assetMap.arrow;
if (!asset) {
throw new Error(`Missing ${style} cursor asset for ${key}`);
@@ -485,112 +447,69 @@ async function ensureCursorPackAssetsLoaded() {
export async function preloadCursorAssets() {
if (!cursorAssetsPromise) {
cursorAssetsPromise = (async () => {
- const isLinux = typeof navigator !== "undefined" && /linux/i.test(navigator.platform);
- let systemCursors: Record = {};
-
- try {
- const result = await window.electronAPI.getSystemCursorAssets();
- if (result.success && result.cursors) {
- systemCursors = result.cursors;
- }
- } catch (error) {
- console.warn("[CursorRenderer] Failed to fetch system cursor assets:", error);
- }
-
- const entries = await Promise.all(
- SUPPORTED_CURSOR_KEYS.map(async (key) => {
- const systemAsset = systemCursors[key];
- const uploadedAsset = uploadedCursorAssets[key];
- const assetUrl = isLinux
- ? uploadedAsset?.url
- : (uploadedAsset?.url ?? systemAsset?.dataUrl);
-
- if (!assetUrl) {
- console.warn(`[CursorRenderer] No cursor image for: ${key}`);
- return null;
- }
-
- try {
- let finalUrl: string;
- let width: number;
- let height: number;
- let normalizedAnchor: { x: number; y: number };
-
- if (uploadedAsset) {
- const { trim } = uploadedAsset;
- const rasterized = await rasterizeAndCropSvg(
- assetUrl,
- UPLOADED_CURSOR_SAMPLE_SIZE,
- trim.x,
- trim.y,
- trim.width,
- trim.height,
- );
- finalUrl = rasterized.dataUrl;
- width = rasterized.width;
- height = rasterized.height;
- normalizedAnchor = {
- x: clamp(
- (uploadedAsset.fallbackAnchor.x * trim.width) / width,
- 0,
- 1,
- ),
- y: clamp(
- (uploadedAsset.fallbackAnchor.y * trim.height) / height,
- 0,
- 1,
- ),
- };
- } else {
- finalUrl = assetUrl;
- const img = await loadImage(finalUrl);
- width = img.naturalWidth;
- height = img.naturalHeight;
- normalizedAnchor = getNormalizedAnchor(systemAsset, {
- x: 0,
- y: 0,
- });
+ async function loadCursorSet(
+ style: keyof typeof cursorSetAssets,
+ ): Promise>> {
+ const entries = await Promise.all(
+ SUPPORTED_CURSOR_KEYS.map(async (key) => {
+ const sourceAsset = cursorSetAssets[style][key];
+ if (!sourceAsset?.url) {
+ console.warn(`[CursorRenderer] No cursor image for: ${style}/${key}`);
+ return null;
}
- await Assets.load(finalUrl);
- const image = await loadImage(finalUrl);
- const texture = Texture.from(finalUrl);
+ try {
+ await Assets.load(sourceAsset.url);
+ const image = await loadImage(sourceAsset.url);
+ const texture = Texture.from(sourceAsset.url);
- return [
- key,
- {
- texture,
- image,
- aspectRatio: height > 0 ? width / height : 1,
- anchorX: normalizedAnchor.x,
- anchorY: normalizedAnchor.y,
- } satisfies LoadedCursorAsset,
- ] as const;
- } catch (error) {
- console.warn(
- `[CursorRenderer] Failed to load cursor image for: ${key}`,
- error,
- );
- return null;
- }
- }),
- );
+ return [
+ key,
+ {
+ texture,
+ image,
+ aspectRatio:
+ image.naturalHeight > 0
+ ? image.naturalWidth / image.naturalHeight
+ : 1,
+ anchorX: clamp(sourceAsset.fallbackAnchor.x, 0, 1),
+ anchorY: clamp(sourceAsset.fallbackAnchor.y, 0, 1),
+ } satisfies LoadedCursorAsset,
+ ] as const;
+ } catch (error) {
+ console.warn(
+ `[CursorRenderer] Failed to load cursor image for: ${style}/${key}`,
+ error,
+ );
+ return null;
+ }
+ }),
+ );
- loadedCursorAssets = Object.fromEntries(
- entries.filter(Boolean).map((entry) => entry!),
- ) as Partial>;
+ return Object.fromEntries(
+ entries.filter(Boolean).map((entry) => entry!),
+ ) as Partial>;
+ }
+
+ const [macosAssets, tahoeAssets] = await Promise.all([
+ loadCursorSet("macos"),
+ loadCursorSet("tahoe"),
+ ]);
const invertedEntries = await Promise.all(
- (
- Object.entries(loadedCursorAssets) as Array<[CursorAssetKey, LoadedCursorAsset]>
- ).map(
+ (Object.entries(tahoeAssets) as Array<[CursorAssetKey, LoadedCursorAsset]>).map(
async ([key, asset]) => [key, await createInvertedCursorAsset(asset)] as const,
),
);
- loadedInvertedCursorAssets = Object.fromEntries(invertedEntries) as Partial<
- Record
- >;
+ loadedCursorSetAssets = {
+ macos: macosAssets,
+ tahoe: tahoeAssets,
+ "tahoe-inverted": Object.fromEntries(invertedEntries) as Partial<
+ Record
+ >,
+ };
+ loadedCursorAssets = tahoeAssets;
const customStyleEntries = await Promise.all(
(["dot", "figma"] as const).map(
@@ -1084,7 +1003,7 @@ export class PixiCursorOverlay {
0.72,
1 - Math.sin(clickBounceProgress * Math.PI) * (0.08 * this.config.clickBounce),
);
- const scaledH = h;
+ const scaledH = h * getCursorStyleSizeMultiplier(this.config.style);
const swayRotation = this.updateCursorSway(px, py, timeMs, shouldFreezeCursorMotion);
this.clickRingGraphics.clear();
@@ -1307,7 +1226,7 @@ export function drawCursorOnCanvas(
ctx.filter = CURSOR_SVG_DROP_SHADOW_FILTER;
}
- const drawHeight = h * bounceScale;
+ const drawHeight = h * bounceScale * getCursorStyleSizeMultiplier(config.style);
const drawWidth = drawHeight * asset.aspectRatio;
const hotspotX = asset.anchorX * drawWidth;
const hotspotY = asset.anchorY * drawHeight;
diff --git a/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts b/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts
index 4a0cd29b..53256e5a 100644
--- a/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts
+++ b/src/components/video-editor/videoPlayback/uploadedCursorAssets.ts
@@ -1,70 +1,70 @@
-import crosshairUrl from "../../../assets/cursors/Cursor=Cross.svg";
-import arrowUrl from "../../../assets/cursors/Cursor=Default.svg";
-import closedHandUrl from "../../../assets/cursors/Cursor=Hand-(Grabbing).svg";
-import openHandUrl from "../../../assets/cursors/Cursor=Hand-(Open).svg";
-import pointerUrl from "../../../assets/cursors/Cursor=Hand-(Pointing).svg";
-import resizeNsUrl from "../../../assets/cursors/Cursor=Resize-North-South.svg";
-import resizeEwUrl from "../../../assets/cursors/Cursor=Resize-West-East.svg";
-import textUrl from "../../../assets/cursors/Cursor=Text-Cursor.svg";
-import type { CursorTelemetryPoint } from "../types";
+import macosClosedHandUrl from "../../../assets/cursors/macos/closedhand-1__50-50.svg";
+import macosCrosshairUrl from "../../../assets/cursors/macos/crosshair-1__50-50.svg";
+import macosTextUrl from "../../../assets/cursors/macos/ibeam-1__50-50.svg";
+import macosNotAllowedUrl from "../../../assets/cursors/macos/notallowed-1__23-0.svg";
+import macosOpenHandUrl from "../../../assets/cursors/macos/openhand-1__50-50.svg";
+import macosArrowUrl from "../../../assets/cursors/macos/pointer-1__34-24.svg";
+import macosPointerUrl from "../../../assets/cursors/macos/pointinghand-1__39-26.svg";
+import macosResizeEwUrl from "../../../assets/cursors/macos/resizeeastwest-1__50-50.svg";
+import macosResizeNsUrl from "../../../assets/cursors/macos/resizenorthsouth-1__50-50.svg";
+import tahoeClosedHandUrl from "../../../assets/cursors/tahoe/closedhand-1__50-46.svg";
+import tahoeCrosshairUrl from "../../../assets/cursors/tahoe/crosshair-1__50-50.svg";
+import tahoeTextUrl from "../../../assets/cursors/tahoe/ibeam-1__50-44.svg";
+import tahoeNotAllowedUrl from "../../../assets/cursors/tahoe/notallowed-1__23-0.svg";
+import tahoeOpenHandUrl from "../../../assets/cursors/tahoe/openhand-1__55-57.svg";
+import tahoeArrowUrl from "../../../assets/cursors/tahoe/pointer-1__14-6.svg";
+import tahoePointerUrl from "../../../assets/cursors/tahoe/pointinghand-1__40-10.svg";
+import tahoeResizeEwUrl from "../../../assets/cursors/tahoe/resizeeastwest-1__50-50.svg";
+import tahoeResizeNsUrl from "../../../assets/cursors/tahoe/resizenorthsouth-1__50-49.svg";
+import type { CursorStyle, CursorTelemetryPoint } from "../types";
type CursorAssetKey = NonNullable;
+type CursorSetStyle = Extract;
export type UploadedCursorAsset = {
url: string;
- trim: {
- x: number;
- y: number;
- width: number;
- height: number;
- };
fallbackAnchor: {
x: number;
y: number;
};
};
-export const UPLOADED_CURSOR_SAMPLE_SIZE = 1024;
+function asset(url: string, hotspotX: number, hotspotY: number): UploadedCursorAsset {
+ return {
+ url,
+ fallbackAnchor: {
+ x: hotspotX / 100,
+ y: hotspotY / 100,
+ },
+ };
+}
-export const uploadedCursorAssets: Partial> = {
- arrow: {
- url: arrowUrl,
- trim: { x: 480, y: 435, width: 333, height: 553 },
- fallbackAnchor: { x: 0.18, y: 0.1 },
+export const cursorSetAssets: Record<
+ Exclude,
+ Record
+> = {
+ macos: {
+ arrow: asset(macosArrowUrl, 34, 24),
+ text: asset(macosTextUrl, 50, 50),
+ pointer: asset(macosPointerUrl, 39, 26),
+ crosshair: asset(macosCrosshairUrl, 50, 50),
+ "open-hand": asset(macosOpenHandUrl, 50, 50),
+ "closed-hand": asset(macosClosedHandUrl, 50, 50),
+ "resize-ew": asset(macosResizeEwUrl, 50, 50),
+ "resize-ns": asset(macosResizeNsUrl, 50, 50),
+ "not-allowed": asset(macosNotAllowedUrl, 23, 0),
},
- text: {
- url: textUrl,
- trim: { x: 404, y: 192, width: 247, height: 596 },
- fallbackAnchor: { x: 0.5, y: 0.5 },
- },
- pointer: {
- url: pointerUrl,
- trim: { x: 352, y: 441, width: 466, height: 583 },
- fallbackAnchor: { x: 0.37, y: 0.08 },
- },
- crosshair: {
- url: crosshairUrl,
- trim: { x: 288, y: 288, width: 480, height: 480 },
- fallbackAnchor: { x: 0.5, y: 0.5 },
- },
- "open-hand": {
- url: openHandUrl,
- trim: { x: 288, y: 188, width: 512, height: 580 },
- fallbackAnchor: { x: 0.5, y: 0.28 },
- },
- "closed-hand": {
- url: closedHandUrl,
- trim: { x: 344, y: 365, width: 432, height: 403 },
- fallbackAnchor: { x: 0.5, y: 0.28 },
- },
- "resize-ew": {
- url: resizeEwUrl,
- trim: { x: 187, y: 384, width: 669, height: 270 },
- fallbackAnchor: { x: 0.5, y: 0.5 },
- },
- "resize-ns": {
- url: resizeNsUrl,
- trim: { x: 376, y: 178, width: 271, height: 669 },
- fallbackAnchor: { x: 0.5, y: 0.5 },
+ tahoe: {
+ arrow: asset(tahoeArrowUrl, 14, 6),
+ text: asset(tahoeTextUrl, 50, 44),
+ pointer: asset(tahoePointerUrl, 40, 10),
+ crosshair: asset(tahoeCrosshairUrl, 50, 50),
+ "open-hand": asset(tahoeOpenHandUrl, 55, 57),
+ "closed-hand": asset(tahoeClosedHandUrl, 50, 46),
+ "resize-ew": asset(tahoeResizeEwUrl, 50, 50),
+ "resize-ns": asset(tahoeResizeNsUrl, 50, 49),
+ "not-allowed": asset(tahoeNotAllowedUrl, 23, 0),
},
};
+
+export const uploadedCursorAssets = cursorSetAssets.tahoe;
diff --git a/src/i18n/locales/en/settings.json b/src/i18n/locales/en/settings.json
index c3915077..c788b132 100644
--- a/src/i18n/locales/en/settings.json
+++ b/src/i18n/locales/en/settings.json
@@ -29,10 +29,11 @@
"loopCursor": "Loop cursor",
"cursorStyle": "Cursor Style",
"cursorStyleOptions": {
+ "macos": "macOS",
"tahoe": "Tahoe",
+ "tahoe-inverted": "Tahoe Inverted",
"dot": "Dot",
"figma": "Minimal",
- "mono": "Inverted",
"lavender": "Lavender",
"parched": "Parched",
"chooper": "Chooper",
@@ -91,9 +92,6 @@
"radius": "Radius",
"roundness": "Roundness",
"padding": "Padding",
- "paddingAdvanced": "Advanced",
- "paddingAdvancedShow": "Show advanced padding controls",
- "paddingAdvancedHide": "Hide advanced padding controls",
"paddingLinked": "Linked (Uniform)",
"paddingUnlinked": "Unlinked (Asymmetrical)",
"paddingTop": "Top",
diff --git a/src/i18n/locales/es/settings.json b/src/i18n/locales/es/settings.json
index 43c24897..1393bf05 100644
--- a/src/i18n/locales/es/settings.json
+++ b/src/i18n/locales/es/settings.json
@@ -29,10 +29,11 @@
"loopCursor": "Cursor en bucle",
"cursorStyle": "Estilo del cursor",
"cursorStyleOptions": {
+ "macos": "macOS",
"tahoe": "Tahoe",
+ "tahoe-inverted": "Tahoe invertido",
"dot": "Punto",
"figma": "Minimal",
- "mono": "Invertido",
"lavender": "Lavender",
"parched": "Parched",
"chooper": "Chooper",
@@ -91,15 +92,6 @@
"radius": "Radio",
"roundness": "Redondez",
"padding": "Relleno",
- "paddingAdvanced": "Avanzado",
- "paddingAdvancedShow": "Mostrar controles avanzados de relleno",
- "paddingAdvancedHide": "Ocultar controles avanzados de relleno",
- "paddingLinked": "Vinculado (uniforme)",
- "paddingUnlinked": "No vinculado (asimétrico)",
- "paddingTop": "Superior",
- "paddingBottom": "Inferior",
- "paddingLeft": "Izquierda",
- "paddingRight": "Derecha",
"removeBackground": "Quitar fondo"
},
"sections": {
diff --git a/src/i18n/locales/fr/settings.json b/src/i18n/locales/fr/settings.json
index e8d24845..a1a12134 100644
--- a/src/i18n/locales/fr/settings.json
+++ b/src/i18n/locales/fr/settings.json
@@ -29,10 +29,11 @@
"loopCursor": "Boucler le curseur",
"cursorStyle": "Style du curseur",
"cursorStyleOptions": {
+ "macos": "macOS",
"tahoe": "Tahoe",
+ "tahoe-inverted": "Tahoe inversé",
"dot": "Point",
"figma": "Minimal",
- "mono": "Inversé",
"lavender": "Lavande",
"parched": "Parched",
"chooper": "Chooper",
@@ -91,15 +92,6 @@
"radius": "Rayon",
"roundness": "Arrondi",
"padding": "Marge intérieure",
- "paddingAdvanced": "Avancé",
- "paddingAdvancedShow": "Afficher les contrôles avancés de marge intérieure",
- "paddingAdvancedHide": "Masquer les contrôles avancés de marge intérieure",
- "paddingLinked": "Lié (uniforme)",
- "paddingUnlinked": "Non lié (asymétrique)",
- "paddingTop": "Haut",
- "paddingBottom": "Bas",
- "paddingLeft": "Gauche",
- "paddingRight": "Droite",
"removeBackground": "Supprimer l’arrière-plan"
},
"sections": {
diff --git a/src/i18n/locales/ko/settings.json b/src/i18n/locales/ko/settings.json
index 1bb5841e..b0657d96 100644
--- a/src/i18n/locales/ko/settings.json
+++ b/src/i18n/locales/ko/settings.json
@@ -29,10 +29,11 @@
"loopCursor": "커서 반복",
"cursorStyle": "커서 스타일",
"cursorStyleOptions": {
+ "macos": "macOS",
"tahoe": "Tahoe",
+ "tahoe-inverted": "Tahoe Inverted",
"dot": "Dot",
"figma": "Minimal",
- "mono": "Inverted",
"lavender": "Lavender",
"parched": "Parched",
"chooper": "Chooper",
@@ -91,15 +92,6 @@
"radius": "반경",
"roundness": "둥글기",
"padding": "여백",
- "paddingAdvanced": "고급",
- "paddingAdvancedShow": "고급 여백 컨트롤 표시",
- "paddingAdvancedHide": "고급 여백 컨트롤 숨기기",
- "paddingLinked": "연결됨 (균일)",
- "paddingUnlinked": "연결 해제됨 (비대칭)",
- "paddingTop": "위",
- "paddingBottom": "아래",
- "paddingLeft": "왼쪽",
- "paddingRight": "오른쪽",
"removeBackground": "배경 제거"
},
"sections": {
diff --git a/src/i18n/locales/nl/settings.json b/src/i18n/locales/nl/settings.json
index dfd3c615..9ce12a97 100644
--- a/src/i18n/locales/nl/settings.json
+++ b/src/i18n/locales/nl/settings.json
@@ -29,10 +29,11 @@
"loopCursor": "Cursor herhalen",
"cursorStyle": "Cursorstijl",
"cursorStyleOptions": {
+ "macos": "macOS",
"tahoe": "Tahoe",
+ "tahoe-inverted": "Tahoe omgekeerd",
"dot": "Punt",
"figma": "Minimaal",
- "mono": "Omgekeerd",
"lavender": "Lavendel",
"parched": "Parched",
"chooper": "Chooper",
@@ -91,15 +92,6 @@
"radius": "Straal",
"roundness": "Afronding",
"padding": "Opvulling",
- "paddingAdvanced": "Geavanceerd",
- "paddingAdvancedShow": "Geavanceerde opvulcontroles tonen",
- "paddingAdvancedHide": "Geavanceerde opvulcontroles verbergen",
- "paddingLinked": "Gekoppeld (uniform)",
- "paddingUnlinked": "Ontkoppeld (asymmetrisch)",
- "paddingTop": "Boven",
- "paddingBottom": "Onder",
- "paddingLeft": "Links",
- "paddingRight": "Rechts",
"removeBackground": "Achtergrond verwijderen"
},
"sections": {
diff --git a/src/i18n/locales/zh-CN/settings.json b/src/i18n/locales/zh-CN/settings.json
index b7ad52e3..f52d86f5 100644
--- a/src/i18n/locales/zh-CN/settings.json
+++ b/src/i18n/locales/zh-CN/settings.json
@@ -29,10 +29,11 @@
"loopCursor": "循环光标",
"cursorStyle": "光标样式",
"cursorStyleOptions": {
+ "macos": "macOS",
"tahoe": "Tahoe",
+ "tahoe-inverted": "Tahoe 反相",
"dot": "圆点",
"figma": "Minimal",
- "mono": "反相",
"lavender": "Lavender",
"parched": "Parched",
"chooper": "Chooper",
@@ -91,15 +92,6 @@
"radius": "圆角半径",
"roundness": "圆角",
"padding": "内边距",
- "paddingAdvanced": "高级",
- "paddingAdvancedShow": "显示高级内边距控件",
- "paddingAdvancedHide": "隐藏高级内边距控件",
- "paddingLinked": "联动(统一)",
- "paddingUnlinked": "取消联动(非对称)",
- "paddingTop": "上",
- "paddingBottom": "下",
- "paddingLeft": "左",
- "paddingRight": "右",
"removeBackground": "移除背景"
},
"sections": {
diff --git a/vite.config.ts b/vite.config.ts
index 4e584028..0c81fbda 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -13,8 +13,16 @@ export default defineConfig({
entry: "electron/main.ts",
vite: {
build: {
+ lib: {
+ entry: "electron/main.ts",
+ formats: ["cjs"],
+ },
rollupOptions: {
external: ["ffmpeg-static", "uiohook-napi"],
+ output: {
+ entryFileNames: "[name].cjs",
+ chunkFileNames: "[name].cjs",
+ },
},
},
},