@happyvertical/smrt-chat 0.55.15 → 0.55.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/chunks/{chat-stream-CXWE2vjb.js → chat-stream-D1xCl9IM.js} +2 -2
  2. package/dist/chunks/{chat-stream-CXWE2vjb.js.map → chat-stream-D1xCl9IM.js.map} +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/manifest.json +1 -1
  5. package/dist/smrt-knowledge.json +3 -3
  6. package/dist/svelte/components/agent/AgentChat.svelte +70 -67
  7. package/dist/svelte/components/agent/AgentSelector.svelte +26 -23
  8. package/dist/svelte/components/agent/AgentSessionPanel.svelte +47 -44
  9. package/dist/svelte/components/agent/ToolCallDisplay.svelte +52 -49
  10. package/dist/svelte/components/assistant/AssistantChoiceCards.svelte +19 -17
  11. package/dist/svelte/components/assistant/AssistantComposer.svelte +31 -28
  12. package/dist/svelte/components/assistant/AssistantDock.svelte +69 -66
  13. package/dist/svelte/components/assistant/AssistantThreadList.svelte +23 -20
  14. package/dist/svelte/components/assistant/FloatingAssistant.svelte +6 -3
  15. package/dist/svelte/components/assistant/captions/CaptionOverlay.svelte +4 -1
  16. package/dist/svelte/components/assistant/captions/HeardCaptions.svelte +5 -2
  17. package/dist/svelte/components/assistant/captions/SpokenCaptions.svelte +5 -2
  18. package/dist/svelte/components/dialogs/RoomCreateDialog.svelte +13 -10
  19. package/dist/svelte/components/dialogs/SearchMessages.svelte +35 -32
  20. package/dist/svelte/components/helper/HelperControlPanel.svelte +4 -1
  21. package/dist/svelte/components/layout/ChatLayout.svelte +14 -10
  22. package/dist/svelte/components/layout/MemberList.svelte +30 -27
  23. package/dist/svelte/components/layout/RoomHeader.svelte +19 -16
  24. package/dist/svelte/components/layout/RoomList.svelte +26 -23
  25. package/dist/svelte/components/messages/MessageInput.svelte +20 -17
  26. package/dist/svelte/components/messages/MessageItem.svelte +45 -42
  27. package/dist/svelte/components/messages/MessageList.svelte +8 -5
  28. package/dist/svelte/components/messages/ThreadPanel.svelte +15 -12
  29. package/dist/svelte/components/shared/FileUpload.svelte +39 -36
  30. package/dist/svelte/components/shared/LinkPreview.svelte +9 -6
  31. package/dist/svelte/components/shared/MentionAutocomplete.svelte +16 -13
  32. package/dist/svelte/components/shared/ReadReceipts.svelte +13 -10
  33. package/dist/svelte/components/shared/UserPresence.svelte +10 -7
  34. package/dist/svelte/components/tabs/ChatTab.svelte +26 -23
  35. package/dist/svelte/components/tabs/ChatTabList.svelte +20 -17
  36. package/dist/svelte/components/tabs/ChatTabs.svelte +7 -4
  37. package/dist/svelte/components/tabs/MiniChat.svelte +26 -23
  38. package/dist/sveltekit.js +1 -1
  39. package/package.json +17 -17
@@ -46,7 +46,7 @@ const statusLabel: Record<string, string> = {
46
46
  };
47
47
  </script>
48
48
 
49
- <aside class="session-panel" aria-label={t(M['chat.agent_session_panel.sessions'])}>
49
+ <aside class="session-panel" aria-label={t(M['chat.agent_session_panel.sessions'])} data-smrt-component="AgentSessionPanel">
50
50
  <div class="session-panel__header">
51
51
  <h2 class="session-panel__title">Sessions</h2>
