Rebuild the editor as a Vue app: sidebar, pages side by side, tile settings in a drawer (0.2.74)
The page is now web/ (Vue 3 + Vite + TypeScript), built into screen_manager/app/static with hashed file names; server.py serves index.html as built and /assets/. The Python API, the data and the firmware are unchanged. Your screens sit in a sidebar, the pages of a screen stand next to each other at the screen's own shape, the library sits on the right, and a tile's settings slide in as a drawer while the mockup stays in view. New screen, Firmware & USB, Alerts, Override YAML and Settings are pages of their own. Fonts moved to web/src/assets; the tests read the source through tests/editor_sources.py. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import Sidebar from "./components/Sidebar.vue";
|
||||
import Toast from "./components/Toast.vue";
|
||||
import ScreenView from "./components/ScreenView.vue";
|
||||
import EmptyState from "./components/EmptyState.vue";
|
||||
import AppSettingsView from "./components/AppSettingsView.vue";
|
||||
import InstallerView from "./components/InstallerView.vue";
|
||||
import FirmwareView from "./components/FirmwareView.vue";
|
||||
import AlertsView from "./components/AlertsView.vue";
|
||||
import OverrideView from "./components/OverrideView.vue";
|
||||
import { currentScreen, route, state } from "./store";
|
||||
|
||||
const view = computed(() => {
|
||||
if (route.value === "#settings") return AppSettingsView;
|
||||
if (route.value === "#new-screen") return InstallerView;
|
||||
if (route.value === "#firmware") return FirmwareView;
|
||||
if (route.value === "#alerts") return AlertsView;
|
||||
if (route.value === "#override") return OverrideView;
|
||||
return currentScreen.value && state.layout ? ScreenView : EmptyState;
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="app" :class="{ dragging: state.drag.active }">
|
||||
<Sidebar />
|
||||
<main class="main">
|
||||
<component :is="view" />
|
||||
</main>
|
||||
<Toast />
|
||||
</div>
|
||||
</template>
|
||||
Reference in New Issue
Block a user