diff --git a/website/package-lock.json b/website/package-lock.json
index 608424e4..d3c5b8d2 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -9,7 +9,7 @@
"version": "0.0.1",
"dependencies": {
"@mapbox/mapbox-gl-geocoder": "^5.0.2",
- "bits-ui": "^0.21.4",
+ "bits-ui": "^0.21.5",
"chart.js": "^4.4.2",
"clsx": "^2.1.0",
"gpx": "file:../gpx",
@@ -1891,9 +1891,9 @@
}
},
"node_modules/bits-ui": {
- "version": "0.21.4",
- "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-0.21.4.tgz",
- "integrity": "sha512-IL+7s19GW561jwkeYk23dwkTfQ9606I062qqv2AtjCdhhIdoOEJNVBX0kjP5xefSaS6ojL0HGG54att0aRTcAQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-0.21.5.tgz",
+ "integrity": "sha512-EDGHWkxnlcV2fbXn2tMps3SfpS7k6bfX3BrQ4s/h79jT6yprBS8DdDficlDK0SDHmPYHBZ0hSy4OgQUDodS/6w==",
"dependencies": {
"@internationalized/date": "^3.5.1",
"@melt-ui/svelte": "0.76.2",
diff --git a/website/package.json b/website/package.json
index 875e210e..66b9836a 100644
--- a/website/package.json
+++ b/website/package.json
@@ -42,7 +42,7 @@
"type": "module",
"dependencies": {
"@mapbox/mapbox-gl-geocoder": "^5.0.2",
- "bits-ui": "^0.21.4",
+ "bits-ui": "^0.21.5",
"chart.js": "^4.4.2",
"clsx": "^2.1.0",
"gpx": "file:../gpx",
diff --git a/website/src/lib/components/FileList.svelte b/website/src/lib/components/FileList.svelte
index 5ad3d855..fee279a7 100644
--- a/website/src/lib/components/FileList.svelte
+++ b/website/src/lib/components/FileList.svelte
@@ -1,7 +1,6 @@
+
+
+
{
+ if (!get(selectedFiles).has(get(file))) {
+ get(selectFiles).select(get(file));
+ }
+ }}
+>
+
+
+
+
+
+
+
+ {$_('menu.duplicate')}
+
+
+
+ {$_('menu.delete')}
+
+
+
+
diff --git a/website/src/lib/components/Menu.svelte b/website/src/lib/components/Menu.svelte
index e48c2bd5..40d53589 100644
--- a/website/src/lib/components/Menu.svelte
+++ b/website/src/lib/components/Menu.svelte
@@ -2,6 +2,7 @@
import * as Menubar from '$lib/components/ui/menubar/index.js';
import { Button } from '$lib/components/ui/button';
import Logo from './Logo.svelte';
+ import Shortcut from './Shortcut.svelte';
import { Plus, Copy, Download, Undo2, Redo2, Trash2, Upload, Cloud, Heart } from 'lucide-svelte';
import {
@@ -55,13 +56,13 @@
{$_('menu.new')}
- ⌘N
+
{$_('menu.load_desktop')}
- ⌘O
+
@@ -71,18 +72,18 @@
{$_('menu.duplicate')}
- ⌘D
+
{$_('menu.export')}
- ⌘S
+
{$_('menu.export_all')}
- ⇧⌘S
+
@@ -92,27 +93,34 @@
{$_('menu.undo')}
- ⌘Z
+
{$_('menu.redo')}
- ⇧⌘Z
+
+
+
+ $selectFiles.selectAllFiles()}>
+
+ {$_('menu.select_all')}
+
{$_('menu.delete')}
- ⌘⌫
+
+
- {$_('menu.delete_all')}⇧⌘⌫
+ {$_('menu.delete_all')}
+
+
diff --git a/website/src/lib/components/Shortcut.svelte b/website/src/lib/components/Shortcut.svelte
new file mode 100644
index 00000000..66812ff6
--- /dev/null
+++ b/website/src/lib/components/Shortcut.svelte
@@ -0,0 +1,21 @@
+
+
+{shift ? '⇧' : ''}{ctrl ? (isMac ? '⌘' : $_('menu.ctrl') + '+') : ''}{key}{click
+ ? $_('menu.click')
+ : ''}
diff --git a/website/src/lib/components/toolbar/tools/routing/RoutingControlPopup.svelte b/website/src/lib/components/toolbar/tools/routing/RoutingControlPopup.svelte
index 34c4a4a5..fd3bfac1 100644
--- a/website/src/lib/components/toolbar/tools/routing/RoutingControlPopup.svelte
+++ b/website/src/lib/components/toolbar/tools/routing/RoutingControlPopup.svelte
@@ -1,6 +1,7 @@
+
+
+
+
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-content.svelte b/website/src/lib/components/ui/context-menu/context-menu-content.svelte
new file mode 100644
index 00000000..952ca50e
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-content.svelte
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-item.svelte b/website/src/lib/components/ui/context-menu/context-menu-item.svelte
new file mode 100644
index 00000000..cd91b8b1
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-item.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-label.svelte b/website/src/lib/components/ui/context-menu/context-menu-label.svelte
new file mode 100644
index 00000000..5d52f795
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-label.svelte
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-radio-group.svelte b/website/src/lib/components/ui/context-menu/context-menu-radio-group.svelte
new file mode 100644
index 00000000..53fa692c
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-radio-group.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-radio-item.svelte b/website/src/lib/components/ui/context-menu/context-menu-radio-item.svelte
new file mode 100644
index 00000000..a0ef943a
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-radio-item.svelte
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-separator.svelte b/website/src/lib/components/ui/context-menu/context-menu-separator.svelte
new file mode 100644
index 00000000..8dc3a61a
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-separator.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-shortcut.svelte b/website/src/lib/components/ui/context-menu/context-menu-shortcut.svelte
new file mode 100644
index 00000000..09ab9f8e
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-shortcut.svelte
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-sub-content.svelte b/website/src/lib/components/ui/context-menu/context-menu-sub-content.svelte
new file mode 100644
index 00000000..20f7e751
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-sub-content.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte b/website/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte
new file mode 100644
index 00000000..2a5f7f5f
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+
diff --git a/website/src/lib/components/ui/context-menu/index.ts b/website/src/lib/components/ui/context-menu/index.ts
new file mode 100644
index 00000000..7d4af845
--- /dev/null
+++ b/website/src/lib/components/ui/context-menu/index.ts
@@ -0,0 +1,49 @@
+import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
+
+import Item from "./context-menu-item.svelte";
+import Label from "./context-menu-label.svelte";
+import Content from "./context-menu-content.svelte";
+import Shortcut from "./context-menu-shortcut.svelte";
+import RadioItem from "./context-menu-radio-item.svelte";
+import Separator from "./context-menu-separator.svelte";
+import RadioGroup from "./context-menu-radio-group.svelte";
+import SubContent from "./context-menu-sub-content.svelte";
+import SubTrigger from "./context-menu-sub-trigger.svelte";
+import CheckboxItem from "./context-menu-checkbox-item.svelte";
+
+const Sub = ContextMenuPrimitive.Sub;
+const Root = ContextMenuPrimitive.Root;
+const Trigger = ContextMenuPrimitive.Trigger;
+const Group = ContextMenuPrimitive.Group;
+
+export {
+ Sub,
+ Root,
+ Item,
+ Label,
+ Group,
+ Trigger,
+ Content,
+ Shortcut,
+ Separator,
+ RadioItem,
+ SubContent,
+ SubTrigger,
+ RadioGroup,
+ CheckboxItem,
+ //
+ Root as ContextMenu,
+ Sub as ContextMenuSub,
+ Item as ContextMenuItem,
+ Label as ContextMenuLabel,
+ Group as ContextMenuGroup,
+ Content as ContextMenuContent,
+ Trigger as ContextMenuTrigger,
+ Shortcut as ContextMenuShortcut,
+ RadioItem as ContextMenuRadioItem,
+ Separator as ContextMenuSeparator,
+ RadioGroup as ContextMenuRadioGroup,
+ SubContent as ContextMenuSubContent,
+ SubTrigger as ContextMenuSubTrigger,
+ CheckboxItem as ContextMenuCheckboxItem,
+};
diff --git a/website/src/locales/en.json b/website/src/locales/en.json
index 83dfba77..e0214be7 100644
--- a/website/src/locales/en.json
+++ b/website/src/locales/en.json
@@ -13,6 +13,7 @@
"redo": "Redo",
"delete": "Delete",
"delete_all": "Delete all",
+ "select_all": "Select all",
"settings": "Settings",
"distance_units": "Distance units",
"metric": "Metric",
@@ -28,7 +29,9 @@
"distance_markers": "Show distance markers",
"direction_markers": "Show direction markers",
"about": "About",
- "donate": "Donate"
+ "donate": "Donate",
+ "ctrl": "Ctrl",
+ "click": "Click"
},
"toolbar": {
"routing": {