|
1 | | -<!-- Model Switcher - Floating Preset Selector --> |
| 1 | +<!-- Model Switcher - Floating Preset Selector (left-aligned with inline model display) --> |
2 | 2 | <script type="module"> |
3 | 3 | import { store } from "/plugins/_model_config/webui/model-config-store.js"; |
4 | 4 | </script> |
|
17 | 17 | :class="{ 'has-override': !!$store.modelConfig.switcherOverride }" |
18 | 18 | @click="showDropdown = !showDropdown" |
19 | 19 | @click.outside="showDropdown = false"> |
20 | | - <span class="material-symbols-outlined">neurology</span> |
| 20 | + <span class="material-symbols-outlined" style="font-size: 16px;">neurology</span> |
21 | 21 | <span class="model-switcher-label" x-text="$store.modelConfig.getSwitcherLabel()"></span> |
22 | | - <span class="material-symbols-outlined" style="font-size: 0.75rem;" |
| 22 | + <span class="material-symbols-outlined" style="font-size: 0.7rem;" |
23 | 23 | x-text="showDropdown ? 'expand_less' : 'expand_more'"></span> |
24 | 24 | </button> |
25 | 25 |
|
| 26 | + <!-- Inline active model pills (shown when a preset is active) --> |
| 27 | + <template x-if="$store.modelConfig.switcherOverride"> |
| 28 | + <div class="model-switcher-active-pills"> |
| 29 | + <template x-if="$store.modelConfig.getActiveModels().main"> |
| 30 | + <div class="model-pill"> |
| 31 | + <span class="model-pill-role">Main</span> |
| 32 | + <span class="model-pill-name" x-text="$store.modelConfig.getActiveModels().main.name"></span> |
| 33 | + </div> |
| 34 | + </template> |
| 35 | + <template x-if="$store.modelConfig.getActiveModels().utility"> |
| 36 | + <div class="model-pill"> |
| 37 | + <span class="model-pill-role">Util</span> |
| 38 | + <span class="model-pill-name" x-text="$store.modelConfig.getActiveModels().utility.name"></span> |
| 39 | + </div> |
| 40 | + </template> |
| 41 | + </div> |
| 42 | + </template> |
| 43 | + |
| 44 | + <!-- Dropdown (opens upward) --> |
26 | 45 | <div class="model-switcher-dropdown" x-show="showDropdown" x-transition.opacity> |
27 | 46 | <!-- Use Default --> |
28 | 47 | <template x-if="$store.modelConfig.switcherOverride"> |
|
99 | 118 | } |
100 | 119 | .model-switcher-anchor { |
101 | 120 | position: relative; |
| 121 | + display: flex; |
| 122 | + align-items: center; |
| 123 | + gap: 6px; |
102 | 124 | } |
103 | 125 | .model-switcher-btn { |
104 | 126 | width: auto; |
|
108 | 130 | border: none; |
109 | 131 | font-size: 0.75rem; |
110 | 132 | white-space: nowrap; |
| 133 | + flex-shrink: 0; |
111 | 134 | } |
112 | 135 | .model-switcher-btn:hover { |
113 | 136 | border: none; |
|
116 | 139 | /* color: var(--color-text); */ |
117 | 140 | } |
118 | 141 | .model-switcher-label { |
119 | | - max-width: 160px; |
| 142 | + max-width: 120px; |
| 143 | + overflow: hidden; |
| 144 | + text-overflow: ellipsis; |
| 145 | + } |
| 146 | + |
| 147 | + /* Inline active model pills */ |
| 148 | + .model-switcher-active-pills { |
| 149 | + display: flex; |
| 150 | + align-items: center; |
| 151 | + gap: 6px; |
| 152 | + flex-shrink: 1; |
| 153 | + min-width: 0; |
| 154 | + } |
| 155 | + .model-pill { |
| 156 | + display: flex; |
| 157 | + align-items: center; |
| 158 | + gap: 4px; |
| 159 | + padding: 2px 8px; |
| 160 | + border-radius: 12px; |
| 161 | + background: color-mix(in srgb, var(--color-highlight) 8%, transparent); |
| 162 | + border: 1px solid color-mix(in srgb, var(--color-highlight) 15%, transparent); |
| 163 | + font-size: 0.68rem; |
| 164 | + white-space: nowrap; |
| 165 | + min-width: 0; |
| 166 | + overflow: hidden; |
| 167 | + } |
| 168 | + .model-pill-role { |
| 169 | + font-weight: 600; |
| 170 | + opacity: 0.55; |
| 171 | + font-size: 0.62rem; |
| 172 | + text-transform: uppercase; |
| 173 | + letter-spacing: 0.03em; |
| 174 | + flex-shrink: 0; |
| 175 | + } |
| 176 | + .model-pill-name { |
| 177 | + opacity: 0.85; |
120 | 178 | overflow: hidden; |
121 | 179 | text-overflow: ellipsis; |
| 180 | + min-width: 0; |
122 | 181 | } |
| 182 | + |
| 183 | + /* Dropdown - opens upward, aligned to left */ |
123 | 184 | .model-switcher-dropdown { |
124 | 185 | position: absolute; |
125 | 186 | bottom: calc(100% + 6px); |
126 | | - right: 0; |
127 | | - min-width: 250px; |
| 187 | + left: 0; |
| 188 | + min-width: 280px; |
128 | 189 | max-height: 550px; |
129 | 190 | overflow-y: auto; |
130 | 191 | background-color: var(--color-panel); |
|
202 | 263 | opacity: 0.6; |
203 | 264 | font-size: 0.75rem; |
204 | 265 | } |
| 266 | + |
| 267 | + /* Responsive: hide pills on narrow screens */ |
| 268 | + @media (max-width: 600px) { |
| 269 | + .model-switcher-active-pills { |
| 270 | + display: none; |
| 271 | + } |
| 272 | + } |
205 | 273 | </style> |
0 commit comments