feat(web): migrate application shell to TanStack Start

- replace the legacy client-only Vite bootstrap with TanStack Router routes, Start SSR, and Nitro output

- compose the reusable layout, navigation, appearance, chats, and notifications blocks with application-owned data

- persist UI preferences through server functions and initialize theme, sidebar, and breakpoint state before hydration

- add React Query, hotkey, toaster, and responsive dashboard integration

- add application-owned Lingui configuration and catalogs, mount the runtime provider, and lazily enable I18nDevtool in development

- remove superseded HTML, main entry, theme provider, and application ESLint configuration
This commit is contained in:
Maofeng
2026-07-29 21:23:17 +08:00
parent 9e3f1d6b59
commit a9480ad9aa
32 changed files with 1555 additions and 309 deletions
+48
View File
@@ -0,0 +1,48 @@
@import "@workspace/ui/globals.css";
@import "@workspace/blocks/globals.css";
:root {
--ui-content-top-gap: --spacing(2);
--ui-header-height: --spacing(18);
--ui-sidebar-collapsed-width: --spacing(22);
--ui-sidebar-width: --spacing(74);
}
.ui\:mobile {
--ui-header-height: --spacing(16);
--ui-sidebar-width: 0px;
}
.ui\:tablet,
.ui\:collapsed:not(.ui\:mobile) {
--ui-sidebar-width: var(--ui-sidebar-collapsed-width);
}
.ui\:theme-changing *,
.ui\:theme-changing *::before,
.ui\:theme-changing *::after {
-webkit-transition: none !important;
transition: none !important;
}
@keyframes ui-show-scroll-divider {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@utility scroll-top-divider {
opacity: 0;
}
@supports (animation-timeline: scroll()) {
.scroll-top-divider {
animation: ui-show-scroll-divider 1s steps(1, end) both;
animation-range: 0px var(--ui-content-top-gap, 1px);
animation-timeline: scroll(root block);
}
}