@happyvertical/smrt-chat 0.34.4 → 0.34.6
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.
- package/dist/manifest.json +2 -2
- package/dist/smrt-knowledge.json +4 -4
- package/dist/svelte/components/agent/AgentChat.svelte +23 -26
- package/dist/svelte/components/agent/AgentChat.svelte.d.ts.map +1 -1
- package/dist/svelte/components/agent/AgentSelector.svelte +1 -0
- package/dist/svelte/components/agent/AgentSelector.svelte.d.ts.map +1 -1
- package/dist/svelte/components/agent/AgentSessionPanel.svelte +15 -16
- package/dist/svelte/components/agent/AgentSessionPanel.svelte.d.ts.map +1 -1
- package/dist/svelte/components/agent/ToolCallDisplay.svelte +1 -0
- package/dist/svelte/components/agent/ToolCallDisplay.svelte.d.ts.map +1 -1
- package/dist/svelte/components/dialogs/RoomCreateDialog.svelte +9 -44
- package/dist/svelte/components/dialogs/RoomCreateDialog.svelte.d.ts.map +1 -1
- package/dist/svelte/components/dialogs/SearchMessages.svelte +23 -24
- package/dist/svelte/components/dialogs/SearchMessages.svelte.d.ts.map +1 -1
- package/dist/svelte/components/layout/ChatLayout.svelte +1 -0
- package/dist/svelte/components/layout/ChatLayout.svelte.d.ts.map +1 -1
- package/dist/svelte/components/layout/MemberList.svelte +10 -15
- package/dist/svelte/components/layout/MemberList.svelte.d.ts.map +1 -1
- package/dist/svelte/components/layout/RoomHeader.svelte +13 -16
- package/dist/svelte/components/layout/RoomHeader.svelte.d.ts.map +1 -1
- package/dist/svelte/components/layout/RoomList.svelte +26 -17
- package/dist/svelte/components/layout/RoomList.svelte.d.ts.map +1 -1
- package/dist/svelte/components/messages/MessageInput.svelte +17 -20
- package/dist/svelte/components/messages/MessageInput.svelte.d.ts.map +1 -1
- package/dist/svelte/components/messages/MessageItem.svelte +45 -40
- package/dist/svelte/components/messages/MessageItem.svelte.d.ts.map +1 -1
- package/dist/svelte/components/messages/ThreadPanel.svelte +9 -9
- package/dist/svelte/components/messages/ThreadPanel.svelte.d.ts.map +1 -1
- package/dist/svelte/components/shared/FileUpload.svelte +22 -54
- package/dist/svelte/components/shared/FileUpload.svelte.d.ts.map +1 -1
- package/dist/svelte/components/shared/MentionAutocomplete.svelte +1 -0
- package/dist/svelte/components/shared/MentionAutocomplete.svelte.d.ts.map +1 -1
- package/dist/svelte/components/shared/ReactionPicker.svelte +8 -21
- package/dist/svelte/components/shared/ReactionPicker.svelte.d.ts.map +1 -1
- package/dist/svelte/components/tabs/ChatTab.svelte +20 -18
- package/dist/svelte/components/tabs/ChatTab.svelte.d.ts.map +1 -1
- package/dist/svelte/components/tabs/ChatTabList.svelte +13 -10
- package/dist/svelte/components/tabs/ChatTabList.svelte.d.ts.map +1 -1
- package/dist/svelte/components/tabs/MiniChat.svelte +11 -17
- package/dist/svelte/components/tabs/MiniChat.svelte.d.ts.map +1 -1
- package/package.json +9 -8
package/dist/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "1.0.0",
|
|
3
|
-
"timestamp":
|
|
3
|
+
"timestamp": 1782278483770,
|
|
4
4
|
"packageName": "@happyvertical/smrt-chat",
|
|
5
|
-
"packageVersion": "0.34.
|
|
5
|
+
"packageVersion": "0.34.6",
|
|
6
6
|
"objects": {
|
|
7
7
|
"@happyvertical/smrt-chat:AgentSessionCollection": {
|
|
8
8
|
"name": "agentsessioncollection",
|
package/dist/smrt-knowledge.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"generatedAt": "2026-06-
|
|
3
|
+
"generatedAt": "2026-06-24T05:21:24.161Z",
|
|
4
4
|
"packageName": "@happyvertical/smrt-chat",
|
|
5
|
-
"packageVersion": "0.34.
|
|
5
|
+
"packageVersion": "0.34.6",
|
|
6
6
|
"sourceManifestPath": "dist/manifest.json",
|
|
7
7
|
"agentDocPath": "AGENTS.md",
|
|
8
8
|
"sourceHashes": {
|
|
9
|
-
"manifest": "
|
|
10
|
-
"packageJson": "
|
|
9
|
+
"manifest": "2975e8cc9d58e5960d1d59de3dc09523b44a85d6af43e7fbef3e9c03f695b2d9",
|
|
10
|
+
"packageJson": "5fbeb77ade984295729f043140c7db7b16609c4c5ef9333f04af4df283a14f15",
|
|
11
11
|
"agents": "e0a8c6788fbd48c2619a353295d4538e9ff6863d483bcd354af522fb7c6a31bc"
|
|
12
12
|
},
|
|
13
13
|
"exports": [
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
9
|
+
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
9
10
|
import { M } from '../../i18n.js';
|
|
10
11
|
import type {
|
|
11
12
|
AgentSessionData,
|
|
@@ -106,7 +107,8 @@ $effect(() => {
|
|
|
106
107
|
disabled={!isActive}
|
|
107
108
|
aria-label={t(M['chat.agent_chat.message_input'])}
|
|
108
109
|
></textarea>
|
|
109
|
-
<
|
|
110
|
+
<Button
|
|
111
|
+
variant="ghost"
|
|
110
112
|
class="agent-chat__send-btn"
|
|
111
113
|
type="submit"
|
|
112
114
|
disabled={!inputValue.trim() || !isActive}
|
|
@@ -115,7 +117,7 @@ $effect(() => {
|
|
|
115
117
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
|
|
116
118
|
<path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" />
|
|
117
119
|
</svg>
|
|
118
|
-
</
|
|
120
|
+
</Button>
|
|
119
121
|
{/if}
|
|
120
122
|
</form>
|
|
121
123
|
|
|
@@ -151,19 +153,21 @@ $effect(() => {
|
|
|
151
153
|
{:else if block.type === 'fields'}
|
|
152
154
|
<div class="field-update-block">
|
|
153
155
|
<span class="applied-badge">{t(M['chat.agent_chat.updated_fields'], { count: Object.keys(block.fields).length, plural: Object.keys(block.fields).length !== 1 ? 's' : '' })}</span>
|
|
154
|
-
<
|
|
156
|
+
<Button variant="ghost" size="sm" class="diff-btn" type="button" onclick={() => showDiff(block.fields)}>Diff</Button>
|
|
155
157
|
</div>
|
|
156
158
|
{:else if block.type === 'markdown'}
|
|
157
159
|
<div class="markdown-block">
|
|
158
160
|
<pre class="markdown-block__content"><code>{block.content}</code></pre>
|
|
159
161
|
{#if onapplychange}
|
|
160
|
-
<
|
|
162
|
+
<Button
|
|
163
|
+
variant="ghost"
|
|
164
|
+
size="sm"
|
|
161
165
|
class="diff-btn"
|
|
162
166
|
type="button"
|
|
163
167
|
onclick={() => onapplychange(block.content)}
|
|
164
168
|
>
|
|
165
169
|
Apply
|
|
166
|
-
</
|
|
170
|
+
</Button>
|
|
167
171
|
{/if}
|
|
168
172
|
</div>
|
|
169
173
|
{/if}
|
|
@@ -198,7 +202,7 @@ $effect(() => {
|
|
|
198
202
|
<dialog bind:this={diffDialog} class="diff-dialog">
|
|
199
203
|
<div class="diff-dialog__header">
|
|
200
204
|
<h4>{t(M['chat.agent_chat.field_changes'])}</h4>
|
|
201
|
-
<
|
|
205
|
+
<Button variant="ghost" size="sm" class="diff-dialog__close" type="button" onclick={closeDiff}>✕</Button>
|
|
202
206
|
</div>
|
|
203
207
|
{#if diffDialogFields}
|
|
204
208
|
<div class="diff-dialog__body">
|
|
@@ -349,27 +353,20 @@ $effect(() => {
|
|
|
349
353
|
color: var(--smrt-color-outline, #74777f);
|
|
350
354
|
}
|
|
351
355
|
|
|
352
|
-
.
|
|
353
|
-
|
|
354
|
-
align-items: center;
|
|
355
|
-
justify-content: center;
|
|
356
|
+
/* :global() pierces into the Button child's rendered <button> (see #1589). */
|
|
357
|
+
.agent-chat__input-bar :global(.agent-chat__send-btn) {
|
|
356
358
|
width: 34px;
|
|
357
359
|
height: 34px;
|
|
358
|
-
|
|
360
|
+
padding: 0;
|
|
359
361
|
background: var(--smrt-color-primary, #005ac1);
|
|
360
362
|
color: var(--smrt-color-on-primary, #ffffff);
|
|
361
363
|
border-radius: var(--smrt-radius-full, 9999px);
|
|
362
|
-
cursor: pointer;
|
|
363
364
|
flex-shrink: 0;
|
|
364
365
|
transition: opacity 150ms;
|
|
365
366
|
}
|
|
366
367
|
|
|
367
|
-
.agent-chat__send-btn:disabled {
|
|
368
|
-
|
|
369
|
-
cursor: not-allowed;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
.agent-chat__send-btn:not(:disabled):hover {
|
|
368
|
+
.agent-chat__input-bar :global(.agent-chat__send-btn:not(:disabled):hover) {
|
|
369
|
+
background: var(--smrt-color-primary, #005ac1);
|
|
373
370
|
opacity: 0.85;
|
|
374
371
|
}
|
|
375
372
|
|
|
@@ -411,7 +408,9 @@ $effect(() => {
|
|
|
411
408
|
line-height: var(--smrt-typography-body-medium-line-height, 1.45);
|
|
412
409
|
}
|
|
413
410
|
|
|
414
|
-
.
|
|
411
|
+
/* :global() pierces into each Button's rendered <button> (see #1589). */
|
|
412
|
+
.field-update-block :global(.diff-btn),
|
|
413
|
+
.markdown-block :global(.diff-btn) {
|
|
415
414
|
padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
|
|
416
415
|
font-size: var(--smrt-typography-label-small-size, 0.625rem);
|
|
417
416
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
@@ -419,11 +418,10 @@ $effect(() => {
|
|
|
419
418
|
border-radius: var(--smrt-radius-full, 9999px);
|
|
420
419
|
background: none;
|
|
421
420
|
color: var(--smrt-color-on-surface-variant, #43474e);
|
|
422
|
-
cursor: pointer;
|
|
423
|
-
transition: background 0.15s;
|
|
424
421
|
}
|
|
425
422
|
|
|
426
|
-
.diff-btn:hover
|
|
423
|
+
.field-update-block :global(.diff-btn:hover),
|
|
424
|
+
.markdown-block :global(.diff-btn:hover) {
|
|
427
425
|
background: var(--smrt-color-surface-variant, #e1e2ec);
|
|
428
426
|
color: var(--smrt-color-primary, #005ac1);
|
|
429
427
|
}
|
|
@@ -457,17 +455,16 @@ $effect(() => {
|
|
|
457
455
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
458
456
|
}
|
|
459
457
|
|
|
460
|
-
.
|
|
458
|
+
/* :global() pierces into the Button child's rendered <button> (see #1589). */
|
|
459
|
+
.diff-dialog__header :global(.diff-dialog__close) {
|
|
461
460
|
background: none;
|
|
462
|
-
border: none;
|
|
463
461
|
font-size: var(--smrt-typography-body-large-size, 1rem);
|
|
464
|
-
cursor: pointer;
|
|
465
462
|
color: var(--smrt-color-outline, #74777f);
|
|
466
463
|
padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
|
|
467
464
|
border-radius: var(--smrt-radius-sm, 4px);
|
|
468
465
|
}
|
|
469
466
|
|
|
470
|
-
.diff-dialog__close:hover {
|
|
467
|
+
.diff-dialog__header :global(.diff-dialog__close:hover) {
|
|
471
468
|
background: var(--smrt-color-surface-variant, #e1e2ec);
|
|
472
469
|
}
|
|
473
470
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentChat.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/AgentChat.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentChat.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/AgentChat.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAMxB,MAAM,WAAW,KAAK;IACpB,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAyKD,QAAA,MAAM,SAAS,2CAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|
|
@@ -26,6 +26,7 @@ const { t } = useI18n();
|
|
|
26
26
|
|
|
27
27
|
<div class="agent-selector__grid" role="listbox" aria-label={t(M['chat.agent_selector.available_agents'])}>
|
|
28
28
|
{#each agents as agent (agent.id)}
|
|
29
|
+
<!-- raw-primitive-allow: large pressable selection card with role=option wrapping rich content (avatar, name, description, unavailable badge) inside a role=listbox; no Button primitive owns this structural listbox-option pattern -->
|
|
29
30
|
<button
|
|
30
31
|
class="agent-selector__card"
|
|
31
32
|
class:agent-selector__card--unavailable={!agent.isAvailable}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSelector.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/AgentSelector.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,uBAAuB;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"AgentSelector.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/AgentSelector.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,uBAAuB;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,sBAAsB;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AA8CD,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Allows selecting an existing session or creating a new one.
|
|
6
6
|
*/
|
|
7
7
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
8
|
+
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
8
9
|
import { M } from '../../i18n.js';
|
|
9
10
|
import type { AgentSessionData } from '../../types.js';
|
|
10
11
|
import Avatar from '../shared/Avatar.svelte';
|
|
@@ -49,7 +50,8 @@ const statusLabel: Record<string, string> = {
|
|
|
49
50
|
<div class="session-panel__header">
|
|
50
51
|
<h2 class="session-panel__title">Sessions</h2>
|
|
51
52
|
{#if onnewsession}
|
|
52
|
-
<
|
|
53
|
+
<Button
|
|
54
|
+
variant="ghost"
|
|
53
55
|
class="session-panel__new-btn"
|
|
54
56
|
type="button"
|
|
55
57
|
onclick={onnewsession}
|
|
@@ -59,13 +61,14 @@ const statusLabel: Record<string, string> = {
|
|
|
59
61
|
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
|
|
60
62
|
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
|
|
61
63
|
</svg>
|
|
62
|
-
</
|
|
64
|
+
</Button>
|
|
63
65
|
{/if}
|
|
64
66
|
</div>
|
|
65
67
|
|
|
66
68
|
<div class="session-panel__list" role="listbox" aria-label={t(M['chat.agent_session_panel.session_list'])}>
|
|
67
69
|
{#each sessions as session (session.id)}
|
|
68
70
|
{@const isCurrent = session.id === currentSessionId}
|
|
71
|
+
<!-- raw-primitive-allow: large pressable selection card with role=option wrapping rich content (avatar, name, date, status, message count, tool chips) inside a role=listbox; no Button primitive owns this structural listbox-option pattern -->
|
|
69
72
|
<button
|
|
70
73
|
class="session-panel__item"
|
|
71
74
|
class:session-panel__item--active={isCurrent}
|
|
@@ -152,29 +155,22 @@ const statusLabel: Record<string, string> = {
|
|
|
152
155
|
margin: 0;
|
|
153
156
|
}
|
|
154
157
|
|
|
155
|
-
.
|
|
156
|
-
|
|
157
|
-
align-items: center;
|
|
158
|
-
justify-content: center;
|
|
158
|
+
/* :global() pierces into the Button child's rendered <button> (see #1589). */
|
|
159
|
+
.session-panel__header :global(.session-panel__new-btn) {
|
|
159
160
|
width: 36px;
|
|
160
161
|
height: 36px;
|
|
161
|
-
|
|
162
|
+
padding: 0;
|
|
162
163
|
background: var(--smrt-color-primary, #005ac1);
|
|
163
164
|
color: var(--smrt-color-on-primary, #ffffff);
|
|
164
165
|
border-radius: var(--smrt-radius-full, 9999px);
|
|
165
|
-
cursor: pointer;
|
|
166
166
|
transition: opacity var(--smrt-duration-short2, 150ms);
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
.session-panel__new-btn:hover {
|
|
169
|
+
.session-panel__header :global(.session-panel__new-btn:hover) {
|
|
170
|
+
background: var(--smrt-color-primary, #005ac1);
|
|
170
171
|
opacity: 0.85;
|
|
171
172
|
}
|
|
172
173
|
|
|
173
|
-
.session-panel__new-btn:focus-visible {
|
|
174
|
-
outline: 2px solid var(--smrt-color-primary, #005ac1);
|
|
175
|
-
outline-offset: 2px;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
174
|
.session-panel__list {
|
|
179
175
|
flex: 1;
|
|
180
176
|
overflow-y: auto;
|
|
@@ -314,8 +310,11 @@ const statusLabel: Record<string, string> = {
|
|
|
314
310
|
}
|
|
315
311
|
|
|
316
312
|
@media (prefers-reduced-motion: reduce) {
|
|
317
|
-
.session-panel__item
|
|
318
|
-
|
|
313
|
+
.session-panel__item {
|
|
314
|
+
transition: none;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.session-panel__header :global(.session-panel__new-btn) {
|
|
319
318
|
transition: none;
|
|
320
319
|
}
|
|
321
320
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentSessionPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/AgentSessionPanel.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentSessionPanel.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/AgentSessionPanel.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,WAAW,KAAK;IACpB,yBAAyB;IACzB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB;IACvB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAmGD,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|
|
@@ -50,6 +50,7 @@ function formatDuration(ms: number | undefined): string {
|
|
|
50
50
|
</script>
|
|
51
51
|
|
|
52
52
|
<div class="tool-call tool-call--{toolCall.status}" aria-label={t(M['chat.tool_call_display.tool_call'], { toolName: toolCall.toolName })}>
|
|
53
|
+
<!-- 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 -->
|
|
53
54
|
<button
|
|
54
55
|
class="tool-call__header"
|
|
55
56
|
type="button"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolCallDisplay.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/ToolCallDisplay.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,KAAK;IACpB,qBAAqB;IACrB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"ToolCallDisplay.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/agent/ToolCallDisplay.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,KAAK;IACpB,qBAAqB;IACrB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAmGD,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Modal } from '@happyvertical/smrt-ui/feedback';
|
|
11
11
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
12
|
+
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
12
13
|
import { M } from '../../i18n.js';
|
|
13
14
|
|
|
14
15
|
const { t } = useI18n();
|
|
@@ -153,25 +154,26 @@ $effect(() => {
|
|
|
153
154
|
</div>
|
|
154
155
|
|
|
155
156
|
<!-- Hidden submit keeps Enter-to-submit working inside the Modal body. -->
|
|
157
|
+
<!-- raw-primitive-allow: off-screen aria-hidden type=submit element with tabindex=-1 used only to enable native Enter-to-submit inside the Modal body; intentionally non-interactive and not a visible action button -->
|
|
156
158
|
<button type="submit" class="visually-hidden" tabindex="-1" disabled={!canCreate} aria-hidden="true"></button>
|
|
157
159
|
</form>
|
|
158
160
|
|
|
159
161
|
{#snippet footer()}
|
|
160
|
-
<
|
|
162
|
+
<Button
|
|
163
|
+
variant="secondary"
|
|
161
164
|
type="button"
|
|
162
|
-
class="btn btn--secondary"
|
|
163
165
|
onclick={handleClose}
|
|
164
166
|
>
|
|
165
167
|
Cancel
|
|
166
|
-
</
|
|
167
|
-
<
|
|
168
|
+
</Button>
|
|
169
|
+
<Button
|
|
170
|
+
variant="primary"
|
|
168
171
|
type="button"
|
|
169
|
-
class="btn btn--primary"
|
|
170
172
|
disabled={!canCreate}
|
|
171
173
|
onclick={handleSubmit}
|
|
172
174
|
>
|
|
173
175
|
{t(M['chat.room_create_dialog.create_room'])}
|
|
174
|
-
</
|
|
176
|
+
</Button>
|
|
175
177
|
{/snippet}
|
|
176
178
|
</Modal>
|
|
177
179
|
|
|
@@ -301,45 +303,8 @@ $effect(() => {
|
|
|
301
303
|
color: var(--smrt-color-on-surface-variant, #43474e);
|
|
302
304
|
}
|
|
303
305
|
|
|
304
|
-
.btn {
|
|
305
|
-
display: inline-flex;
|
|
306
|
-
align-items: center;
|
|
307
|
-
justify-content: center;
|
|
308
|
-
padding: 0.625rem 1.5rem;
|
|
309
|
-
font: var(--smrt-typography-label-large-font, 500 0.875rem / 1.25 sans-serif);
|
|
310
|
-
letter-spacing: 0.1px;
|
|
311
|
-
border-radius: var(--smrt-radius-full, 9999px);
|
|
312
|
-
border: none;
|
|
313
|
-
cursor: pointer;
|
|
314
|
-
transition: all var(--smrt-duration-short2, 150ms) var(--smrt-easing-standard, ease);
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.btn:disabled {
|
|
318
|
-
opacity: 0.38;
|
|
319
|
-
cursor: not-allowed;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
.btn--primary {
|
|
323
|
-
background: var(--smrt-color-primary, #005ac1);
|
|
324
|
-
color: var(--smrt-color-on-primary, #fff);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
.btn--primary:hover:not(:disabled) {
|
|
328
|
-
box-shadow: var(--smrt-elevation-1, 0 1px 2px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.15));
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
.btn--secondary {
|
|
332
|
-
background: transparent;
|
|
333
|
-
color: var(--smrt-color-primary, #005ac1);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
.btn--secondary:hover:not(:disabled) {
|
|
337
|
-
background: color-mix(in srgb, var(--smrt-color-primary, #005ac1) 8%, transparent);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
306
|
@media (prefers-reduced-motion: reduce) {
|
|
341
|
-
.type-option
|
|
342
|
-
.btn {
|
|
307
|
+
.type-option {
|
|
343
308
|
transition: none;
|
|
344
309
|
}
|
|
345
310
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoomCreateDialog.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/dialogs/RoomCreateDialog.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RoomCreateDialog.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/dialogs/RoomCreateDialog.svelte.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,KAAK;IACpB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oCAAoC;IACpC,QAAQ,EAAE,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,KAAK,IAAI,CAAC;CACZ;AA0HD,QAAA,MAAM,gBAAgB,2CAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Provides a search input and displays matching messages
|
|
5
5
|
*/
|
|
6
6
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
7
|
+
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
7
8
|
import { M } from '../../i18n.js';
|
|
8
9
|
import type { ChatMessageData } from '../../types.js';
|
|
9
10
|
|
|
@@ -108,7 +109,9 @@ $effect(() => {
|
|
|
108
109
|
>
|
|
109
110
|
<div class="search-panel__header">
|
|
110
111
|
<h2 class="search-panel__title">{t(M['chat.search_messages.title'])}</h2>
|
|
111
|
-
<
|
|
112
|
+
<Button
|
|
113
|
+
variant="ghost"
|
|
114
|
+
size="sm"
|
|
112
115
|
class="close-btn"
|
|
113
116
|
type="button"
|
|
114
117
|
onclick={handleClose}
|
|
@@ -118,7 +121,7 @@ $effect(() => {
|
|
|
118
121
|
<path d="M18 6 6 18" />
|
|
119
122
|
<path d="m6 6 12 12" />
|
|
120
123
|
</svg>
|
|
121
|
-
</
|
|
124
|
+
</Button>
|
|
122
125
|
</div>
|
|
123
126
|
|
|
124
127
|
<form
|
|
@@ -140,7 +143,9 @@ $effect(() => {
|
|
|
140
143
|
aria-label={t(M['chat.search_messages.query'])}
|
|
141
144
|
/>
|
|
142
145
|
{#if hasQuery}
|
|
143
|
-
<
|
|
146
|
+
<Button
|
|
147
|
+
variant="ghost"
|
|
148
|
+
size="sm"
|
|
144
149
|
class="clear-btn"
|
|
145
150
|
type="button"
|
|
146
151
|
onclick={() => { query = ''; searchInput?.focus(); }}
|
|
@@ -150,7 +155,7 @@ $effect(() => {
|
|
|
150
155
|
<path d="M18 6 6 18" />
|
|
151
156
|
<path d="m6 6 12 12" />
|
|
152
157
|
</svg>
|
|
153
|
-
</
|
|
158
|
+
</Button>
|
|
154
159
|
{/if}
|
|
155
160
|
</div>
|
|
156
161
|
</form>
|
|
@@ -163,6 +168,7 @@ $effect(() => {
|
|
|
163
168
|
<ul class="results-list" aria-label={t(M['chat.search_messages.results'])}>
|
|
164
169
|
{#each results as message (message.id)}
|
|
165
170
|
<li class="results-list__item">
|
|
171
|
+
<!-- raw-primitive-allow: large pressable search-result card wrapping rich content (avatar, sender, date, multi-line highlighted message excerpt); no Button primitive owns this structural selection-card pattern -->
|
|
166
172
|
<button
|
|
167
173
|
class="result-item"
|
|
168
174
|
type="button"
|
|
@@ -231,29 +237,21 @@ $effect(() => {
|
|
|
231
237
|
color: var(--smrt-color-on-surface, #1a1c1e);
|
|
232
238
|
}
|
|
233
239
|
|
|
234
|
-
.
|
|
235
|
-
|
|
236
|
-
align-items: center;
|
|
237
|
-
justify-content: center;
|
|
240
|
+
/* :global() pierces into the Button child's rendered <button> (see #1589). */
|
|
241
|
+
.search-panel__header :global(.close-btn) {
|
|
238
242
|
width: 1.75rem;
|
|
239
243
|
height: 1.75rem;
|
|
240
|
-
|
|
244
|
+
padding: 0;
|
|
241
245
|
background: none;
|
|
242
246
|
border-radius: var(--smrt-radius-medium, 0.5rem);
|
|
243
247
|
color: var(--smrt-color-on-surface-variant, #43474e);
|
|
244
|
-
cursor: pointer;
|
|
245
248
|
transition: background var(--smrt-duration-short2, 150ms);
|
|
246
249
|
}
|
|
247
250
|
|
|
248
|
-
.close-btn:hover {
|
|
251
|
+
.search-panel__header :global(.close-btn:hover) {
|
|
249
252
|
background: var(--smrt-color-surface-variant, #e1e2ec);
|
|
250
253
|
}
|
|
251
254
|
|
|
252
|
-
.close-btn:focus-visible {
|
|
253
|
-
outline: 2px solid var(--smrt-color-primary, #005ac1);
|
|
254
|
-
outline-offset: -2px;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
255
|
.close-btn__icon {
|
|
258
256
|
width: 1rem;
|
|
259
257
|
height: 1rem;
|
|
@@ -300,21 +298,19 @@ $effect(() => {
|
|
|
300
298
|
color: var(--smrt-color-on-surface-variant, #43474e);
|
|
301
299
|
}
|
|
302
300
|
|
|
303
|
-
.
|
|
301
|
+
/* :global() pierces into the Button child's rendered <button> (see #1589). */
|
|
302
|
+
.search-input-wrap :global(.clear-btn) {
|
|
304
303
|
flex-shrink: 0;
|
|
305
|
-
display: inline-flex;
|
|
306
|
-
align-items: center;
|
|
307
|
-
justify-content: center;
|
|
308
304
|
width: 1.25rem;
|
|
309
305
|
height: 1.25rem;
|
|
310
|
-
|
|
306
|
+
padding: 0;
|
|
311
307
|
background: none;
|
|
312
308
|
border-radius: var(--smrt-radius-full, 9999px);
|
|
313
309
|
color: var(--smrt-color-on-surface-variant, #43474e);
|
|
314
|
-
cursor: pointer;
|
|
315
310
|
}
|
|
316
311
|
|
|
317
|
-
.clear-btn:hover {
|
|
312
|
+
.search-input-wrap :global(.clear-btn:hover) {
|
|
313
|
+
background: none;
|
|
318
314
|
color: var(--smrt-color-on-surface, #1a1c1e);
|
|
319
315
|
}
|
|
320
316
|
|
|
@@ -448,10 +444,13 @@ $effect(() => {
|
|
|
448
444
|
}
|
|
449
445
|
|
|
450
446
|
@media (prefers-reduced-motion: reduce) {
|
|
451
|
-
.close-btn,
|
|
452
447
|
.result-item,
|
|
453
448
|
.search-input-wrap {
|
|
454
449
|
transition: none;
|
|
455
450
|
}
|
|
451
|
+
|
|
452
|
+
.search-panel__header :global(.close-btn) {
|
|
453
|
+
transition: none;
|
|
454
|
+
}
|
|
456
455
|
}
|
|
457
456
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchMessages.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/dialogs/SearchMessages.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SearchMessages.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/dialogs/SearchMessages.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,WAAW,KAAK;IACpB,uCAAuC;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qBAAqB;IACrB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,yCAAyC;IACzC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AA2KD,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -72,6 +72,7 @@ function handlePointerUp() {
|
|
|
72
72
|
/>
|
|
73
73
|
</aside>
|
|
74
74
|
|
|
75
|
+
<!-- raw-primitive-allow: custom drag-to-resize splitter with pointer capture (pointerdown/move/up) and ArrowLeft/ArrowRight keyboard resizing; a press-and-drag control no Button primitive owns -->
|
|
75
76
|
<button
|
|
76
77
|
type="button"
|
|
77
78
|
class="chat-layout__resize-handle"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatLayout.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/layout/ChatLayout.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,MAAM,WAAW,KAAK;IACpB,2BAA2B;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"ChatLayout.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/layout/ChatLayout.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,MAAM,WAAW,KAAK;IACpB,2BAA2B;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,iCAAiC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,wBAAwB;IACxB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAgED,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Lists participants grouped by online status with role badges
|
|
5
5
|
*/
|
|
6
6
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
7
|
+
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
7
8
|
import { M } from '../../i18n.messages.js';
|
|
8
9
|
import type { ChatParticipantData } from '../../types.js';
|
|
9
10
|
|
|
@@ -74,7 +75,9 @@ function getRoleBadgeLabel(role: string): string {
|
|
|
74
75
|
<div class="member-list__header">
|
|
75
76
|
<h2 class="member-list__title">Members</h2>
|
|
76
77
|
<span class="member-list__count">{participants.length}</span>
|
|
77
|
-
<
|
|
78
|
+
<Button
|
|
79
|
+
variant="ghost"
|
|
80
|
+
size="sm"
|
|
78
81
|
class="close-btn"
|
|
79
82
|
type="button"
|
|
80
83
|
onclick={onclose}
|
|
@@ -84,7 +87,7 @@ function getRoleBadgeLabel(role: string): string {
|
|
|
84
87
|
<path d="M18 6 6 18" />
|
|
85
88
|
<path d="m6 6 12 12" />
|
|
86
89
|
</svg>
|
|
87
|
-
</
|
|
90
|
+
</Button>
|
|
88
91
|
</div>
|
|
89
92
|
|
|
90
93
|
<div class="member-list__content">
|
|
@@ -235,30 +238,22 @@ function getRoleBadgeLabel(role: string): string {
|
|
|
235
238
|
color: var(--smrt-color-on-surface-variant, #43474e);
|
|
236
239
|
}
|
|
237
240
|
|
|
238
|
-
.
|
|
241
|
+
/* :global() pierces into the Button child's rendered <button> (see #1589). */
|
|
242
|
+
.member-list__header :global(.close-btn) {
|
|
239
243
|
margin-left: auto;
|
|
240
|
-
display: inline-flex;
|
|
241
|
-
align-items: center;
|
|
242
|
-
justify-content: center;
|
|
243
244
|
width: 1.75rem;
|
|
244
245
|
height: 1.75rem;
|
|
245
|
-
|
|
246
|
+
padding: 0;
|
|
246
247
|
background: none;
|
|
247
248
|
border-radius: var(--smrt-radius-medium, 0.5rem);
|
|
248
249
|
color: var(--smrt-color-on-surface-variant, #43474e);
|
|
249
|
-
cursor: pointer;
|
|
250
250
|
transition: background var(--smrt-duration-short2, 150ms);
|
|
251
251
|
}
|
|
252
252
|
|
|
253
|
-
.close-btn:hover {
|
|
253
|
+
.member-list__header :global(.close-btn:hover) {
|
|
254
254
|
background: var(--smrt-color-surface-variant, #e1e2ec);
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
.close-btn:focus-visible {
|
|
258
|
-
outline: 2px solid var(--smrt-color-primary, #005ac1);
|
|
259
|
-
outline-offset: -2px;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
257
|
.close-btn__icon {
|
|
263
258
|
width: 1rem;
|
|
264
259
|
height: 1rem;
|
|
@@ -384,7 +379,7 @@ function getRoleBadgeLabel(role: string): string {
|
|
|
384
379
|
}
|
|
385
380
|
|
|
386
381
|
@media (prefers-reduced-motion: reduce) {
|
|
387
|
-
.close-btn {
|
|
382
|
+
.member-list__header :global(.close-btn) {
|
|
388
383
|
transition: none;
|
|
389
384
|
}
|
|
390
385
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemberList.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/layout/MemberList.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemberList.svelte.d.ts","sourceRoot":"","sources":["../../../../src/svelte/components/layout/MemberList.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,KAAK;IACpB,wBAAwB;IACxB,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,yCAAyC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA2LD,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|