♻️ refactor: optimize state management, switch to @tanstack/vue-virtual, and improve performance
- Centralize `useAgents` and `useModels` state within the Nuxt app context to prevent data leaks and improve initialization. - Migrate virtualization from `vue-virtual-scroller` to `@tanstack/vue-virtual` with new `RowVirtualizerFixed` and `RowVirtualizerDynamic` components. - Upgrade Nuxt to v4.3.1 and remove `@vue-macros/nuxt`. - Replace `big.js` with an optimized custom `lshDecimal` string manipulation logic for pricing calculations in the provider API. - Implement automatic focus redirection in `ChatInput` to capture standard keyboard input. - Refactor Sidenav and Settings components to utilize virtualization for long lists (topics, agents, models). - Enhance theme colors and mobile experience. More work to come on both of these.
This commit is contained in:
+14
-19
@@ -57,15 +57,15 @@
|
||||
}
|
||||
|
||||
:root.dark {
|
||||
--palette-zinc-100: #09080A;
|
||||
--palette-zinc-200: #1a191b;
|
||||
--palette-zinc-300: #2e2d2f;
|
||||
--palette-zinc-100: #09080D;
|
||||
--palette-zinc-200: #1a191E;
|
||||
--palette-zinc-300: #2e2d32;
|
||||
--palette-slate-100: #0f171c;
|
||||
--palette-slate-200: #1e252b;
|
||||
--palette-slate-300: #333b44;
|
||||
--palette-obsidian-100: #050504;
|
||||
--palette-obsidian-200: #0f0f0e;
|
||||
--palette-obsidian-300: #1e1f1f;
|
||||
--palette-obsidian-100: #050307;
|
||||
--palette-obsidian-200: #0f0e11;
|
||||
--palette-obsidian-300: #1e1d20;
|
||||
|
||||
--text-primary: color-mix(in srgb, #fafafa, var(--color-accent) var(--accent-hinting));
|
||||
/* Selected topics */
|
||||
@@ -177,6 +177,8 @@ html.light {
|
||||
|
||||
html {
|
||||
height: 100vh;
|
||||
/* something something progressive enhancement */
|
||||
height: 100dvh;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@@ -270,6 +272,11 @@ button.accent:hover {
|
||||
transform: translateX(calc(2.5em - 1.3em - 0.5rem));
|
||||
}
|
||||
|
||||
:where(.i-tabler\:dots) {
|
||||
background-color: currentColor;
|
||||
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='18' height='18'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 12a1 1 0 1 0 2 0a1 1 0 1 0-2 0m7 0a1 1 0 1 0 2 0a1 1 0 1 0-2 0m7 0a1 1 0 1 0 2 0a1 1 0 1 0-2 0'/%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
.reasoning-contaizner.middle {
|
||||
mask-image: linear-gradient(#000, #000, transparent 0, #000 12%, #000 88%, transparent)
|
||||
}
|
||||
@@ -465,16 +472,4 @@ article .checkbox {
|
||||
width: min-content;
|
||||
}
|
||||
|
||||
/* end markdown renderer */
|
||||
|
||||
.reasoning-contaizner.middle {
|
||||
mask-image: linear-gradient(#000, #000, transparent 0, #000 12%, #000 88%, transparent)
|
||||
}
|
||||
|
||||
.reasoning-contaizner.top {
|
||||
mask-image: linear-gradient(#000, transparent, #000 0, #000 12%, #000 88%, transparent)
|
||||
}
|
||||
|
||||
.reasoning-contaizner.bottom {
|
||||
mask-image: linear-gradient(transparent, #000, transparent 0, #000 12%, #000 88%, #000)
|
||||
}
|
||||
/* end markdown renderer */
|
||||
Reference in New Issue
Block a user