@nonoun/native-chat 0.1.3 → 0.2.1
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/avatar/chat-avatar-element.d.ts +18 -0
- package/dist/avatar/chat-avatar-element.d.ts.map +1 -0
- package/dist/avatar/index.d.ts +2 -0
- package/dist/avatar/index.d.ts.map +1 -0
- package/dist/avatar/n-chat-avatar.d.ts +2 -0
- package/dist/avatar/n-chat-avatar.d.ts.map +1 -0
- package/dist/chat-input-element.d.ts +10 -0
- package/dist/chat-input-element.d.ts.map +1 -1
- package/dist/chat-input-structured-element-CbDnI4zv.js +1069 -0
- package/dist/chat-panel-element.d.ts +28 -7
- package/dist/chat-panel-element.d.ts.map +1 -1
- package/dist/feed/chat-feed-element.d.ts +29 -0
- package/dist/feed/chat-feed-element.d.ts.map +1 -0
- package/dist/feed/index.d.ts +2 -0
- package/dist/feed/index.d.ts.map +1 -0
- package/dist/feed/n-chat-feed.d.ts +2 -0
- package/dist/feed/n-chat-feed.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/message/chat-input-structured-element.d.ts +43 -0
- package/dist/message/chat-input-structured-element.d.ts.map +1 -0
- package/dist/message/chat-message-activity-element.d.ts +32 -0
- package/dist/message/chat-message-activity-element.d.ts.map +1 -0
- package/dist/message/chat-message-element.d.ts +28 -0
- package/dist/message/chat-message-element.d.ts.map +1 -0
- package/dist/message/chat-message-genui-element.d.ts +45 -0
- package/dist/message/chat-message-genui-element.d.ts.map +1 -0
- package/dist/message/chat-message-seed-element.d.ts +33 -0
- package/dist/message/chat-message-seed-element.d.ts.map +1 -0
- package/dist/message/chat-message-text-element.d.ts +37 -0
- package/dist/message/chat-message-text-element.d.ts.map +1 -0
- package/dist/message/chat-messages-element.d.ts +28 -0
- package/dist/message/chat-messages-element.d.ts.map +1 -0
- package/dist/message/index.d.ts +8 -0
- package/dist/message/index.d.ts.map +1 -0
- package/dist/message/n-chat-message.d.ts +2 -0
- package/dist/message/n-chat-message.d.ts.map +1 -0
- package/dist/native-chat.css +470 -28
- package/dist/native-chat.js +2 -2
- package/dist/register.d.ts +10 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +4 -4
- package/package.json +1 -1
- package/dist/chat-panel-element-CXPbtkyi.js +0 -113
package/dist/native-chat.css
CHANGED
|
@@ -1,6 +1,53 @@
|
|
|
1
|
+
/* ════════════════════════════════════════════════════
|
|
2
|
+
native-chat — Chat component styles
|
|
3
|
+
════════════════════════════════════════════════════ */
|
|
4
|
+
|
|
1
5
|
@layer ui {
|
|
2
6
|
|
|
3
|
-
:
|
|
7
|
+
/* ── :not(:defined) visibility guards ── */
|
|
8
|
+
|
|
9
|
+
:where(n-chat-input):not(:defined),
|
|
10
|
+
:where(n-chat-feed):not(:defined),
|
|
11
|
+
:where(n-chat-avatar):not(:defined),
|
|
12
|
+
:where(n-chat-message):not(:defined),
|
|
13
|
+
:where(n-chat-messages):not(:defined),
|
|
14
|
+
:where(n-chat-message-text):not(:defined),
|
|
15
|
+
:where(n-chat-message-activity):not(:defined),
|
|
16
|
+
:where(n-chat-message-seed):not(:defined),
|
|
17
|
+
:where(n-chat-message-genui):not(:defined),
|
|
18
|
+
:where(n-chat-input-structured):not(:defined) { visibility: hidden; }
|
|
19
|
+
|
|
20
|
+
/* ══════════════════════════════════════════════════
|
|
21
|
+
Chat Token Definitions
|
|
22
|
+
══════════════════════════════════════════════════ */
|
|
23
|
+
|
|
24
|
+
:where(n-chat-feed),
|
|
25
|
+
:where(native-chat-panel) {
|
|
26
|
+
/* Feed */
|
|
27
|
+
--n-chat-gap: calc(var(--n-space) * 4);
|
|
28
|
+
--n-chat-message-gap: calc(var(--n-space) * 2);
|
|
29
|
+
|
|
30
|
+
/* Bubbles */
|
|
31
|
+
--n-chat-bubble-user: var(--n-button);
|
|
32
|
+
--n-chat-bubble-user-color: white;
|
|
33
|
+
--n-chat-bubble-assistant: var(--n-card);
|
|
34
|
+
--n-chat-bubble-assistant-color: var(--n-ink);
|
|
35
|
+
--n-chat-bubble-radius: var(--n-radius);
|
|
36
|
+
--n-chat-bubble-padding-block: calc(var(--n-space) * 2);
|
|
37
|
+
--n-chat-bubble-padding-inline: calc(var(--n-space) * 3);
|
|
38
|
+
--n-chat-bubble-max-width: 85%;
|
|
39
|
+
|
|
40
|
+
/* Avatar */
|
|
41
|
+
--n-chat-avatar-size: var(--n-size);
|
|
42
|
+
--n-chat-avatar-background: var(--n-control);
|
|
43
|
+
--n-chat-avatar-color: var(--n-ink-muted);
|
|
44
|
+
|
|
45
|
+
/* Activity */
|
|
46
|
+
--n-chat-activity-color: var(--n-ink-muted);
|
|
47
|
+
|
|
48
|
+
/* Prose */
|
|
49
|
+
--n-chat-prose-gap: calc(var(--n-space) * 2);
|
|
50
|
+
}
|
|
4
51
|
|
|
5
52
|
/* ╭──────────────────────────────────────────────────────────╮
|
|
6
53
|
│ n-chat │
|
|
@@ -13,6 +60,10 @@
|
|
|
13
60
|
display: contents;
|
|
14
61
|
}
|
|
15
62
|
|
|
63
|
+
/* ══════════════════════════════════════════════════
|
|
64
|
+
native-chat-panel
|
|
65
|
+
══════════════════════════════════════════════════ */
|
|
66
|
+
|
|
16
67
|
:where(native-chat-panel) {
|
|
17
68
|
--n-ground: var(--n-panel);
|
|
18
69
|
|
|
@@ -55,8 +106,6 @@
|
|
|
55
106
|
}
|
|
56
107
|
|
|
57
108
|
/* ── n-chat-content ── */
|
|
58
|
-
/* Message stream layout. Lives inside n-body which handles
|
|
59
|
-
scrolling, padding, and flex: 1. Content just manages message gap. */
|
|
60
109
|
|
|
61
110
|
:where(n-chat-content) {
|
|
62
111
|
display: flex;
|
|
@@ -67,35 +116,436 @@
|
|
|
67
116
|
gap: calc(var(--n-space) * 2);
|
|
68
117
|
}
|
|
69
118
|
|
|
70
|
-
/*
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
actions row sits bottom-right. Compact mode lays out as a
|
|
74
|
-
single horizontal row. */
|
|
75
|
-
|
|
76
|
-
:where(n-chat-input) {
|
|
77
|
-
--n-background: var(--n-control);
|
|
78
|
-
--n-border-color: var(--n-border-muted);
|
|
119
|
+
/* ══════════════════════════════════════════════════
|
|
120
|
+
n-chat-feed — scrollable thread coordinator
|
|
121
|
+
══════════════════════════════════════════════════ */
|
|
79
122
|
|
|
123
|
+
:where(n-chat-feed) {
|
|
80
124
|
display: flex;
|
|
125
|
+
flex-direction: column;
|
|
126
|
+
gap: var(--n-chat-gap);
|
|
81
127
|
flex: 1 1 0%;
|
|
128
|
+
min-height: 0;
|
|
129
|
+
overflow-y: auto;
|
|
130
|
+
scrollbar-width: thin;
|
|
131
|
+
scroll-behavior: smooth;
|
|
132
|
+
padding-block: calc(var(--n-space) * 4);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* ── Date separator ── */
|
|
136
|
+
|
|
137
|
+
:where(n-chat-feed) > :where(.n-chat-date-separator) {
|
|
138
|
+
display: flex;
|
|
139
|
+
align-items: center;
|
|
140
|
+
justify-content: center;
|
|
141
|
+
padding-block: var(--n-space);
|
|
142
|
+
font-size: var(--n-font-size-sm);
|
|
143
|
+
color: var(--n-ink-muted);
|
|
144
|
+
user-select: none;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
:where(n-chat-feed[hidden]) { display: none; }
|
|
148
|
+
|
|
149
|
+
/* ══════════════════════════════════════════════════
|
|
150
|
+
n-chat-messages — message group (bubble cluster)
|
|
151
|
+
══════════════════════════════════════════════════ */
|
|
152
|
+
|
|
153
|
+
:where(n-chat-messages) {
|
|
154
|
+
display: flex;
|
|
155
|
+
flex-direction: row;
|
|
156
|
+
align-items: flex-start;
|
|
157
|
+
gap: var(--n-chat-message-gap);
|
|
158
|
+
align-self: flex-start;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* User messages: right-aligned, avatar on right */
|
|
162
|
+
[role="user"]:where(n-chat-messages) {
|
|
163
|
+
align-self: flex-end;
|
|
164
|
+
flex-direction: row-reverse;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Message column (everything except avatar) */
|
|
168
|
+
:where(n-chat-messages) > :where(:not(n-chat-avatar)) {
|
|
169
|
+
display: flex;
|
|
82
170
|
flex-direction: column;
|
|
171
|
+
gap: calc(var(--n-space));
|
|
172
|
+
max-width: var(--n-chat-bubble-max-width);
|
|
83
173
|
min-width: 0;
|
|
84
|
-
background: var(--n-background);
|
|
85
|
-
border: 1px solid var(--n-border-color);
|
|
86
|
-
border-radius: var(--n-radius);
|
|
87
174
|
}
|
|
88
175
|
|
|
176
|
+
:where(n-chat-messages[hidden]) { display: none; }
|
|
177
|
+
|
|
178
|
+
/* ══════════════════════════════════════════════════
|
|
179
|
+
n-chat-avatar — sender avatar
|
|
180
|
+
══════════════════════════════════════════════════ */
|
|
181
|
+
|
|
182
|
+
:where(n-chat-avatar) {
|
|
183
|
+
display: inline-flex;
|
|
184
|
+
align-items: center;
|
|
185
|
+
justify-content: center;
|
|
186
|
+
flex-shrink: 0;
|
|
187
|
+
|
|
188
|
+
width: var(--n-chat-avatar-size);
|
|
189
|
+
height: var(--n-chat-avatar-size);
|
|
190
|
+
border-radius: 50%;
|
|
191
|
+
background: var(--n-chat-avatar-background);
|
|
192
|
+
color: var(--n-chat-avatar-color);
|
|
193
|
+
|
|
194
|
+
font-size: calc(var(--n-chat-avatar-size) * 0.4);
|
|
195
|
+
font-weight: 600;
|
|
196
|
+
line-height: 1;
|
|
197
|
+
overflow: hidden;
|
|
198
|
+
user-select: none;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
:where(n-chat-avatar) > :where(img) {
|
|
202
|
+
width: 100%;
|
|
203
|
+
height: 100%;
|
|
204
|
+
object-fit: cover;
|
|
205
|
+
border-radius: inherit;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
:where(n-chat-avatar) > :where(n-icon) {
|
|
209
|
+
font-size: calc(var(--n-chat-avatar-size) * 0.5);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
:where(n-chat-avatar[hidden]) { display: none; }
|
|
213
|
+
|
|
214
|
+
/* ══════════════════════════════════════════════════
|
|
215
|
+
n-chat-message — individual message bubble
|
|
216
|
+
══════════════════════════════════════════════════ */
|
|
217
|
+
|
|
218
|
+
:where(n-chat-message) {
|
|
219
|
+
display: flex;
|
|
220
|
+
flex-direction: column;
|
|
221
|
+
gap: var(--n-space);
|
|
222
|
+
|
|
223
|
+
padding-block: var(--n-chat-bubble-padding-block);
|
|
224
|
+
padding-inline: var(--n-chat-bubble-padding-inline);
|
|
225
|
+
border-radius: var(--n-chat-bubble-radius);
|
|
226
|
+
|
|
227
|
+
background: var(--n-chat-bubble-assistant);
|
|
228
|
+
color: var(--n-chat-bubble-assistant-color);
|
|
229
|
+
|
|
230
|
+
word-wrap: break-word;
|
|
231
|
+
overflow-wrap: break-word;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/* User bubble */
|
|
235
|
+
[role="user"]:where(n-chat-message) {
|
|
236
|
+
background: var(--n-chat-bubble-user);
|
|
237
|
+
color: var(--n-chat-bubble-user-color);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Streaming status */
|
|
241
|
+
[status="streaming"]:where(n-chat-message) {
|
|
242
|
+
opacity: 0.85;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* Error status */
|
|
246
|
+
[status="error"]:where(n-chat-message) {
|
|
247
|
+
border: 1px solid var(--n-border-danger);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* ── Message actions toolbar ── */
|
|
251
|
+
|
|
252
|
+
:where(n-chat-message) > :where(.n-chat-message-actions) {
|
|
253
|
+
opacity: 0;
|
|
254
|
+
transition: opacity var(--n-duration) var(--n-easing);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
:where(n-chat-message):hover > :where(.n-chat-message-actions),
|
|
258
|
+
:where(n-chat-message):focus-within > :where(.n-chat-message-actions),
|
|
259
|
+
:where(n-chat-message[force-hover]) > :where(.n-chat-message-actions) {
|
|
260
|
+
opacity: 1;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
:where(n-chat-message[hidden]) { display: none; }
|
|
264
|
+
|
|
265
|
+
/* ══════════════════════════════════════════════════
|
|
266
|
+
n-chat-message-text — rich text / markdown
|
|
267
|
+
══════════════════════════════════════════════════ */
|
|
268
|
+
|
|
269
|
+
:where(n-chat-message-text) {
|
|
270
|
+
display: block;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/* ── Prose reset — typography inside rendered markdown ── */
|
|
274
|
+
|
|
275
|
+
:where(n-chat-message-text) :where(.n-chat-prose) {
|
|
276
|
+
display: flex;
|
|
277
|
+
flex-direction: column;
|
|
278
|
+
gap: var(--n-chat-prose-gap);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/* Universal block margin reset — flexbox gap handles spacing,
|
|
282
|
+
so all block-level children must have zero margin */
|
|
283
|
+
:where(n-chat-message-text) :where(
|
|
284
|
+
p, h1, h2, h3, h4, h5, h6,
|
|
285
|
+
ul, ol, li,
|
|
286
|
+
blockquote, pre, hr,
|
|
287
|
+
div, figure, figcaption,
|
|
288
|
+
dl, dt, dd, details, summary
|
|
289
|
+
) {
|
|
290
|
+
margin: 0;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
:where(n-chat-message-text) :where(h1, h2, h3, h4, h5, h6) {
|
|
294
|
+
font-weight: 600;
|
|
295
|
+
line-height: 1.3;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
:where(n-chat-message-text) :where(h1) { font-size: 1.4em; }
|
|
299
|
+
:where(n-chat-message-text) :where(h2) { font-size: 1.25em; }
|
|
300
|
+
:where(n-chat-message-text) :where(h3) { font-size: 1.1em; }
|
|
301
|
+
|
|
302
|
+
:where(n-chat-message-text) :where(ul, ol) {
|
|
303
|
+
padding-inline-start: 1.5em;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
:where(n-chat-message-text) :where(li) {
|
|
307
|
+
margin-block: calc(var(--n-space) * 0.5);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
:where(n-chat-message-text) :where(blockquote) {
|
|
311
|
+
padding-inline-start: calc(var(--n-space) * 3);
|
|
312
|
+
border-inline-start: 3px solid var(--n-border-muted);
|
|
313
|
+
color: var(--n-ink-muted);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
:where(n-chat-message-text) :where(code) {
|
|
317
|
+
font-family: var(--n-font-mono);
|
|
318
|
+
font-size: 0.9em;
|
|
319
|
+
padding-block: 0.1em;
|
|
320
|
+
padding-inline: 0.3em;
|
|
321
|
+
background: var(--n-control);
|
|
322
|
+
border-radius: calc(var(--n-radius) * 0.5);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
:where(n-chat-message-text) :where(pre) {
|
|
326
|
+
padding: calc(var(--n-space) * 2);
|
|
327
|
+
background: var(--n-control);
|
|
328
|
+
border-radius: calc(var(--n-radius) * 0.5);
|
|
329
|
+
overflow-x: auto;
|
|
330
|
+
scrollbar-width: thin;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
:where(n-chat-message-text) :where(pre) :where(code) {
|
|
334
|
+
padding: 0;
|
|
335
|
+
background: transparent;
|
|
336
|
+
border-radius: 0;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
:where(n-chat-message-text) :where(a) {
|
|
340
|
+
color: var(--n-ink-accent);
|
|
341
|
+
text-decoration: underline;
|
|
342
|
+
text-underline-offset: 0.15em;
|
|
343
|
+
}
|
|
89
344
|
|
|
90
|
-
|
|
345
|
+
:where(n-chat-message-text) :where(hr) {
|
|
346
|
+
border: none;
|
|
347
|
+
border-top: 1px solid var(--n-border-muted);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
:where(n-chat-message-text[hidden]) { display: none; }
|
|
351
|
+
|
|
352
|
+
/* ══════════════════════════════════════════════════
|
|
353
|
+
n-chat-message-activity — typing / thinking
|
|
354
|
+
══════════════════════════════════════════════════ */
|
|
355
|
+
|
|
356
|
+
:where(n-chat-message-activity) {
|
|
357
|
+
display: flex;
|
|
358
|
+
flex-direction: column;
|
|
359
|
+
gap: var(--n-space);
|
|
360
|
+
color: var(--n-chat-activity-color);
|
|
361
|
+
font-size: var(--n-font-size-sm);
|
|
362
|
+
padding-block: var(--n-space);
|
|
363
|
+
align-self: flex-start;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
:where(n-chat-message-activity) > :where(.n-chat-activity-row) {
|
|
367
|
+
display: inline-flex;
|
|
368
|
+
align-items: center;
|
|
369
|
+
gap: calc(var(--n-space) * 1.5);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
:where(n-chat-message-activity) :where(.n-chat-activity-time) {
|
|
373
|
+
font-variant-numeric: tabular-nums;
|
|
374
|
+
min-width: 2.5em;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
:where(n-chat-message-activity) :where(.n-chat-activity-sep) {
|
|
378
|
+
opacity: 0.4;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/* Animated dots */
|
|
382
|
+
:where(n-chat-message-activity) :where(.n-chat-activity-dots) {
|
|
383
|
+
display: inline-flex;
|
|
384
|
+
gap: 0.2em;
|
|
385
|
+
margin-inline-start: 0.25em;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
:where(n-chat-message-activity) :where(.n-chat-activity-dots) > :where(i) {
|
|
389
|
+
display: block;
|
|
390
|
+
width: 0.25em;
|
|
391
|
+
height: 0.25em;
|
|
392
|
+
border-radius: 50%;
|
|
393
|
+
background: currentColor;
|
|
394
|
+
animation: n-chat-dot-pulse 1.2s ease-in-out infinite;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
:where(n-chat-message-activity) :where(.n-chat-activity-dots) > :where(i:nth-child(2)) {
|
|
398
|
+
animation-delay: 0.2s;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
:where(n-chat-message-activity) :where(.n-chat-activity-dots) > :where(i:nth-child(3)) {
|
|
402
|
+
animation-delay: 0.4s;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
@keyframes n-chat-dot-pulse {
|
|
406
|
+
0%, 60%, 100% { opacity: 0.3; transform: scale(0.8); }
|
|
407
|
+
30% { opacity: 1; transform: scale(1); }
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/* Expandable state */
|
|
411
|
+
:where(n-chat-message-activity) > :where(.n-chat-activity-row) {
|
|
412
|
+
cursor: default;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
[expandable]:where(n-chat-message-activity) > :where(.n-chat-activity-row) {
|
|
416
|
+
cursor: pointer;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
[expandable]:where(n-chat-message-activity) > :where(.n-chat-activity-row)::before {
|
|
420
|
+
content: '▶';
|
|
421
|
+
font-size: 0.65em;
|
|
422
|
+
transition: transform var(--n-duration) var(--n-easing);
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
[expanded][expandable]:where(n-chat-message-activity) > :where(.n-chat-activity-row)::before {
|
|
426
|
+
transform: rotate(90deg);
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
:where(n-chat-message-activity) > :where(.n-chat-activity-content) {
|
|
430
|
+
padding-inline-start: calc(var(--n-space) * 3);
|
|
431
|
+
font-family: var(--n-font-mono);
|
|
432
|
+
font-size: var(--n-font-size-sm);
|
|
433
|
+
max-height: 20rem;
|
|
434
|
+
overflow-y: auto;
|
|
435
|
+
scrollbar-width: thin;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
:where(n-chat-message-activity[hidden]) { display: none; }
|
|
439
|
+
|
|
440
|
+
@media (prefers-reduced-motion: reduce) {
|
|
441
|
+
:where(n-chat-message-activity) :where(.n-chat-activity-dots) > :where(i) {
|
|
442
|
+
animation: none;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/* ══════════════════════════════════════════════════
|
|
447
|
+
n-chat-message-seed — suggestion chips
|
|
448
|
+
══════════════════════════════════════════════════ */
|
|
449
|
+
|
|
450
|
+
:where(n-chat-message-seed) {
|
|
451
|
+
display: flex;
|
|
452
|
+
flex-wrap: wrap;
|
|
453
|
+
gap: var(--n-space);
|
|
454
|
+
padding-block: var(--n-space);
|
|
455
|
+
align-self: flex-start;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
:where(n-chat-message-seed)[aria-disabled="true"] {
|
|
459
|
+
pointer-events: none;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
:where(n-chat-message-seed[hidden]) { display: none; }
|
|
463
|
+
|
|
464
|
+
/* ══════════════════════════════════════════════════
|
|
465
|
+
n-chat-message-genui — schema-rendered UI
|
|
466
|
+
══════════════════════════════════════════════════ */
|
|
467
|
+
|
|
468
|
+
:where(n-chat-message-genui) {
|
|
469
|
+
display: block;
|
|
470
|
+
min-width: 0;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
:where(n-chat-message-genui) > :where(.n-chat-genui-container) {
|
|
474
|
+
display: flex;
|
|
475
|
+
flex-direction: column;
|
|
476
|
+
gap: var(--n-space);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
:where(n-chat-message-genui) :where(.n-chat-genui-error) {
|
|
480
|
+
padding: var(--n-space);
|
|
481
|
+
color: var(--n-ink-danger);
|
|
482
|
+
font-size: var(--n-font-size-sm);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
:where(n-chat-message-genui) :where(.n-chat-genui-preview) {
|
|
486
|
+
display: flex;
|
|
487
|
+
align-items: center;
|
|
488
|
+
justify-content: space-between;
|
|
489
|
+
gap: calc(var(--n-space) * 2);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
:where(n-chat-message-genui[hidden]) { display: none; }
|
|
493
|
+
|
|
494
|
+
/* ══════════════════════════════════════════════════
|
|
495
|
+
n-chat-input-structured — multi-choice input
|
|
496
|
+
══════════════════════════════════════════════════ */
|
|
497
|
+
|
|
498
|
+
:where(n-chat-input-structured) {
|
|
499
|
+
display: flex;
|
|
500
|
+
flex-direction: column;
|
|
501
|
+
gap: calc(var(--n-space) * 2);
|
|
502
|
+
padding: calc(var(--n-space) * 3);
|
|
503
|
+
background: var(--n-card);
|
|
504
|
+
border-radius: var(--n-chat-bubble-radius);
|
|
505
|
+
align-self: stretch;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
:where(n-chat-input-structured) > :where(.n-chat-structured-question) {
|
|
509
|
+
font-weight: 600;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
:where(n-chat-input-structured) > :where(.n-chat-structured-options) {
|
|
513
|
+
display: flex;
|
|
514
|
+
flex-wrap: wrap;
|
|
515
|
+
gap: var(--n-space);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
:where(n-chat-input-structured) > :where(.n-chat-structured-actions) {
|
|
519
|
+
display: flex;
|
|
520
|
+
align-items: center;
|
|
521
|
+
justify-content: flex-end;
|
|
522
|
+
gap: var(--n-space);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
:where(n-chat-input-structured)[aria-disabled="true"] {
|
|
526
|
+
pointer-events: none;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
:where(n-chat-input-structured[hidden]) { display: none; }
|
|
530
|
+
|
|
531
|
+
/* ══════════════════════════════════════════════════
|
|
532
|
+
n-chat-input — composer
|
|
533
|
+
══════════════════════════════════════════════════ */
|
|
534
|
+
|
|
535
|
+
:where(n-chat-input) {
|
|
536
|
+
display: flex;
|
|
537
|
+
flex: 1 1 0%;
|
|
538
|
+
flex-direction: column;
|
|
539
|
+
min-width: 0;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/* Compact: single row */
|
|
91
543
|
:where(n-chat-input[compact]) {
|
|
92
544
|
flex-direction: row;
|
|
93
545
|
align-items: center;
|
|
94
546
|
}
|
|
95
547
|
|
|
96
|
-
/* Textarea inside input — transparent,
|
|
97
|
-
WHY: Override custom properties so all states (hover, filled, focus)
|
|
98
|
-
resolve to transparent. The wrapper provides the visual surface. */
|
|
548
|
+
/* Textarea inside input — fully transparent, no padding */
|
|
99
549
|
:where(n-chat-input) > :where(n-textarea) {
|
|
100
550
|
--n-background: transparent;
|
|
101
551
|
--n-background-hover: transparent;
|
|
@@ -104,6 +554,7 @@
|
|
|
104
554
|
--n-border-color-hover: transparent;
|
|
105
555
|
--n-border-color-active: transparent;
|
|
106
556
|
|
|
557
|
+
padding: 0;
|
|
107
558
|
border: none;
|
|
108
559
|
border-radius: 0;
|
|
109
560
|
resize: none;
|
|
@@ -121,34 +572,25 @@
|
|
|
121
572
|
}
|
|
122
573
|
|
|
123
574
|
/* ── n-chat-input-attachments ── */
|
|
124
|
-
/* Optional attachment zone above the textarea. */
|
|
125
575
|
|
|
126
576
|
:where(n-chat-input-attachments) {
|
|
127
577
|
display: flex;
|
|
128
578
|
flex-wrap: wrap;
|
|
129
579
|
gap: calc(var(--n-space) * 2);
|
|
130
|
-
padding-block: var(--n-space);
|
|
131
|
-
padding-inline: calc(var(--n-space-k) * var(--n-space));
|
|
132
580
|
}
|
|
133
581
|
|
|
134
582
|
/* ── n-chat-input-actions ── */
|
|
135
|
-
/* Bottom action row: [+][model][mic][submit] — right-aligned. */
|
|
136
583
|
|
|
137
584
|
:where(n-chat-input-actions) {
|
|
138
585
|
display: flex;
|
|
139
586
|
align-items: center;
|
|
140
587
|
justify-content: flex-end;
|
|
141
588
|
gap: calc(var(--n-space) * 2);
|
|
142
|
-
padding-block: var(--n-space);
|
|
143
|
-
padding-inline: calc(var(--n-space-k) * var(--n-space));
|
|
144
589
|
min-width: 0;
|
|
145
590
|
}
|
|
146
591
|
|
|
147
|
-
/* In compact mode, actions shrink-wrap with no extra padding */
|
|
148
592
|
:where(n-chat-input[compact]) > :where(n-chat-input-actions) {
|
|
149
593
|
flex: none;
|
|
150
|
-
padding-block: 0;
|
|
151
|
-
padding-inline-start: 0;
|
|
152
594
|
}
|
|
153
595
|
|
|
154
596
|
}
|
package/dist/native-chat.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { a as e, c as t, d as n, f as r, i, l as a, m as o, n as s, o as c, p as l, r as u, s as d, t as f, u as p } from "./chat-input-structured-element-CbDnI4zv.js";
|
|
2
|
+
export { n as NChatAvatar, r as NChatFeed, o as NChatInput, f as NChatInputStructured, p as NChatMessage, i as NChatMessageActivity, s as NChatMessageGenUI, u as NChatMessageSeed, e as NChatMessageText, a as NChatMessages, l as NChatPanel, c as renderInline, d as renderMarkdown, t as sanitizeHtml };
|
package/dist/register.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { NChatInput } from './chat-input-element.ts';
|
|
2
2
|
import { NChatPanel } from './chat-panel-element.ts';
|
|
3
|
-
|
|
3
|
+
import { NChatFeed } from './feed/chat-feed-element.ts';
|
|
4
|
+
import { NChatAvatar } from './avatar/chat-avatar-element.ts';
|
|
5
|
+
import { NChatMessage } from './message/chat-message-element.ts';
|
|
6
|
+
import { NChatMessages } from './message/chat-messages-element.ts';
|
|
7
|
+
import { NChatMessageText } from './message/chat-message-text-element.ts';
|
|
8
|
+
import { NChatMessageActivity } from './message/chat-message-activity-element.ts';
|
|
9
|
+
import { NChatMessageSeed } from './message/chat-message-seed-element.ts';
|
|
10
|
+
import { NChatMessageGenUI } from './message/chat-message-genui-element.ts';
|
|
11
|
+
import { NChatInputStructured } from './message/chat-input-structured-element.ts';
|
|
12
|
+
export { NChatInput, NChatPanel, NChatFeed, NChatAvatar, NChatMessage, NChatMessages, NChatMessageText, NChatMessageActivity, NChatMessageSeed, NChatMessageGenUI, NChatInputStructured, };
|
|
4
13
|
//# sourceMappingURL=register.d.ts.map
|
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AA6BlF,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,CAAC"}
|
package/dist/register.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { NButton as
|
|
3
|
-
|
|
4
|
-
export {
|
|
1
|
+
import { a as e, d as t, f as n, i as r, l as i, m as a, n as o, p as s, r as c, t as l, u } from "./chat-input-structured-element-CbDnI4zv.js";
|
|
2
|
+
import { NButton as d, NCard as f, NDialog as p, NIcon as m, NTextarea as h, NToolbar as g, define as _, registerIcon as v } from "@nonoun/native-ui";
|
|
3
|
+
_("n-chat-input", a), _("native-chat-panel", s), _("n-chat-feed", n), _("n-chat-avatar", t), _("n-chat-message", u), _("n-chat-messages", i), _("n-chat-message-text", e), _("n-chat-message-activity", r), _("n-chat-message-seed", c), _("n-chat-message-genui", o), _("n-chat-input-structured", l), _("n-textarea", h), _("n-button", d), _("n-icon", m), _("n-toolbar", g), _("n-dialog", p), _("n-card", f), v("chat-dots", "<svg viewBox=\"0 0 256 256\" fill=\"currentColor\"><path d=\"M116,128a12,12,0,1,1,12,12A12,12,0,0,1,116,128ZM84,140a12,12,0,1,0-12-12A12,12,0,0,0,84,140Zm88,0a12,12,0,1,0-12-12A12,12,0,0,0,172,140Zm60-76V192a16,16,0,0,1-16,16H83l-32.6,28.16-.09.07A15.89,15.89,0,0,1,40,240a16.13,16.13,0,0,1-6.8-1.52A15.85,15.85,0,0,1,24,224V64A16,16,0,0,1,40,48H216A16,16,0,0,1,232,64ZM40,224h0ZM216,64H40V224l34.77-30A8,8,0,0,1,80,192H216Z\"/></svg>"), v("user", "<svg viewBox=\"0 0 256 256\" fill=\"currentColor\"><path d=\"M230.92,212c-15.23-26.33-38.7-45.21-66.09-54.16a72,72,0,1,0-73.66,0C63.78,166.78,40.31,185.66,25.08,212a8,8,0,1,0,13.85,8C55.71,194.74,89.05,176,128,176s72.29,18.74,89.07,44a8,8,0,0,0,13.85-8ZM72,96a56,56,0,1,1,56,56A56.06,56.06,0,0,1,72,96Z\"/></svg>"), v("stop", "<svg viewBox=\"0 0 256 256\" fill=\"currentColor\"><path d=\"M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,160H56V56H200V200Z\"/></svg>"), v("arrow-counter-clockwise", "<svg viewBox=\"0 0 256 256\" fill=\"currentColor\"><path d=\"M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z\"/></svg>");
|
|
4
|
+
export { t as NChatAvatar, n as NChatFeed, a as NChatInput, l as NChatInputStructured, u as NChatMessage, r as NChatMessageActivity, o as NChatMessageGenUI, c as NChatMessageSeed, e as NChatMessageText, i as NChatMessages, s as NChatPanel };
|