diff --git a/bun.lock b/bun.lock index 99089d5..6b26294 100644 --- a/bun.lock +++ b/bun.lock @@ -38,7 +38,7 @@ "@types/libsodium-wrappers": "^0.7.14", "@types/node": "^22.15.24", "@types/pako": "^2.0.3", - "bits-ui": "^2.8.6", + "bits-ui": "^2.11.0", "clsx": "^2.1.1", "eslint-config-prettier": "^10.1.5", "git-format-staged": "^3.1.1", @@ -441,7 +441,7 @@ "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - "bits-ui": ["bits-ui@2.9.2", "", { "dependencies": { "@floating-ui/core": "^1.7.1", "@floating-ui/dom": "^1.7.1", "esm-env": "^1.1.2", "runed": "^0.29.1", "svelte-toolbelt": "^0.9.3", "tabbable": "^6.2.0" }, "peerDependencies": { "@internationalized/date": "^3.8.1", "svelte": "^5.33.0" } }, "sha512-GGbyr4oVKtHin//Q0AhlygkasmfWt328VjsnmB3sP+h8Sh+Eyghm+1AQ8o+xQMDCYbdL35JZ9UZGTZYTMar4Uw=="], + "bits-ui": ["bits-ui@2.11.5", "", { "dependencies": { "@floating-ui/core": "^1.7.1", "@floating-ui/dom": "^1.7.1", "esm-env": "^1.1.2", "runed": "^0.31.1", "svelte-toolbelt": "^0.10.4", "tabbable": "^6.2.0" }, "peerDependencies": { "@internationalized/date": "^3.8.1", "svelte": "^5.33.0" } }, "sha512-d7b6HrrCUeK261c777agFz0G5lx13RMA0DT022e4SRuIjI3bZ8ci53YxIZ2/jpXTmeAeqeShyC+Mgibh9OeW9A=="], "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], @@ -801,7 +801,7 @@ "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - "runed": ["runed@0.29.2", "", { "dependencies": { "esm-env": "^1.0.0" }, "peerDependencies": { "svelte": "^5.7.0" } }, "sha512-0cq6cA6sYGZwl/FvVqjx9YN+1xEBu9sDDyuWdDW1yWX7JF2wmvmVKfH+hVCZs+csW+P3ARH92MjI3H9QTagOQA=="], + "runed": ["runed@0.31.1", "", { "dependencies": { "esm-env": "^1.0.0" }, "peerDependencies": { "svelte": "^5.7.0" } }, "sha512-v3czcTnO+EJjiPvD4dwIqfTdHLZ8oH0zJheKqAHh9QMViY7Qb29UlAMRpX7ZtHh7AFqV60KmfxaJ9QMy+L1igQ=="], "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], @@ -839,7 +839,7 @@ "svelte-maplibre-gl": ["svelte-maplibre-gl@0.1.8", "", { "peerDependencies": { "@deck.gl/core": "^9.1.0", "@deck.gl/layers": "^9.1.0", "@deck.gl/mapbox": "^9.1.0", "maplibre-contour": ">=0.1.0", "maplibre-gl": "^5.0.0 || ^4.0.0", "pmtiles": "^4.0.0", "svelte": ">=5.0.0", "terra-draw": "^1.0.0", "terra-draw-maplibre-gl-adapter": "^1.0.3" } }, "sha512-YvMo25q/rpNDNE4iBvOuYYt+E+6jT+PBLxX7vR20LE5ZD2K3cLV9cR34S4SX7w81E00lP7InD2+CvFr7T0vBxg=="], - "svelte-toolbelt": ["svelte-toolbelt@0.9.3", "", { "dependencies": { "clsx": "^2.1.1", "runed": "^0.29.0", "style-to-object": "^1.0.8" }, "peerDependencies": { "svelte": "^5.30.2" } }, "sha512-HCSWxCtVmv+c6g1ACb8LTwHVbDqLKJvHpo6J8TaqwUme2hj9ATJCpjCPNISR1OCq2Q4U1KT41if9ON0isINQZw=="], + "svelte-toolbelt": ["svelte-toolbelt@0.10.5", "", { "dependencies": { "clsx": "^2.1.1", "runed": "^0.29.0", "style-to-object": "^1.0.8" }, "peerDependencies": { "svelte": "^5.30.2" } }, "sha512-8e+eWTgxw1aiLxhDE8Rb1X6AoLitqpJz+WhAul2W7W58C8KoLoJQf1TgQdFPBiCPJ0Jg5y0Zi1uyua9em4VS0w=="], "tabbable": ["tabbable@6.2.0", "", {}, "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew=="], @@ -949,6 +949,8 @@ "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "svelte-toolbelt/runed": ["runed@0.29.2", "", { "dependencies": { "esm-env": "^1.0.0" }, "peerDependencies": { "svelte": "^5.7.0" } }, "sha512-0cq6cA6sYGZwl/FvVqjx9YN+1xEBu9sDDyuWdDW1yWX7JF2wmvmVKfH+hVCZs+csW+P3ARH92MjI3H9QTagOQA=="], + "tailwind-variants/tailwind-merge": ["tailwind-merge@3.0.2", "", {}, "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw=="], "vaul-svelte/runed": ["runed@0.23.4", "", { "dependencies": { "esm-env": "^1.0.0" }, "peerDependencies": { "svelte": "^5.7.0" } }, "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA=="], diff --git a/messages/en.json b/messages/en.json index dcb8249..b785842 100644 --- a/messages/en.json +++ b/messages/en.json @@ -157,6 +157,10 @@ "probing-server": "Probing server...", "discovering-calendars": "Discovering calendars...", "choose": "Choose calendars to add:" + }, + "appearance": { + "header": "Appearance", + "bigger-buttons-in-drive": "Bigger Buttons while Driving" } }, "unsave": "Unsave", diff --git a/package.json b/package.json index 91abfe9..6ccf12b 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "@types/libsodium-wrappers": "^0.7.14", "@types/node": "^22.15.24", "@types/pako": "^2.0.3", - "bits-ui": "^2.8.6", + "bits-ui": "^2.11.0", "clsx": "^2.1.1", "eslint-config-prettier": "^10.1.5", "git-format-staged": "^3.1.1", diff --git a/src/lib/components/lnv/AddVehicleDrawer.svelte b/src/lib/components/lnv/AddVehicleDrawer.svelte index fb48e52..412889b 100644 --- a/src/lib/components/lnv/AddVehicleDrawer.svelte +++ b/src/lib/components/lnv/AddVehicleDrawer.svelte @@ -21,6 +21,8 @@ import Input from "../ui/input/input.svelte"; import EvConnectorSelect from "./EVConnectorSelect.svelte"; import { m } from "$lang/messages"; + import { localStore } from "$lib/services/localStore.svelte"; + import { isDriving } from "./location.svelte"; let open = $state(false); @@ -52,11 +54,14 @@ fuelType: "diesel", preferredFuel: "Diesel", }); + + const biggerButtonsInDrive = localStore("bigger-buttons-in-drive", false); + const shouldUseLargeSize = $derived(biggerButtonsInDrive.current ? isDriving() : false); {@render children()} diff --git a/src/lib/components/lnv/Sidebar.svelte b/src/lib/components/lnv/Sidebar.svelte index c5e5d86..6dbc934 100644 --- a/src/lib/components/lnv/Sidebar.svelte +++ b/src/lib/components/lnv/Sidebar.svelte @@ -45,6 +45,7 @@ "nearby-poi": "NearbyPOISidebar", licenses: "settings/LicensesSidebar", calendar: "settings/CalendarSidebar", + appearance: "settings/AppearanceSidebar", }; const fullscreen: Record = { @@ -64,6 +65,7 @@ "nearby-poi": false, licenses: true, calendar: true, + appearance: true, }; let isDragging = false; diff --git a/src/lib/components/lnv/VehicleSelector.svelte b/src/lib/components/lnv/VehicleSelector.svelte index e89c96e..6203db3 100644 --- a/src/lib/components/lnv/VehicleSelector.svelte +++ b/src/lib/components/lnv/VehicleSelector.svelte @@ -19,6 +19,8 @@ import AddVehicleDrawer from "./AddVehicleDrawer.svelte"; import { m } from "$lang/messages"; import { updateStore } from "$lib/services/stores.svelte"; + import { localStore } from "$lib/services/localStore.svelte"; + import { isDriving } from "./location.svelte"; let open = $state(false); @@ -38,11 +40,14 @@ return TractorIcon; // Default icon if no match } } + + const biggerButtonsInDrive = localStore("bigger-buttons-in-drive", false); + const shouldUseLargeSize = $derived(biggerButtonsInDrive.current ? isDriving() : false); {@const vehicle = selectedVehicle()?.data ?? DefaultVehicle} {@const Icon = getVehicleIcon(vehicle.type)} @@ -63,7 +68,7 @@ variant={selectedVehicle()?.data === vehicle.data ? "default" : "secondary"} - class="w-[calc(100%-48px-8px)] p-5" + class="w-[calc(100%-48px-8px)]" onclick={() => { selectVehicle(vehicle.data); open = false; @@ -92,10 +97,8 @@ {/each} - + + {m["vehicles.selector.add"]()} diff --git a/src/lib/components/lnv/location.svelte.ts b/src/lib/components/lnv/location.svelte.ts index dcc6d7e..729b257 100644 --- a/src/lib/components/lnv/location.svelte.ts +++ b/src/lib/components/lnv/location.svelte.ts @@ -33,6 +33,12 @@ export const location = $state({ lastUpdate: null as Date | null, }); +const _isDriving = $derived(location.speed > (7 / 3.6)); + +export function isDriving() { + return _isDriving; +} + export function watchLocation() { if (navigator.geolocation) { navigator.geolocation.watchPosition( diff --git a/src/lib/components/lnv/sidebar/MainSidebar.svelte b/src/lib/components/lnv/sidebar/MainSidebar.svelte index 8c240af..5fa7920 100644 --- a/src/lib/components/lnv/sidebar/MainSidebar.svelte +++ b/src/lib/components/lnv/sidebar/MainSidebar.svelte @@ -22,7 +22,6 @@ > + + {m["vehicles.selector.add"]()}