From 1a8dfb397564fbeb83bc8aaf61dc296d71e93493 Mon Sep 17 00:00:00 2001 From: simonredfern Date: Mon, 8 Dec 2025 19:25:01 +0100 Subject: [PATCH] Svelte drop downs for Version and Message Docs --- components.d.ts | 7 +- src-svelte/Dropdown.svelte | 258 ++++++++++++++++++++++++++++++ src/components/HeaderNav.vue | 72 ++++----- src/components/SvelteDropdown.vue | 123 ++++++++++++++ src/router/index.ts | 6 + src/views/MessageDocsListView.vue | 107 +++++++++++++ svelte.config.mjs | 12 ++ vite.config.mts | 4 +- 8 files changed, 539 insertions(+), 50 deletions(-) create mode 100644 src-svelte/Dropdown.svelte create mode 100644 src/components/SvelteDropdown.vue create mode 100644 src/views/MessageDocsListView.vue create mode 100644 svelte.config.mjs diff --git a/components.d.ts b/components.d.ts index 680c1d0..a832d5d 100644 --- a/components.d.ts +++ b/components.d.ts @@ -22,9 +22,6 @@ declare module 'vue' { ElCollapse: typeof import('element-plus/es')['ElCollapse'] ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] ElContainer: typeof import('element-plus/es')['ElContainer'] - ElContainter: typeof import('element-plus/es')['ElContainter'] - ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] - ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] ElDivider: typeof import('element-plus/es')['ElDivider'] ElDropdown: typeof import('element-plus/es')['ElDropdown'] ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] @@ -36,8 +33,6 @@ declare module 'vue' { ElIcon: typeof import('element-plus/es')['ElIcon'] ElInput: typeof import('element-plus/es')['ElInput'] ElMain: typeof import('element-plus/es')['ElMain'] - ElMenu: typeof import('element-plus/es')['ElMenu'] - ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElTag: typeof import('element-plus/es')['ElTag'] @@ -45,12 +40,12 @@ declare module 'vue' { GlossarySearchNav: typeof import('./src/components/GlossarySearchNav.vue')['default'] HeaderNav: typeof import('./src/components/HeaderNav.vue')['default'] Menu: typeof import('./src/components/Menu.vue')['default'] - MessageDocsContent: typeof import('./src/components/MessageDocsContent.vue')['default'] MessageDocsSearchNav: typeof import('./src/components/MessageDocsSearchNav.vue')['default'] Preview: typeof import('./src/components/Preview.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchNav: typeof import('./src/components/SearchNav.vue')['default'] + SvelteDropdown: typeof import('./src/components/SvelteDropdown.vue')['default'] ToolCall: typeof import('./src/components/ToolCall.vue')['default'] } } diff --git a/src-svelte/Dropdown.svelte b/src-svelte/Dropdown.svelte new file mode 100644 index 0000000..b965557 --- /dev/null +++ b/src-svelte/Dropdown.svelte @@ -0,0 +1,258 @@ + + + + + + + diff --git a/src/components/HeaderNav.vue b/src/components/HeaderNav.vue index 76a5b50..6b80aa5 100644 --- a/src/components/HeaderNav.vue +++ b/src/components/HeaderNav.vue @@ -27,7 +27,6 @@ + + + + diff --git a/src/router/index.ts b/src/router/index.ts index 5a16e97..22515e4 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -29,6 +29,7 @@ import { createRouter, createWebHistory } from 'vue-router' import GlossaryView from '../views/GlossaryView.vue' import HelpView from '../views/HelpView.vue' import MessageDocsView from '../views/MessageDocsView.vue' +import MessageDocsListView from '../views/MessageDocsListView.vue' import BodyView from '../views/BodyView.vue' import Content from '../components/Content.vue' import Preview from '../components/Preview.vue' @@ -63,6 +64,11 @@ export default async function router(): Promise { name: 'help', component: isServerActive ? HelpView : InternalServerErrorView }, + { + path: '/message-docs', + name: 'message-docs-list', + component: isServerActive ? MessageDocsListView : InternalServerErrorView + }, { path: '/message-docs/:id', name: 'message-docs', diff --git a/src/views/MessageDocsListView.vue b/src/views/MessageDocsListView.vue new file mode 100644 index 0000000..fad2c6a --- /dev/null +++ b/src/views/MessageDocsListView.vue @@ -0,0 +1,107 @@ + + + + + + + diff --git a/svelte.config.mjs b/svelte.config.mjs new file mode 100644 index 0000000..4c83c4b --- /dev/null +++ b/svelte.config.mjs @@ -0,0 +1,12 @@ +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' + +export default { + // Consult https://svelte.dev/docs#compile-time-svelte-preprocess + // for more information about preprocessors + preprocess: vitePreprocess(), + + compilerOptions: { + // Enable runes mode for Svelte 5 + runes: true + } +} diff --git a/vite.config.mts b/vite.config.mts index 1450e8c..cb8ff1c 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -3,6 +3,7 @@ import { fileURLToPath, URL } from 'node:url' import { loadEnv, defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' +import { svelte } from '@sveltejs/vite-plugin-svelte' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' @@ -14,6 +15,7 @@ export default defineConfig({ plugins: [ vue(), vueJsx(), + svelte(), AutoImport({ resolvers: [ElementPlusResolver()] }), @@ -28,7 +30,7 @@ export default defineConfig({ alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) }, - extensions: ['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json', '.vue'] + extensions: ['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json', '.vue', '.svelte'] }, define: { __VUE_I18N_FULL_INSTALL__: true,