diff --git a/scripts/load_path.py b/scripts/load_path.py index 5bb7e60..0627f5d 100644 --- a/scripts/load_path.py +++ b/scripts/load_path.py @@ -59,6 +59,7 @@ PATHS_LOGINED = [ f"/{MOD}/show_same_catelog_llm.ui", f"/{MOD}/show_llms.ui", f"/{MOD}/show_llms_by_providers.ui", + f"/{MOD}/model_plaza.ui", f"/{MOD}/failed_accounting.ui", f"/{MOD}/llmcatelog_list.ui", diff --git a/wwwroot/model_plaza.css b/wwwroot/model_plaza.css new file mode 100644 index 0000000..2ffd29c --- /dev/null +++ b/wwwroot/model_plaza.css @@ -0,0 +1,65 @@ +/* Model Plaza — 模型广场 */ + +.plaza-header { + padding: 8px 16px 4px 16px; +} + +.plaza-tabs .tab-bar { + border-bottom: 2px solid var(--sage-border, #e2e8f0); +} + +.plaza-tabs .tab-item { + font-weight: 500; + transition: color 0.2s ease; +} + +.plaza-tabs .tab-item:hover { + color: var(--sage-brand, #6366f1); +} + +/* Card hover effects for model cards */ +.plaza-card { + transition: transform 0.2s ease, box-shadow 0.2s ease; + cursor: pointer; + border-radius: 8px !important; +} + +.plaza-card:hover { + transform: translateY(-2px); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); +} + +/* Category section headers */ +.plaza-section-title { + padding: 12px 0 4px 4px; + position: relative; +} + +.plaza-section-title::before { + content: ''; + position: absolute; + left: 0; + top: 50%; + transform: translateY(-50%); + width: 4px; + height: 70%; + border-radius: 2px; + background: var(--sage-brand, #6366f1); +} + +/* Smooth card grid */ +.plaza-grid { + gap: 12px !important; + padding: 4px 0; +} + +/* Model icon area */ +.plaza-card .model-icon-row { + gap: 8px; +} + +/* Description text */ +.plaza-card .model-desc { + line-height: 1.5; + opacity: 0.85; +} diff --git a/wwwroot/model_plaza.ui b/wwwroot/model_plaza.ui new file mode 100644 index 0000000..7efe0ab --- /dev/null +++ b/wwwroot/model_plaza.ui @@ -0,0 +1,65 @@ +{ + "widgettype": "VBox", + "options": { + "css": "filler", + "width": "100%" + }, + "subwidgets": [ + { + "widgettype": "VBox", + "options": { + "css": "plaza-header", + "width": "100%" + }, + "subwidgets": [ + { + "widgettype": "Title2", + "options": { + "otext": "模型广场", + "i18n": true, + "halign": "left" + } + }, + { + "widgettype": "Text", + "options": { + "otext": "探索和使用各类AI模型", + "i18n": true, + "halign": "left", + "wrap": true + } + } + ] + }, + { + "widgettype": "TabPanel", + "id": "plaza_tabs", + "options": { + "css": "filler plaza-tabs", + "tab_pos": "top", + "items": [ + { + "name": "by_catelog", + "label": "按分类", + "content": { + "widgettype": "urlwidget", + "options": { + "url": "{{entire_url('show_llms.ui')}}" + } + } + }, + { + "name": "by_provider", + "label": "按供应商", + "content": { + "widgettype": "urlwidget", + "options": { + "url": "{{entire_url('show_llms_by_providers.ui')}}" + } + } + } + ] + } + } + ] +} diff --git a/wwwroot/show_llms.ui b/wwwroot/show_llms.ui index aa6d946..739ee8c 100644 --- a/wwwroot/show_llms.ui +++ b/wwwroot/show_llms.ui @@ -25,7 +25,7 @@ { "widgettype":"DynamicColumn", "options":{ - "css":"filler", + "css":"filler plaza-grid", "width":"100%" }, "subwidgets":[ @@ -33,7 +33,7 @@ { "widgettype":"VScrollPanel", "options":{ - "css":"card", + "css":"card plaza-card", "cwidth":20, "cheight":12 }, diff --git a/wwwroot/show_llms_by_providers.ui b/wwwroot/show_llms_by_providers.ui index ae516af..fb50657 100644 --- a/wwwroot/show_llms_by_providers.ui +++ b/wwwroot/show_llms_by_providers.ui @@ -24,7 +24,7 @@ { "widgettype":"DynamicColumn", "options":{ - "css":"filler", + "css":"filler plaza-grid", "width":"100%" }, "subwidgets":[ @@ -32,7 +32,7 @@ { "widgettype":"VScrollPanel", "options":{ - "css":"card", + "css":"card plaza-card", "cwidth":20, "cheight":12 },