feat(webui): add Tailwind build system and refactor frontend architecture
- Replace Tailwind CDN with local build (PostCSS + autoprefixer + daisyui) - Add CSS build scripts with automatic prepare hook on npm install - Create account-actions.js service layer with unified response format - Extend ErrorHandler.withLoading() for automatic loading state management - Add skeleton screens for initial load, silent refresh for subsequent updates - Implement loading animations for async operations (buttons, modals) - Improve empty states and add ARIA labels for accessibility - Abstract component styles using @apply (buttons, badges, inputs) - Add JSDoc documentation for Dashboard modules - Update README and CLAUDE.md with development guidelines
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
activeTab: 'ui'
|
||||
}" class="view-container">
|
||||
<!-- Header & Tabs -->
|
||||
<div class="glass-panel rounded-xl border border-space-border flex flex-col overflow-hidden">
|
||||
<div class="view-card !p-0 flex flex-col overflow-hidden">
|
||||
<div class="bg-space-900/50 border-b border-space-border px-8 pt-8 pb-0 shrink-0">
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<h3 class="text-xl font-bold text-white flex items-center gap-2">
|
||||
@@ -558,7 +558,7 @@
|
||||
</div>
|
||||
|
||||
<!-- Models List -->
|
||||
<div class="glass-panel rounded-lg overflow-hidden">
|
||||
<div class="view-card !p-0">
|
||||
<table class="standard-table">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -609,7 +609,7 @@
|
||||
placeholder="e.g. claude-sonnet-4-5 or gemini-3-flash"
|
||||
@keydown.enter="await updateModelConfig(modelId, { mapping: newMapping }); stopEditing()"
|
||||
@keydown.escape="newMapping = config.mapping || ''; stopEditing()">
|
||||
<button class="btn btn-xs btn-ghost btn-square text-green-500 hover:bg-green-500/20"
|
||||
<button class="btn-action-success"
|
||||
@click="await updateModelConfig(modelId, { mapping: newMapping }); stopEditing()"
|
||||
title="Save">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="w-3.5 h-3.5" fill="none"
|
||||
@@ -618,7 +618,7 @@
|
||||
stroke-width="2" d="M5 13l4 4L19 7" />
|
||||
</svg>
|
||||
</button>
|
||||
<button class="btn btn-xs btn-ghost btn-square text-gray-500 hover:bg-gray-500/20"
|
||||
<button class="btn-action-neutral"
|
||||
@click="newMapping = config.mapping || ''; stopEditing()"
|
||||
title="Cancel">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="w-3.5 h-3.5" fill="none"
|
||||
@@ -628,7 +628,7 @@
|
||||
</svg>
|
||||
</button>
|
||||
<button x-show="config.mapping"
|
||||
class="btn btn-xs btn-ghost btn-square text-red-400 hover:bg-red-500/20"
|
||||
class="btn-action-danger"
|
||||
@click="await updateModelConfig(modelId, { mapping: '' }); stopEditing()"
|
||||
title="Clear mapping">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="w-3.5 h-3.5" fill="none"
|
||||
@@ -700,7 +700,7 @@
|
||||
<div x-show="activeTab === 'server'" x-data="window.Components.serverConfig()"
|
||||
class="space-y-6 max-w-2xl animate-fade-in pb-10">
|
||||
<!-- 🔐 Security Section -->
|
||||
<div class="glass-panel p-6 border border-neon-yellow/20 bg-neon-yellow/5">
|
||||
<div class="view-card border-neon-yellow/20 bg-neon-yellow/5">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center gap-4">
|
||||
<div
|
||||
@@ -741,7 +741,7 @@
|
||||
|
||||
<!-- Debug Mode -->
|
||||
<div
|
||||
class="form-control glass-panel p-4 border border-space-border/50 hover:border-neon-purple/50 transition-all">
|
||||
class="form-control view-card border-space-border/50 hover:border-neon-purple/50">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex flex-col gap-1">
|
||||
<span class="text-sm font-medium text-gray-200"
|
||||
@@ -763,7 +763,7 @@
|
||||
|
||||
<!-- Token Cache -->
|
||||
<div
|
||||
class="form-control glass-panel p-4 border border-space-border/50 hover:border-neon-green/50 transition-all">
|
||||
class="form-control view-card border-space-border/50 hover:border-neon-green/50">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex flex-col gap-1">
|
||||
<span class="text-sm font-medium text-gray-200"
|
||||
@@ -787,7 +787,7 @@
|
||||
</div>
|
||||
|
||||
<!-- ▼ Advanced Tuning (Fixed Logic) -->
|
||||
<div class="glass-panel border border-space-border/50 overflow-hidden">
|
||||
<div class="view-card !p-0 border-space-border/50">
|
||||
<div class="flex items-center justify-between p-4 cursor-pointer hover:bg-white/5 transition-colors"
|
||||
@click="advancedExpanded = !advancedExpanded">
|
||||
<div class="flex items-center gap-3">
|
||||
|
||||
Reference in New Issue
Block a user