52
52
  {#if onnewsession}
@@ -130,13 +130,15 @@ const statusLabel: Record<string, string> = {
130
130
  </aside>
131
131
 
132
132
  <style>
133
+ @layer smrt.reset, smrt.structure, smrt.theme;
134
+ @layer smrt.theme {
133
135
  .session-panel {
134
136
  display: flex;
135
137
  flex-direction: column;
136
138
  height: 100%;
137
139
  width: 280px;
138
- background: var(--smrt-color-surface-container, #f0f0f4);
139
- border-right: 1px solid var(--smrt-color-outline-variant, #c4c6d0);
140
+ background: var(--smrt-color-surface-container);
141
+ border-right: 1px solid var(--smrt-color-outline-variant);
140
142
  overflow: hidden;
141
143
  }
142
144
 
@@ -144,14 +146,14 @@ const statusLabel: Record<string, string> = {
144
146
  display: flex;
145
147
  align-items: center;
146
148
  justify-content: space-between;
147
- padding: var(--smrt-spacing-4, 16px);
148
- border-bottom: 1px solid var(--smrt-color-outline-variant, #c4c6d0);
149
+ padding: var(--smrt-spacing-4);
150
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
149
151
  flex-shrink: 0;
150
152
  }
151
153
 
152
154
  .session-panel__title {
153
155
  font: var(--smrt-typography-title-medium-font, 600 1rem/1.25 sans-serif);
154
- color: var(--smrt-color-on-surface, #1a1c1e);
156
+ color: var(--smrt-color-on-surface);
155
157
  margin: 0;
156
158
  }
157
159
 
@@ -160,55 +162,55 @@ const statusLabel: Record<string, string> = {
160
162
  width: 36px;
161
163
  height: 36px;
162
164
  padding: 0;
163
- background: var(--smrt-color-primary, #005ac1);
164
- color: var(--smrt-color-on-primary, #ffffff);
165
- border-radius: var(--smrt-radius-full, 9999px);
165
+ background: var(--smrt-color-primary);
166
+ color: var(--smrt-color-on-primary);
167
+ border-radius: var(--smrt-radius-full);
166
168
  transition: opacity var(--smrt-duration-short2, 150ms);
167
169
  }
168
170
 
169
171
  .session-panel__header :global(.session-panel__new-btn:hover) {
170
- background: var(--smrt-color-primary, #005ac1);
172
+ background: var(--smrt-color-primary);
171
173
  opacity: 0.85;
172
174
  }
173
175
 
174
176
  .session-panel__list {
175
177
  flex: 1;
176
178
  overflow-y: auto;
177
- padding: var(--smrt-spacing-2, 8px);
179
+ padding: var(--smrt-spacing-2);
178
180
  display: flex;
179
181
  flex-direction: column;
180
- gap: var(--smrt-spacing-1, 4px);
182
+ gap: var(--smrt-spacing-1);
181
183
  }
182
184
 
183
185
  .session-panel__item {
184
186
  display: flex;
185
187
  align-items: flex-start;
186
- gap: var(--smrt-spacing-3, 12px);
188
+ gap: var(--smrt-spacing-3);
187
189
  width: 100%;
188
- padding: var(--smrt-spacing-3, 12px);
190
+ padding: var(--smrt-spacing-3);
189
191
  border: none;
190
192
  background: transparent;
191
- border-radius: var(--smrt-radius-medium, 8px);
193
+ border-radius: var(--smrt-radius-medium);
192
194
  cursor: pointer;
193
195
  text-align: left;
194
- color: var(--smrt-color-on-surface, #1a1c1e);
196
+ color: var(--smrt-color-on-surface);
195
197
  transition: background var(--smrt-duration-short2, 150ms);
196
198
  }
197
199
 
198
200
  .session-panel__item:hover {
199
- background: var(--smrt-color-surface-container-high, #e6e6ea);
201
+ background: var(--smrt-color-surface-container-high);
200
202
  }
201
203
 
202
204
  .session-panel__item--active {
203
- background: var(--smrt-color-secondary-container, #d7e3f7);
205
+ background: var(--smrt-color-secondary-container);
204
206
  }
205
207
 
206
208
  .session-panel__item--active:hover {
207
- background: var(--smrt-color-secondary-container, #d7e3f7);
209
+ background: var(--smrt-color-secondary-container);
208
210
  }
209
211
 
210
212
  .session-panel__item:focus-visible {
211
- outline: 2px solid var(--smrt-color-primary, #005ac1);
213
+ outline: 2px solid var(--smrt-color-primary);
212
214
  outline-offset: -2px;
213
215
  }
214
216
 
@@ -216,7 +218,7 @@ const statusLabel: Record<string, string> = {
216
218
  flex: 1;
217
219
  display: flex;
218
220
  flex-direction: column;
219
- gap: var(--smrt-spacing-1, 4px);
221
+ gap: var(--smrt-spacing-1);
220
222
  min-width: 0;
221
223
  }
222
224
 
@@ -224,7 +226,7 @@ const statusLabel: Record<string, string> = {
224
226
  display: flex;
225
227
  align-items: center;
226
228
  justify-content: space-between;
227
- gap: var(--smrt-spacing-2, 8px);
229
+ gap: var(--smrt-spacing-2);
228
230
  }
229
231
 
230
232
  .session-panel__item-name {
@@ -236,64 +238,64 @@ const statusLabel: Record<string, string> = {
236
238
 
237
239
  .session-panel__item-date {
238
240
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
239
- color: var(--smrt-color-outline, #74777f);
241
+ color: var(--smrt-color-outline);
240
242
  flex-shrink: 0;
241
243
  }
242
244
 
243
245
  .session-panel__item-meta {
244
246
  display: flex;
245
247
  align-items: center;
246
- gap: var(--smrt-spacing-2, 8px);
248
+ gap: var(--smrt-spacing-2);
247
249
  }
248
250
 
249
251
  .session-panel__item-status {
250
252
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
251
- padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
252
- border-radius: var(--smrt-radius-full, 9999px);
253
- background: var(--smrt-color-surface-variant, #e1e2ec);
254
- color: var(--smrt-color-on-surface-variant, #43474e);
253
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
254
+ border-radius: var(--smrt-radius-full);
255
+ background: var(--smrt-color-surface-variant);
256
+ color: var(--smrt-color-on-surface-variant);
255
257
  }
256
258
 
257
259
  .session-panel__item-status--active {
258
- background: var(--smrt-color-success-container, #e8f5e9);
259
- color: var(--smrt-color-on-success-container, #2e7d32);
260
+ background: var(--smrt-color-success-container);
261
+ color: var(--smrt-color-on-success-container);
260
262
  }
261
263
 
262
264
  .session-panel__item-status--closed {
263
- background: var(--smrt-color-surface-variant, #e1e2ec);
264
- color: var(--smrt-color-on-surface-variant, #43474e);
265
+ background: var(--smrt-color-surface-variant);
266
+ color: var(--smrt-color-on-surface-variant);
265
267
  }
266
268
 
267
269
  .session-panel__item-status--expired {
268
- background: var(--smrt-color-error-container, #ffdad6);
269
- color: var(--smrt-color-on-error-container, #410002);
270
+ background: var(--smrt-color-error-container);
271
+ color: var(--smrt-color-on-error-container);
270
272
  }
271
273
 
272
274
  .session-panel__item-count {
273
275
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
274
- color: var(--smrt-color-outline, #74777f);
276
+ color: var(--smrt-color-outline);
275
277
  }
276
278
 
277
279
  .session-panel__item-tools {
278
280
  display: flex;
279
281
  flex-wrap: wrap;
280
- gap: var(--smrt-spacing-1, 4px);
281
- margin-top: var(--smrt-spacing-1, 4px);
282
+ gap: var(--smrt-spacing-1);
283
+ margin-top: var(--smrt-spacing-1);
282
284
  }
283
285
 
284
286
  .session-panel__tool-chip {
285
287
  font-size: var(--smrt-typography-label-small-size, 0.625rem);
286
288
  font-weight: var(--smrt-typography-weight-medium, 500);
287
- padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
288
- border-radius: var(--smrt-radius-small, 4px);
289
- background: var(--smrt-color-surface-container-highest, #dddde1);
290
- color: var(--smrt-color-on-surface-variant, #43474e);
289
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
290
+ border-radius: var(--smrt-radius-small);
291
+ background: var(--smrt-color-surface-container-highest);
292
+ color: var(--smrt-color-on-surface-variant);
291
293
  white-space: nowrap;
292
294
  }
293
295
 
294
296
  .session-panel__tool-chip--more {
295
- background: var(--smrt-color-primary-container, #d6e3ff);
296
- color: var(--smrt-color-on-primary-container, #001a41);
297
+ background: var(--smrt-color-primary-container);
298
+ color: var(--smrt-color-on-primary-container);
297
299
  }
298
300
 
299
301
  .session-panel__empty {
@@ -306,7 +308,7 @@ const statusLabel: Record<string, string> = {
306
308
 
307
309
  .session-panel__empty-text {
308
310
  font: var(--smrt-typography-body-small-font, 0.8125rem/1.4 sans-serif);
309
- color: var(--smrt-color-outline, #74777f);
311
+ color: var(--smrt-color-outline);
310
312
  }
311
313
 
312
314
  @media (prefers-reduced-motion: reduce) {
@@ -318,4 +320,5 @@ const statusLabel: Record<string, string> = {
318
320
  transition: none;
319
321
  }
320
322
  }
323
+ }
321
324
  </style>
@@ -89,7 +89,7 @@ function formatDuration(ms: number | undefined): string {
89
89
  }
90
90
  </script>
91
91
 
92
- <div class="tool-call tool-call--{effectiveStatus}" aria-label={t(M['chat.tool_call_display.tool_call'], { toolName: toolCall.toolName })}>
92
+ <div class="tool-call tool-call--{effectiveStatus}" aria-label={t(M['chat.tool_call_display.tool_call'], { toolName: toolCall.toolName })} data-smrt-component="ToolCallDisplay">
93
93
  <!-- raw-primitive-allow: full-width disclosure trigger with aria-expanded and aria-controls toggling an externally-rendered collapsible panel, wrapping rich content (status dot, name, duration, status label, rotating chevron); structural accordion header no Button primitive owns -->
94
94
  <button
95
95
  class="tool-call__header"
@@ -189,97 +189,99 @@ function formatDuration(ms: number | undefined): string {
189
189
  </div>
190
190
 
191
191
  <style>
192
+ @layer smrt.reset, smrt.structure, smrt.theme;
193
+ @layer smrt.theme {
192
194
  .tool-call {
193
- border: 1px solid var(--smrt-color-outline-variant, #c4c6d0);
194
- border-radius: var(--smrt-radius-medium, 8px);
195
+ border: 1px solid var(--smrt-color-outline-variant);
196
+ border-radius: var(--smrt-radius-medium);
195
197
  overflow: hidden;
196
198
  font-family: var(--smrt-font-family, system-ui);
197
199
  }
198
200
 
199
201
  .tool-call--pending {
200
- border-left: 3px solid var(--smrt-color-outline, #74777f);
202
+ border-left: 3px solid var(--smrt-color-outline);
201
203
  }
202
204
 
203
205
  .tool-call--running {
204
- border-left: 3px solid var(--smrt-color-primary, #005ac1);
206
+ border-left: 3px solid var(--smrt-color-primary);
205
207
  }
206
208
 
207
209
  .tool-call--success {
208
- border-left: 3px solid var(--smrt-color-success, #1e8e3e);
210
+ border-left: 3px solid var(--smrt-color-success);
209
211
  }
210
212
 
211
213
  .tool-call--error {
212
- border-left: 3px solid var(--smrt-color-error, #b3261e);
214
+ border-left: 3px solid var(--smrt-color-error);
213
215
  }
214
216
 
215
217
  .tool-call--awaiting-confirmation {
216
- border-left: 3px solid var(--smrt-color-tertiary, #7d5260);
218
+ border-left: 3px solid var(--smrt-color-tertiary);
217
219
  }
218
220
 
219
221
  .tool-call--applied {
220
- border-left: 3px solid var(--smrt-color-success, #1e8e3e);
222
+ border-left: 3px solid var(--smrt-color-success);
221
223
  }
222
224
 
223
225
  .tool-call__header {
224
226
  display: flex;
225
227
  align-items: center;
226
- gap: var(--smrt-spacing-2, 8px);
228
+ gap: var(--smrt-spacing-2);
227
229
  width: 100%;
228
- padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-3, 12px);
230
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
229
231
  border: none;
230
- background: var(--smrt-color-surface-container-low, #f7f7fb);
232
+ background: var(--smrt-color-surface-container-low);
231
233
  cursor: pointer;
232
234
  text-align: left;
233
- color: var(--smrt-color-on-surface, #1a1c1e);
235
+ color: var(--smrt-color-on-surface);
234
236
  font: inherit;
235
237
  transition: background var(--smrt-duration-short2, 150ms);
236
238
  }
237
239
 
238
240
  .tool-call__header:hover {
239
- background: var(--smrt-color-surface-container, #f0f0f4);
241
+ background: var(--smrt-color-surface-container);
240
242
  }
241
243
 
242
244
  .tool-call__header:focus-visible {
243
- outline: 2px solid var(--smrt-color-primary, #005ac1);
245
+ outline: 2px solid var(--smrt-color-primary);
244
246
  outline-offset: -2px;
245
247
  }
246
248
 
247
249
  .tool-call__status-dot {
248
250
  width: 8px;
249
251
  height: 8px;
250
- border-radius: var(--smrt-radius-full, 9999px);
252
+ border-radius: var(--smrt-radius-full);
251
253
  flex-shrink: 0;
252
254
  }
253
255
 
254
256
  .tool-call--pending .tool-call__status-dot {
255
- background: var(--smrt-color-outline, #74777f);
257
+ background: var(--smrt-color-outline);
256
258
  }
257
259
 
258
260
  .tool-call--running .tool-call__status-dot {
259
- background: var(--smrt-color-primary, #005ac1);
261
+ background: var(--smrt-color-primary);
260
262
  animation: pulse 1.5s ease-in-out infinite;
261
263
  }
262
264
 
263
265
  .tool-call--success .tool-call__status-dot {
264
- background: var(--smrt-color-success, #1e8e3e);
266
+ background: var(--smrt-color-success);
265
267
  }
266
268
 
267
269
  .tool-call--error .tool-call__status-dot {
268
- background: var(--smrt-color-error, #b3261e);
270
+ background: var(--smrt-color-error);
269
271
  }
270
272
 
271
273
  .tool-call--awaiting-confirmation .tool-call__status-dot {
272
- background: var(--smrt-color-tertiary, #7d5260);
274
+ background: var(--smrt-color-tertiary);
273
275
  }
274
276
 
275
277
  .tool-call--applied .tool-call__status-dot {
276
- background: var(--smrt-color-success, #1e8e3e);
278
+ background: var(--smrt-color-success);
277
279
  }
278
280
 
279
281
  .tool-call__applied-fallback {
280
282
  margin: 0;
281
283
  font: var(--smrt-typography-body-small-font, 0.8125rem/1.4 sans-serif);
282
- color: var(--smrt-color-on-surface-variant, #43474e);
284
+ color: var(--smrt-color-on-surface-variant);
283
285
  }
284
286
 
285
287
  .tool-call__name {
@@ -295,22 +297,22 @@ function formatDuration(ms: number | undefined): string {
295
297
  .tool-call__header-right {
296
298
  display: flex;
297
299
  align-items: center;
298
- gap: var(--smrt-spacing-2, 8px);
300
+ gap: var(--smrt-spacing-2);
299
301
  flex-shrink: 0;
300
302
  }
301
303
 
302
304
  .tool-call__duration {
303
305
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
304
- color: var(--smrt-color-outline, #74777f);
306
+ color: var(--smrt-color-outline);
305
307
  }
306
308
 
307
309
  .tool-call__status-label {
308
310
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
309
- color: var(--smrt-color-on-surface-variant, #43474e);
311
+ color: var(--smrt-color-on-surface-variant);
310
312
  }
311
313
 
312
314
  .tool-call__chevron {
313
- color: var(--smrt-color-on-surface-variant, #43474e);
315
+ color: var(--smrt-color-on-surface-variant);
314
316
  transition: transform var(--smrt-duration-short2, 150ms);
315
317
  }
316
318
 
@@ -319,33 +321,33 @@ function formatDuration(ms: number | undefined): string {
319
321
  }
320
322
 
321
323
  .tool-call__body {
322
- padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-3, 12px) var(--smrt-spacing-3, 12px);
324
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3) var(--smrt-spacing-3);
323
325
  display: flex;
324
326
  flex-direction: column;
325
- gap: var(--smrt-spacing-2, 8px);
326
- border-top: 1px solid var(--smrt-color-outline-variant, #c4c6d0);
327
- background: var(--smrt-color-surface, #fefbff);
327
+ gap: var(--smrt-spacing-2);
328
+ border-top: 1px solid var(--smrt-color-outline-variant);
329
+ background: var(--smrt-color-surface);
328
330
  }
329
331
 
330
332
  .tool-call__section {
331
333
  display: flex;
332
334
  flex-direction: column;
333
- gap: var(--smrt-spacing-1, 4px);
335
+ gap: var(--smrt-spacing-1);
334
336
  }
335
337
 
336
338
  .tool-call__section-label {
337
339
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
338
- color: var(--smrt-color-on-surface-variant, #43474e);
340
+ color: var(--smrt-color-on-surface-variant);
339
341
  text-transform: uppercase;
340
- letter-spacing: var(--smrt-typography-label-small-tracking, 0.5px);
342
+ letter-spacing: var(--smrt-typography-label-small-tracking);
341
343
  }
342
344
 
343
345
  .tool-call__json {
344
346
  margin: 0;
345
- padding: var(--smrt-spacing-2, 8px);
346
- border-radius: var(--smrt-radius-small, 4px);
347
- background: var(--smrt-color-surface-container-low, #f7f7fb);
348
- color: var(--smrt-color-on-surface, #1a1c1e);
347
+ padding: var(--smrt-spacing-2);
348
+ border-radius: var(--smrt-radius-small);
349
+ background: var(--smrt-color-surface-container-low);
350
+ color: var(--smrt-color-on-surface);
349
351
  font-family: var(--smrt-font-family-mono, 'SF Mono', 'Fira Code', 'Cascadia Code', monospace);
350
352
  font-size: var(--smrt-typography-body-small-size, 0.75rem);
351
353
  line-height: var(--smrt-typography-body-small-line-height, 1.5);
@@ -357,30 +359,30 @@ function formatDuration(ms: number | undefined): string {
357
359
  }
358
360
 
359
361
  .tool-call__json--result {
360
- background: var(--smrt-color-success-container, #f1f8e9);
361
- color: var(--smrt-color-on-success-container, #33691e);
362
+ background: var(--smrt-color-success-container);
363
+ color: var(--smrt-color-on-success-container);
362
364
  }
363
365
 
364
366
  .tool-call__json--error {
365
- background: var(--smrt-color-error-container, #ffdad6);
366
- color: var(--smrt-color-on-error-container, #410002);
367
+ background: var(--smrt-color-error-container);
368
+ color: var(--smrt-color-on-error-container);
367
369
  }
368
370
 
369
371
  .tool-call__running {
370
372
  display: flex;
371
373
  align-items: center;
372
- gap: var(--smrt-spacing-2, 8px);
373
- padding: var(--smrt-spacing-2, 8px);
374
+ gap: var(--smrt-spacing-2);
375
+ padding: var(--smrt-spacing-2);
374
376
  font: var(--smrt-typography-body-small-font, 0.8125rem/1.4 sans-serif);
375
- color: var(--smrt-color-primary, #005ac1);
377
+ color: var(--smrt-color-primary);
376
378
  }
377
379
 
378
380
  .tool-call__spinner {
379
381
  width: 16px;
380
382
  height: 16px;
381
- border: 2px solid var(--smrt-color-primary-container, #d6e3ff);
382
- border-top-color: var(--smrt-color-primary, #005ac1);
383
- border-radius: var(--smrt-radius-full, 9999px);
383
+ border: 2px solid var(--smrt-color-primary-container);
384
+ border-top-color: var(--smrt-color-primary);
385
+ border-radius: var(--smrt-radius-full);
384
386
  animation: spin 0.8s linear infinite;
385
387
  }
386
388
 
@@ -407,11 +409,12 @@ function formatDuration(ms: number | undefined): string {
407
409
 
408
410
  .tool-call__spinner {
409
411
  animation: none;
410
- border-top-color: var(--smrt-color-primary, #005ac1);
412
+ border-top-color: var(--smrt-color-primary);
411
413
  }
412
414
 
413
415
  .tool-call--running .tool-call__status-dot {
414
416
  animation: none;
415
417
  }
416
418
  }
419
+ }
417
420
  </style>
@@ -75,7 +75,7 @@ const { t } = useI18n();
75
75
  role="group"
76
76
  aria-label={set.title}
77
77
  aria-busy={making ? 'true' : undefined}
78
- onkeydown={(event) => onkeydown(event, set)}
78
+ onkeydown={(event) => onkeydown(event, set)} data-smrt-component="AssistantChoiceCards"
79
79
  >
80
80
  <p class="assistant-dock-choices-title">{set.title}</p>
81
81
  {#if making}
@@ -168,14 +168,16 @@ const { t } = useI18n();
168
168
  {/each}
169
169
 
170
170
  <style>
171
+ @layer smrt.reset, smrt.structure, smrt.theme;
172
+ @layer smrt.theme {
171
173
  .assistant-dock-choices {
172
174
  display: grid;
173
175
  gap: 0.5rem;
174
176
  margin: 0.5rem 0;
175
177
  padding: 0.75rem;
176
- border: 1px solid var(--smrt-color-outline-variant, #c4c6cf);
178
+ border: 1px solid var(--smrt-color-outline-variant);
177
179
  border-radius: 0.75rem;
178
- background: var(--smrt-color-surface-container-low, #f7f7fb);
180
+ background: var(--smrt-color-surface-container-low);
179
181
  }
180
182
 
181
183
  .assistant-dock-choices-title {
@@ -199,10 +201,10 @@ const { t } = useI18n();
199
201
  width: 100%;
200
202
  min-height: 44px;
201
203
  padding: 0.35rem;
202
- border: 2px solid var(--smrt-color-outline-variant, #c4c6cf);
204
+ border: 2px solid var(--smrt-color-outline-variant);
203
205
  border-radius: 0.6rem;
204
- background: var(--smrt-color-surface, #fff);
205
- color: var(--smrt-color-on-surface, #1a1c1e);
206
+ background: var(--smrt-color-surface);
207
+ color: var(--smrt-color-on-surface);
206
208
  font: inherit;
207
209
  text-align: left;
208
210
  cursor: pointer;
@@ -210,12 +212,12 @@ const { t } = useI18n();
210
212
 
211
213
  .assistant-dock-choice:hover:not(:disabled),
212
214
  .assistant-dock-choice:focus-visible {
213
- border-color: var(--smrt-color-primary, #3558d6);
215
+ border-color: var(--smrt-color-primary);
214
216
  }
215
217
 
216
218
  .assistant-dock-choice.chosen {
217
- border-color: var(--smrt-color-primary, #3558d6);
218
- background: var(--smrt-color-primary-container, #dde3ff);
219
+ border-color: var(--smrt-color-primary);
220
+ background: var(--smrt-color-primary-container);
219
221
  }
220
222
 
221
223
  .assistant-dock-choice:disabled:not(.chosen) {
@@ -228,7 +230,7 @@ const { t } = useI18n();
228
230
  aspect-ratio: 4 / 3;
229
231
  object-fit: cover;
230
232
  border-radius: 0.4rem;
231
- background: var(--smrt-color-surface-container, #eceef4);
233
+ background: var(--smrt-color-surface-container);
232
234
  }
233
235
 
234
236
  .assistant-dock-choice-label {
@@ -237,7 +239,7 @@ const { t } = useI18n();
237
239
  }
238
240
 
239
241
  .assistant-dock-choice-description {
240
- color: var(--smrt-color-on-surface-variant, #44474e);
242
+ color: var(--smrt-color-on-surface-variant);
241
243
  font-size: var(--smrt-typography-body-small-size, 0.78rem);
242
244
  }
243
245
 
@@ -255,7 +257,7 @@ const { t } = useI18n();
255
257
  position: sticky;
256
258
  inset-block-end: 0;
257
259
  padding-block: 0.25rem;
258
- background: var(--smrt-color-surface-container-low, #f7f7fb);
260
+ background: var(--smrt-color-surface-container-low);
259
261
  }
260
262
 
261
263
  .assistant-dock-choices-commit :global(button) {
@@ -272,7 +274,7 @@ const { t } = useI18n();
272
274
  }
273
275
 
274
276
  .assistant-dock-choices-error {
275
- color: var(--smrt-color-error, #b3261e);
277
+ color: var(--smrt-color-error);
276
278
  }
277
279
 
278
280
  .assistant-dock-choice-pending {
@@ -281,16 +283,16 @@ const { t } = useI18n();
281
283
  align-content: start;
282
284
  min-height: 44px;
283
285
  padding: 0.35rem;
284
- border: 2px dashed var(--smrt-color-outline-variant, #c4c6cf);
286
+ border: 2px dashed var(--smrt-color-outline-variant);
285
287
  border-radius: 0.6rem;
286
- color: var(--smrt-color-on-surface-variant, #44474e);
288
+ color: var(--smrt-color-on-surface-variant);
287
289
  }
288
290
 
289
291
  .assistant-dock-choice-placeholder {
290
292
  width: 100%;
291
293
  aspect-ratio: 4 / 3;
292
294
  border-radius: 0.4rem;
293
- background: var(--smrt-color-surface-container, #eceef4);
295
+ background: var(--smrt-color-surface-container);
294
296
  animation: assistant-dock-choice-pulse 1.4s ease-in-out infinite;
295
297
  }
296
298
 
@@ -305,5 +307,5 @@ const { t } = useI18n();
305
307
  animation: none;
306
308
  }
307
309
  }
308
-
310
+ }
309
311
  </style>