@green-on-grey/ui-kit 1.2.0 → 1.4.0
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/chat/Attachments.d.ts +37 -0
- package/dist/chat/Chat.d.ts +5 -0
- package/dist/chat/MessageView.d.ts +6 -2
- package/dist/chat/index.d.ts +2 -1
- package/dist/chat/intl.d.ts +2 -0
- package/dist/chat/types.d.ts +6 -0
- package/dist/chat.js +564 -178
- package/dist/chat.js.map +1 -1
- package/dist/components/Icon.d.ts +3 -0
- package/dist/components/TopBar.d.ts +10 -2
- package/dist/index.js +25 -21
- package/dist/index.js.map +1 -1
- package/dist/locales/index.d.ts +55 -0
- package/dist/locales.js +60 -5
- package/dist/locales.js.map +1 -1
- package/dist/manifest.json +45 -1
- package/dist/styles.css +77 -2
- package/dist/{ui-joAvYmUH.js → ui-ChXUXoIB.js} +4 -1
- package/dist/ui-ChXUXoIB.js.map +1 -0
- package/package.json +1 -1
- package/dist/ui-joAvYmUH.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Switch","useToast","Icon","Modal","Markdown","Empty","Loading","useOutside","Avatar","useKitT","UIKIT_NS","Button","rest","cls","variant","size","className","IconButton","fill","on","label","Tabs","ref","useRef","i","items","it","value","to","e","onChange","Menu","onClose","useEffect","opener","TopBar","t","profileOpen","setProfileOpen","useState","sectionsOpen","setSectionsOpen","closeSections","useCallback","closeProfile","links","sections","Link","s","home","logo","name","center","actions","v","avatar","profileMenu","GitHubIcon","ToastProvider"],"sources":["../src/components/Button.tsx","../src/components/Tabs.tsx","../src/components/Menu.tsx","../src/components/TopBar.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes } from \"react\";\n\ntype Native = ButtonHTMLAttributes<HTMLButtonElement>;\n\n/** `button.btn` with its variants. The classes stay a legitimate way to use a\n * button (FTR.NAB.CMN-0005 tech, decision 1); the component is for new code. */\nexport function Button({ variant, size, className, type = \"button\", ...rest }: Native & {\n variant?: \"primary\" | \"ghost\" | \"danger\"; size?: \"sm\";\n}) {\n const cls = [\"btn\", variant, size, className].filter(Boolean).join(\" \");\n return <button type={type} className={cls} {...rest} />;\n}\n\n/** `button.iconbtn`: a button with an icon only, so the label is required. */\nexport function IconButton({ label, fill, on, className, type = \"button\", ...rest }: Omit<Native, \"aria-label\"> & {\n label: string; fill?: boolean; on?: boolean;\n}) {\n const cls = [\"iconbtn\", fill && \"fill\", on && \"on\", className].filter(Boolean).join(\" \");\n return <button type={type} className={cls} aria-label={label} {...rest} />;\n}\n","import { useRef, type KeyboardEvent, type ReactNode } from \"react\";\n\n/** `.tabs` with the keyboard of a tab list: arrows, Home and End move the choice. */\nexport function Tabs<K extends string>({ items, value, onChange, label }: {\n items: { key: K; label: ReactNode }[]; value: K; onChange: (key: K) => void; label?: string;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const onKey = (e: KeyboardEvent) => {\n const i = items.findIndex((it) => it.key === value);\n const to = e.key === \"ArrowRight\" ? (i + 1) % items.length\n : e.key === \"ArrowLeft\" ? (i - 1 + items.length) % items.length\n : e.key === \"Home\" ? 0 : e.key === \"End\" ? items.length - 1 : -1;\n if (to < 0) return;\n e.preventDefault();\n onChange(items[to].key);\n ref.current?.querySelectorAll<HTMLElement>('[role=\"tab\"]')[to]?.focus();\n };\n return (\n <div className=\"tabs\" role=\"tablist\" aria-label={label} ref={ref} onKeyDown={onKey}>\n {items.map((it) => (\n <button key={it.key} type=\"button\" role=\"tab\" aria-selected={it.key === value} tabIndex={it.key === value ? 0 : -1}\n className={it.key === value ? \"on\" : undefined} onClick={() => onChange(it.key)}>\n {it.label}\n </button>\n ))}\n </div>\n );\n}\n","import { useEffect, type ReactNode } from \"react\";\nimport { useOutside } from \"./ui\";\n\n/** `.menu`: a popover closed by Escape and by a click outside; it is mounted while\n * open. `onClose` must keep its identity between renders. What is inside\n * (sections `.sec`, lines `.line`, actions `.action`) belongs to the product. */\nexport function Menu({ onClose, label, className, children }: {\n onClose: () => void; label?: string; className?: string; children: ReactNode;\n}) {\n const ref = useOutside<HTMLDivElement>(true, onClose);\n // the focus returns to what opened the menu (CMP-05)\n useEffect(() => {\n const opener = document.activeElement as HTMLElement | null;\n return () => opener?.focus?.();\n }, []);\n return (\n <div className={`menu${className ? ` ${className}` : \"\"}`} role=\"dialog\" aria-label={label} ref={ref}>\n {children}\n </div>\n );\n}\n","import { useCallback, useState, type ReactNode } from \"react\";\nimport { useKitT } from \"../i18n\";\nimport { Icon } from \"./Icon\";\nimport { useOutside } from \"./ui\";\n\n/** The link of the product: the kit does not depend on a router (arch §4.2). */\nexport type LinkComponent = (props: {\n href: string; className?: string; onClick?: () => void; \"aria-current\"?: \"page\"; children: ReactNode;\n}) => ReactNode;\n\nexport interface TopBarSection { key: string; label: ReactNode; href: string; active: boolean }\n\n/** The top bar (FTR.NAB.CMN-0005 R5, design §4): the logo and the name, the\n * sections in a row and behind the burger on a phone, the actions of the product,\n * the avatar that opens the profile menu. The profile menu and the list of\n * sections are never open together. */\nexport function TopBar({ logo, name, home = \"/\", sections, Link, center, actions, avatar, profileMenu }: {\n logo: string; name: string; home?: string; sections: TopBarSection[]; Link: LinkComponent;\n /** Between the sections and the actions: the search of Hammurapi. */\n center?: ReactNode;\n /** Before the avatar. */\n actions?: ReactNode;\n avatar: ReactNode;\n profileMenu: (close: () => void) => ReactNode;\n}) {\n const t = useKitT();\n const [profileOpen, setProfileOpen] = useState(false);\n const [sectionsOpen, setSectionsOpen] = useState(false);\n const closeSections = useCallback(() => setSectionsOpen(false), []);\n const closeProfile = useCallback(() => setProfileOpen(false), []);\n const ref = useOutside<HTMLDivElement>(sectionsOpen, closeSections);\n const links = sections.map((s) => (\n <Link key={s.key} href={s.href} className={s.active ? \"on\" : undefined} aria-current={s.active ? \"page\" : undefined} onClick={closeSections}>\n {s.label}\n </Link>\n ));\n return (\n <div className=\"topbar\">\n <Link href={home} className=\"brand\">\n <img src={logo} alt=\"\" />\n <span className=\"hide-m\">{name}</span>\n </Link>\n <nav className=\"nav hide-m\" aria-label={t(\"topbar.sections\")}>{links}</nav>\n {center}\n <div className=\"top-actions\">\n {actions}\n <button className=\"avatar\" style={profileOpen ? { boxShadow: \"0 0 0 2px var(--violet)\" } : undefined}\n onClick={() => { setSectionsOpen(false); setProfileOpen((v) => !v); }} aria-label={t(\"topbar.profile\")} aria-expanded={profileOpen}>\n {avatar}\n </button>\n <div className=\"burger\" ref={ref}>\n <button className={`iconbtn${sectionsOpen ? \" on\" : \"\"}`} onClick={() => { setProfileOpen(false); setSectionsOpen((v) => !v); }}\n aria-label={t(\"topbar.sections\")} aria-expanded={sectionsOpen} aria-controls=\"nav-sections\">\n <Icon name={sectionsOpen ? \"x\" : \"menu\"} />\n </button>\n {sectionsOpen && <nav id=\"nav-sections\" className=\"navmenu\" aria-label={t(\"topbar.sections\")}>{links}</nav>}\n </div>\n </div>\n {profileOpen && profileMenu(closeProfile)}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Switch","useToast","Icon","Modal","Markdown","Empty","Loading","useOutside","Avatar","useKitT","UIKIT_NS","Button","rest","cls","variant","size","className","IconButton","fill","on","label","Tabs","ref","useRef","i","items","it","value","to","e","onChange","Menu","onClose","useEffect","opener","TopBar","t","profileOpen","setProfileOpen","useState","sectionsOpen","setSectionsOpen","closeSections","useCallback","closeProfile","links","sections","Link","s","home","logo","name","center","actions","v","avatar","menu","profileMenu","GitHubIcon","ToastProvider"],"sources":["../src/components/Button.tsx","../src/components/Tabs.tsx","../src/components/Menu.tsx","../src/components/TopBar.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes } from \"react\";\n\ntype Native = ButtonHTMLAttributes<HTMLButtonElement>;\n\n/** `button.btn` with its variants. The classes stay a legitimate way to use a\n * button (FTR.NAB.CMN-0005 tech, decision 1); the component is for new code. */\nexport function Button({ variant, size, className, type = \"button\", ...rest }: Native & {\n variant?: \"primary\" | \"ghost\" | \"danger\"; size?: \"sm\";\n}) {\n const cls = [\"btn\", variant, size, className].filter(Boolean).join(\" \");\n return <button type={type} className={cls} {...rest} />;\n}\n\n/** `button.iconbtn`: a button with an icon only, so the label is required. */\nexport function IconButton({ label, fill, on, className, type = \"button\", ...rest }: Omit<Native, \"aria-label\"> & {\n label: string; fill?: boolean; on?: boolean;\n}) {\n const cls = [\"iconbtn\", fill && \"fill\", on && \"on\", className].filter(Boolean).join(\" \");\n return <button type={type} className={cls} aria-label={label} {...rest} />;\n}\n","import { useRef, type KeyboardEvent, type ReactNode } from \"react\";\n\n/** `.tabs` with the keyboard of a tab list: arrows, Home and End move the choice. */\nexport function Tabs<K extends string>({ items, value, onChange, label }: {\n items: { key: K; label: ReactNode }[]; value: K; onChange: (key: K) => void; label?: string;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const onKey = (e: KeyboardEvent) => {\n const i = items.findIndex((it) => it.key === value);\n const to = e.key === \"ArrowRight\" ? (i + 1) % items.length\n : e.key === \"ArrowLeft\" ? (i - 1 + items.length) % items.length\n : e.key === \"Home\" ? 0 : e.key === \"End\" ? items.length - 1 : -1;\n if (to < 0) return;\n e.preventDefault();\n onChange(items[to].key);\n ref.current?.querySelectorAll<HTMLElement>('[role=\"tab\"]')[to]?.focus();\n };\n return (\n <div className=\"tabs\" role=\"tablist\" aria-label={label} ref={ref} onKeyDown={onKey}>\n {items.map((it) => (\n <button key={it.key} type=\"button\" role=\"tab\" aria-selected={it.key === value} tabIndex={it.key === value ? 0 : -1}\n className={it.key === value ? \"on\" : undefined} onClick={() => onChange(it.key)}>\n {it.label}\n </button>\n ))}\n </div>\n );\n}\n","import { useEffect, type ReactNode } from \"react\";\nimport { useOutside } from \"./ui\";\n\n/** `.menu`: a popover closed by Escape and by a click outside; it is mounted while\n * open. `onClose` must keep its identity between renders. What is inside\n * (sections `.sec`, lines `.line`, actions `.action`) belongs to the product. */\nexport function Menu({ onClose, label, className, children }: {\n onClose: () => void; label?: string; className?: string; children: ReactNode;\n}) {\n const ref = useOutside<HTMLDivElement>(true, onClose);\n // the focus returns to what opened the menu (CMP-05)\n useEffect(() => {\n const opener = document.activeElement as HTMLElement | null;\n return () => opener?.focus?.();\n }, []);\n return (\n <div className={`menu${className ? ` ${className}` : \"\"}`} role=\"dialog\" aria-label={label} ref={ref}>\n {children}\n </div>\n );\n}\n","import { useCallback, useState, type ReactNode } from \"react\";\nimport { useKitT } from \"../i18n\";\nimport { Icon } from \"./Icon\";\nimport { useOutside } from \"./ui\";\n\n/** The link of the product: the kit does not depend on a router (arch §4.2). */\nexport type LinkComponent = (props: {\n href: string; className?: string; onClick?: () => void; \"aria-current\"?: \"page\"; children: ReactNode;\n}) => ReactNode;\n\nexport interface TopBarSection { key: string; label: ReactNode; href: string; active: boolean }\n\n/** The top bar (FTR.NAB.CMN-0005 R5, design §4): the logo and the name, the\n * sections in a row and behind the burger on a phone, the actions of the product,\n * the avatar that opens the profile menu. The profile menu and the list of\n * sections are never open together. A part of the product with its own\n * navigation (the administration) puts it behind the burger in place of the\n * sections: `menu`, with the side panel marked `in-burger`, hidden on a phone. */\nexport function TopBar({ logo, name, home = \"/\", sections, Link, center, actions, avatar, profileMenu, menu }: {\n logo: string; name: string; home?: string; sections: TopBarSection[]; Link: LinkComponent;\n /** Between the sections and the actions: the search of Hammurapi. */\n center?: ReactNode;\n /** Before the avatar. */\n actions?: ReactNode;\n avatar: ReactNode;\n profileMenu: (close: () => void) => ReactNode;\n /** The burger of a phone in place of the sections: the navigation of the current part of the product and\n * its name, which the burger is called by. */\n menu?: { label: string; render: (close: () => void) => ReactNode };\n}) {\n const t = useKitT();\n const [profileOpen, setProfileOpen] = useState(false);\n const [sectionsOpen, setSectionsOpen] = useState(false);\n const closeSections = useCallback(() => setSectionsOpen(false), []);\n const closeProfile = useCallback(() => setProfileOpen(false), []);\n const ref = useOutside<HTMLDivElement>(sectionsOpen, closeSections);\n const links = sections.map((s) => (\n <Link key={s.key} href={s.href} className={s.active ? \"on\" : undefined} aria-current={s.active ? \"page\" : undefined} onClick={closeSections}>\n {s.label}\n </Link>\n ));\n return (\n <div className=\"topbar\">\n <Link href={home} className=\"brand\">\n <img src={logo} alt=\"\" />\n <span className=\"hide-m\">{name}</span>\n </Link>\n <nav className=\"nav hide-m\" aria-label={t(\"topbar.sections\")}>{links}</nav>\n {center}\n <div className=\"top-actions\">\n {actions}\n <button className=\"avatar\" style={profileOpen ? { boxShadow: \"0 0 0 2px var(--violet)\" } : undefined}\n onClick={() => { setSectionsOpen(false); setProfileOpen((v) => !v); }} aria-label={t(\"topbar.profile\")} aria-expanded={profileOpen}>\n {avatar}\n </button>\n <div className=\"burger\" ref={ref}>\n <button className={`iconbtn${sectionsOpen ? \" on\" : \"\"}`} onClick={() => { setProfileOpen(false); setSectionsOpen((v) => !v); }}\n aria-label={menu?.label ?? t(\"topbar.sections\")} aria-expanded={sectionsOpen} aria-controls=\"nav-sections\">\n <Icon name={sectionsOpen ? \"x\" : \"menu\"} />\n </button>\n {sectionsOpen && (menu\n ? <div id=\"nav-sections\" className=\"navmenu\">{menu.render(closeSections)}</div>\n : <nav id=\"nav-sections\" className=\"navmenu\" aria-label={t(\"topbar.sections\")}>{links}</nav>)}\n </div>\n </div>\n {profileOpen && profileMenu(closeProfile)}\n </div>\n );\n}\n"],"mappings":"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"}
|
package/dist/locales/index.d.ts
CHANGED
|
@@ -79,6 +79,17 @@ export declare const resources: {
|
|
|
79
79
|
event: {
|
|
80
80
|
details: string;
|
|
81
81
|
};
|
|
82
|
+
files: {
|
|
83
|
+
open: string;
|
|
84
|
+
download: string;
|
|
85
|
+
failed: string;
|
|
86
|
+
tooLarge: string;
|
|
87
|
+
save: string;
|
|
88
|
+
notUtf8: string;
|
|
89
|
+
rows: string;
|
|
90
|
+
source: string;
|
|
91
|
+
page: string;
|
|
92
|
+
};
|
|
82
93
|
};
|
|
83
94
|
};
|
|
84
95
|
ru: {
|
|
@@ -159,6 +170,17 @@ export declare const resources: {
|
|
|
159
170
|
event: {
|
|
160
171
|
details: string;
|
|
161
172
|
};
|
|
173
|
+
files: {
|
|
174
|
+
open: string;
|
|
175
|
+
download: string;
|
|
176
|
+
failed: string;
|
|
177
|
+
tooLarge: string;
|
|
178
|
+
save: string;
|
|
179
|
+
notUtf8: string;
|
|
180
|
+
rows: string;
|
|
181
|
+
source: string;
|
|
182
|
+
page: string;
|
|
183
|
+
};
|
|
162
184
|
};
|
|
163
185
|
};
|
|
164
186
|
de: {
|
|
@@ -239,6 +261,17 @@ export declare const resources: {
|
|
|
239
261
|
event: {
|
|
240
262
|
details: string;
|
|
241
263
|
};
|
|
264
|
+
files: {
|
|
265
|
+
open: string;
|
|
266
|
+
download: string;
|
|
267
|
+
failed: string;
|
|
268
|
+
tooLarge: string;
|
|
269
|
+
save: string;
|
|
270
|
+
notUtf8: string;
|
|
271
|
+
rows: string;
|
|
272
|
+
source: string;
|
|
273
|
+
page: string;
|
|
274
|
+
};
|
|
242
275
|
};
|
|
243
276
|
};
|
|
244
277
|
es: {
|
|
@@ -319,6 +352,17 @@ export declare const resources: {
|
|
|
319
352
|
event: {
|
|
320
353
|
details: string;
|
|
321
354
|
};
|
|
355
|
+
files: {
|
|
356
|
+
open: string;
|
|
357
|
+
download: string;
|
|
358
|
+
failed: string;
|
|
359
|
+
tooLarge: string;
|
|
360
|
+
save: string;
|
|
361
|
+
notUtf8: string;
|
|
362
|
+
rows: string;
|
|
363
|
+
source: string;
|
|
364
|
+
page: string;
|
|
365
|
+
};
|
|
322
366
|
};
|
|
323
367
|
};
|
|
324
368
|
zh: {
|
|
@@ -399,6 +443,17 @@ export declare const resources: {
|
|
|
399
443
|
event: {
|
|
400
444
|
details: string;
|
|
401
445
|
};
|
|
446
|
+
files: {
|
|
447
|
+
open: string;
|
|
448
|
+
download: string;
|
|
449
|
+
failed: string;
|
|
450
|
+
tooLarge: string;
|
|
451
|
+
save: string;
|
|
452
|
+
notUtf8: string;
|
|
453
|
+
rows: string;
|
|
454
|
+
source: string;
|
|
455
|
+
page: string;
|
|
456
|
+
};
|
|
402
457
|
};
|
|
403
458
|
};
|
|
404
459
|
};
|
package/dist/locales.js
CHANGED
|
@@ -77,7 +77,18 @@ var t = {
|
|
|
77
77
|
compact: "Compact",
|
|
78
78
|
reset: "Start over"
|
|
79
79
|
},
|
|
80
|
-
event: { details: "Summary" }
|
|
80
|
+
event: { details: "Summary" },
|
|
81
|
+
files: {
|
|
82
|
+
open: "Open {name}",
|
|
83
|
+
download: "Download",
|
|
84
|
+
failed: "Could not open the file",
|
|
85
|
+
tooLarge: "The file is too large to preview — download it",
|
|
86
|
+
save: "Download {name}",
|
|
87
|
+
notUtf8: "The file is not in UTF-8 — download it",
|
|
88
|
+
rows: "Showing {shown} of {total, plural, one {# row} other {# rows}}",
|
|
89
|
+
source: "Code",
|
|
90
|
+
page: "Page"
|
|
91
|
+
}
|
|
81
92
|
}
|
|
82
93
|
},
|
|
83
94
|
ru: {
|
|
@@ -155,7 +166,18 @@ var t = {
|
|
|
155
166
|
compact: "Сжать",
|
|
156
167
|
reset: "Начать заново"
|
|
157
168
|
},
|
|
158
|
-
event: { details: "Изложение" }
|
|
169
|
+
event: { details: "Изложение" },
|
|
170
|
+
files: {
|
|
171
|
+
open: "Открыть {name}",
|
|
172
|
+
download: "Скачать",
|
|
173
|
+
failed: "Не удалось открыть файл",
|
|
174
|
+
tooLarge: "Файл слишком большой для просмотра — скачайте его",
|
|
175
|
+
save: "Скачать {name}",
|
|
176
|
+
notUtf8: "Файл не в кодировке UTF-8 — скачайте его",
|
|
177
|
+
rows: "Показаны {shown} из {total, plural, one {# строки} other {# строк}}",
|
|
178
|
+
source: "Код",
|
|
179
|
+
page: "Страница"
|
|
180
|
+
}
|
|
159
181
|
}
|
|
160
182
|
},
|
|
161
183
|
de: {
|
|
@@ -233,7 +255,18 @@ var t = {
|
|
|
233
255
|
compact: "Komprimieren",
|
|
234
256
|
reset: "Neu beginnen"
|
|
235
257
|
},
|
|
236
|
-
event: { details: "Zusammenfassung" }
|
|
258
|
+
event: { details: "Zusammenfassung" },
|
|
259
|
+
files: {
|
|
260
|
+
open: "{name} öffnen",
|
|
261
|
+
download: "Herunterladen",
|
|
262
|
+
failed: "Die Datei konnte nicht geöffnet werden",
|
|
263
|
+
tooLarge: "Die Datei ist zu groß für die Vorschau — bitte herunterladen",
|
|
264
|
+
save: "{name} herunterladen",
|
|
265
|
+
notUtf8: "Die Datei ist nicht in UTF-8 — bitte herunterladen",
|
|
266
|
+
rows: "{shown} von {total, plural, one {# Zeile} other {# Zeilen}} angezeigt",
|
|
267
|
+
source: "Code",
|
|
268
|
+
page: "Seite"
|
|
269
|
+
}
|
|
237
270
|
}
|
|
238
271
|
},
|
|
239
272
|
es: {
|
|
@@ -311,7 +344,18 @@ var t = {
|
|
|
311
344
|
compact: "Compactar",
|
|
312
345
|
reset: "Empezar de nuevo"
|
|
313
346
|
},
|
|
314
|
-
event: { details: "Resumen" }
|
|
347
|
+
event: { details: "Resumen" },
|
|
348
|
+
files: {
|
|
349
|
+
open: "Abrir {name}",
|
|
350
|
+
download: "Descargar",
|
|
351
|
+
failed: "No se pudo abrir el archivo",
|
|
352
|
+
tooLarge: "El archivo es demasiado grande para la vista previa: descárguelo",
|
|
353
|
+
save: "Descargar {name}",
|
|
354
|
+
notUtf8: "El archivo no está en UTF-8: descárguelo",
|
|
355
|
+
rows: "Se muestran {shown} de {total, plural, one {# fila} other {# filas}}",
|
|
356
|
+
source: "Código",
|
|
357
|
+
page: "Página"
|
|
358
|
+
}
|
|
315
359
|
}
|
|
316
360
|
},
|
|
317
361
|
zh: {
|
|
@@ -389,7 +433,18 @@ var t = {
|
|
|
389
433
|
compact: "压缩",
|
|
390
434
|
reset: "重新开始"
|
|
391
435
|
},
|
|
392
|
-
event: { details: "摘要" }
|
|
436
|
+
event: { details: "摘要" },
|
|
437
|
+
files: {
|
|
438
|
+
open: "打开 {name}",
|
|
439
|
+
download: "下载",
|
|
440
|
+
failed: "无法打开文件",
|
|
441
|
+
tooLarge: "文件太大,无法预览,请下载",
|
|
442
|
+
save: "下载 {name}",
|
|
443
|
+
notUtf8: "文件不是 UTF-8 编码,请下载",
|
|
444
|
+
rows: "显示 {total} 行中的 {shown} 行",
|
|
445
|
+
source: "代码",
|
|
446
|
+
page: "页面"
|
|
447
|
+
}
|
|
393
448
|
}
|
|
394
449
|
}
|
|
395
450
|
};
|
package/dist/locales.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.js","names":["loading","cancel","create","close","remove","agentName","topbar","chat","loading","cancel","create","close","remove","agentName","topbar","chat","loading","cancel","create","close","remove","agentName","topbar","chat","loading","cancel","create","close","remove","agentName","topbar","chat","UIKIT_NS","resources","\"delete\"","\"sections\"","\"profile\"","\"title\"","\"conversations\"","\"conversation\"","\"topics\"","\"archive\"","\"noTopics\"","\"newTopic\"","\"topicTitle\"","\"topicHint\"","\"loadOlder\"","\"emptyTitle\"","\"placeholder\"","\"send\"","\"attach\"","\"typing\"","\"moreSteps\"","\"hideSteps\"","\"unread\"","\"retry\"","\"tooLarge\"","\"stop\"","\"voice\"","\"hold\"","\"recording\"","\"review\"","\"notRecognized\"","\"micDenied\"","\"unsupported\"","\"start\"","\"done\"","\"recognizing\"","\"recordingNow\"","\"failed\"","\"confirm\"","\"text\"","\"approve\"","\"reject\"","\"wait\"","\"starting\"","\"queued\"","\"palette\"","\"commands\"","\"skills\"","\"noSkills\"","\"empty\"","\"unknownCommand\"","\"sendAsText\"","\"skillPlaceholder\"","\"context\"","\"meter\"","\"full\"","\"compact\"","\"reset\"","\"event\"","\"details\""],"sources":["../src/locales/en.json","../src/locales/ru.json","../src/locales/de.json","../src/locales/es.json","../src/locales/zh.json","../src/locales/index.ts"],"sourcesContent":["{\n \"loading\": \"Loading…\",\n \"cancel\": \"Cancel\",\n \"create\": \"Create\",\n \"close\": \"Close\",\n \"delete\": \"Delete\",\n \"remove\": \"Remove\",\n \"agentName\": \"Agent name\",\n \"topbar\": {\n \"sections\": \"Sections\",\n \"profile\": \"Profile\"\n },\n \"chat\": {\n \"title\": \"Chat\",\n \"conversations\": \"Conversations\",\n \"conversation\": \"Conversation\",\n \"topics\": \"Topics\",\n \"archive\": \"Archive\",\n \"noTopics\": \"No topics yet\",\n \"newTopic\": \"New topic\",\n \"topicTitle\": \"Topic\",\n \"topicHint\": \"A topic has its own history and the same memory and space.\",\n \"loadOlder\": \"Earlier messages\",\n \"emptyTitle\": \"Hi, I am {name}\",\n \"placeholder\": \"Message {name}…\",\n \"send\": \"Send\",\n \"attach\": \"Attach files\",\n \"typing\": \"The agent is typing\",\n \"moreSteps\": \"{count, plural, one {# more step} other {# more steps}}\",\n \"hideSteps\": \"Hide steps\",\n \"unread\": \"{count, plural, one {# unread answer} other {# unread answers}}\",\n \"retry\": \"Retry\",\n \"tooLarge\": \"The file is too large.\",\n \"stop\": \"Stop\",\n \"voice\": {\n \"hold\": \"Hold to record\",\n \"stop\": \"Stop recording\",\n \"recording\": \"Recording… {seconds} s\",\n \"review\": \"Check the transcript before sending\",\n \"notRecognized\": \"The speech was not recognized\",\n \"micDenied\": \"No access to the microphone\",\n \"unsupported\": \"Voice input is not supported in this browser\",\n \"start\": \"Record a voice message\",\n \"done\": \"Stop\",\n \"recognizing\": \"Recognizing…\",\n \"recordingNow\": \"Recording\",\n \"failed\": \"The voice message could not be recognized\",\n \"retry\": \"Retry\"\n },\n \"confirm\": {\n \"title\": \"Confirm the action\",\n \"text\": \"The agent wants to perform: {action}\",\n \"approve\": \"Execute\",\n \"reject\": \"Reject\"\n },\n \"wait\": {\n \"starting\": \"The agent is starting…\",\n \"queued\": \"{count, plural, =0 {In the queue · you are next} one {In the queue · # ahead of you} other {In the queue · # ahead of you}}\"\n },\n \"palette\": {\n \"title\": \"Commands and skills\",\n \"commands\": \"Commands\",\n \"skills\": \"Skills\",\n \"noSkills\": \"No skills are granted to you\",\n \"empty\": \"Nothing found\"\n },\n \"unknownCommand\": \"Unknown command {name}\",\n \"sendAsText\": \"Send as text\",\n \"skillPlaceholder\": \"What to do with the skill?\",\n \"context\": {\n \"meter\": \"Context: {used} of {total} tokens ({pct}%)\",\n \"full\": \"Answers get more expensive and the agent may get confused.\",\n \"compact\": \"Compact\",\n \"reset\": \"Start over\"\n },\n \"event\": {\n \"details\": \"Summary\"\n }\n }\n}\n","{\n \"loading\": \"Загрузка…\",\n \"cancel\": \"Отмена\",\n \"create\": \"Создать\",\n \"close\": \"Закрыть\",\n \"delete\": \"Удалить\",\n \"remove\": \"Убрать\",\n \"agentName\": \"Имя агента\",\n \"topbar\": {\n \"sections\": \"Разделы\",\n \"profile\": \"Профиль\"\n },\n \"chat\": {\n \"title\": \"Чат\",\n \"conversations\": \"Разговоры\",\n \"conversation\": \"Разговор\",\n \"topics\": \"Темы\",\n \"archive\": \"Архив\",\n \"noTopics\": \"Тем пока нет\",\n \"newTopic\": \"Новая тема\",\n \"topicTitle\": \"Тема\",\n \"topicHint\": \"У темы своя история, а память и пространство — те же.\",\n \"loadOlder\": \"Более ранние сообщения\",\n \"emptyTitle\": \"Привет, я {name}\",\n \"placeholder\": \"Сообщение для {name}…\",\n \"send\": \"Отправить\",\n \"attach\": \"Прикрепить файлы\",\n \"typing\": \"Агент печатает\",\n \"moreSteps\": \"{count, plural, one {ещё # шаг} few {ещё # шага} many {ещё # шагов} other {ещё # шага}}\",\n \"hideSteps\": \"Скрыть шаги\",\n \"unread\": \"{count, plural, one {# непрочитанный ответ} few {# непрочитанных ответа} many {# непрочитанных ответов} other {# непрочитанных ответа}}\",\n \"retry\": \"Повторить\",\n \"tooLarge\": \"Файл слишком большой.\",\n \"stop\": \"Остановить\",\n \"voice\": {\n \"hold\": \"Удерживайте для записи\",\n \"stop\": \"Остановить запись\",\n \"recording\": \"Запись… {seconds} с\",\n \"review\": \"Проверьте расшифровку перед отправкой\",\n \"notRecognized\": \"Речь не распознана\",\n \"micDenied\": \"Нет доступа к микрофону\",\n \"unsupported\": \"Голосовой ввод не поддерживается этим браузером\",\n \"start\": \"Записать голосом\",\n \"done\": \"Стоп\",\n \"recognizing\": \"Распознаём…\",\n \"recordingNow\": \"Запись\",\n \"failed\": \"Не удалось распознать голосовое сообщение\",\n \"retry\": \"Повторить\"\n },\n \"confirm\": {\n \"title\": \"Подтвердите действие\",\n \"text\": \"Агент хочет выполнить: {action}\",\n \"approve\": \"Выполнить\",\n \"reject\": \"Отклонить\"\n },\n \"wait\": {\n \"starting\": \"Агент запускается…\",\n \"queued\": \"{count, plural, =0 {В очереди · вы следующий} other {В очереди · перед вами #}}\"\n },\n \"palette\": {\n \"title\": \"Команды и скиллы\",\n \"commands\": \"Команды\",\n \"skills\": \"Скиллы\",\n \"noSkills\": \"Вам не выдан ни один скилл\",\n \"empty\": \"Ничего не найдено\"\n },\n \"unknownCommand\": \"Неизвестная команда {name}\",\n \"sendAsText\": \"Отправить как текст\",\n \"skillPlaceholder\": \"Что сделать по скиллу?\",\n \"context\": {\n \"meter\": \"Контекст: {used} из {total} токенов ({pct} %)\",\n \"full\": \"Ответы дорожают, агент может путаться.\",\n \"compact\": \"Сжать\",\n \"reset\": \"Начать заново\"\n },\n \"event\": {\n \"details\": \"Изложение\"\n }\n }\n}\n","{\n \"loading\": \"Wird geladen…\",\n \"cancel\": \"Abbrechen\",\n \"create\": \"Erstellen\",\n \"close\": \"Schließen\",\n \"delete\": \"Löschen\",\n \"remove\": \"Entfernen\",\n \"agentName\": \"Name des Agenten\",\n \"topbar\": {\n \"sections\": \"Bereiche\",\n \"profile\": \"Profil\"\n },\n \"chat\": {\n \"title\": \"Chat\",\n \"conversations\": \"Gespräche\",\n \"conversation\": \"Gespräch\",\n \"topics\": \"Themen\",\n \"archive\": \"Archiv\",\n \"noTopics\": \"Noch keine Themen\",\n \"newTopic\": \"Neues Thema\",\n \"topicTitle\": \"Thema\",\n \"topicHint\": \"Ein Thema hat einen eigenen Verlauf, aber dasselbe Gedächtnis und denselben Arbeitsbereich.\",\n \"loadOlder\": \"Frühere Nachrichten\",\n \"emptyTitle\": \"Hallo, ich bin {name}\",\n \"placeholder\": \"Nachricht an {name}…\",\n \"send\": \"Senden\",\n \"attach\": \"Dateien anhängen\",\n \"typing\": \"Der Agent schreibt\",\n \"moreSteps\": \"{count, plural, one {# weiterer Schritt} other {# weitere Schritte}}\",\n \"hideSteps\": \"Schritte ausblenden\",\n \"unread\": \"{count, plural, one {# ungelesene Antwort} other {# ungelesene Antworten}}\",\n \"retry\": \"Wiederholen\",\n \"tooLarge\": \"Die Datei ist zu groß.\",\n \"stop\": \"Stoppen\",\n \"voice\": {\n \"hold\": \"Zum Aufnehmen gedrückt halten\",\n \"stop\": \"Aufnahme beenden\",\n \"recording\": \"Aufnahme… {seconds} s\",\n \"review\": \"Prüfen Sie die Transkription vor dem Senden\",\n \"notRecognized\": \"Die Sprache wurde nicht erkannt\",\n \"micDenied\": \"Kein Zugriff auf das Mikrofon\",\n \"unsupported\": \"Spracheingabe wird von diesem Browser nicht unterstützt\",\n \"start\": \"Sprachnachricht aufnehmen\",\n \"done\": \"Stopp\",\n \"recognizing\": \"Wird erkannt…\",\n \"recordingNow\": \"Aufnahme\",\n \"failed\": \"Die Sprachnachricht konnte nicht erkannt werden\",\n \"retry\": \"Wiederholen\"\n },\n \"confirm\": {\n \"title\": \"Aktion bestätigen\",\n \"text\": \"Der Agent möchte ausführen: {action}\",\n \"approve\": \"Ausführen\",\n \"reject\": \"Ablehnen\"\n },\n \"wait\": {\n \"starting\": \"Der Agent startet…\",\n \"queued\": \"{count, plural, =0 {In der Warteschlange · Sie sind als Nächstes dran} other {In der Warteschlange · # vor Ihnen}}\"\n },\n \"palette\": {\n \"title\": \"Befehle und Skills\",\n \"commands\": \"Befehle\",\n \"skills\": \"Skills\",\n \"noSkills\": \"Ihnen ist kein Skill freigegeben\",\n \"empty\": \"Nichts gefunden\"\n },\n \"unknownCommand\": \"Unbekannter Befehl {name}\",\n \"sendAsText\": \"Als Text senden\",\n \"skillPlaceholder\": \"Was soll mit dem Skill getan werden?\",\n \"context\": {\n \"meter\": \"Kontext: {used} von {total} Tokens ({pct} %)\",\n \"full\": \"Antworten werden teurer, der Agent kann durcheinanderkommen.\",\n \"compact\": \"Komprimieren\",\n \"reset\": \"Neu beginnen\"\n },\n \"event\": {\n \"details\": \"Zusammenfassung\"\n }\n }\n}\n","{\n \"loading\": \"Cargando…\",\n \"cancel\": \"Cancelar\",\n \"create\": \"Crear\",\n \"close\": \"Cerrar\",\n \"delete\": \"Eliminar\",\n \"remove\": \"Quitar\",\n \"agentName\": \"Nombre del agente\",\n \"topbar\": {\n \"sections\": \"Secciones\",\n \"profile\": \"Perfil\"\n },\n \"chat\": {\n \"title\": \"Chat\",\n \"conversations\": \"Conversaciones\",\n \"conversation\": \"Conversación\",\n \"topics\": \"Temas\",\n \"archive\": \"Archivo\",\n \"noTopics\": \"Aún no hay temas\",\n \"newTopic\": \"Nuevo tema\",\n \"topicTitle\": \"Tema\",\n \"topicHint\": \"Un tema tiene su propio historial y la misma memoria y espacio.\",\n \"loadOlder\": \"Mensajes anteriores\",\n \"emptyTitle\": \"Hola, soy {name}\",\n \"placeholder\": \"Mensaje para {name}…\",\n \"send\": \"Enviar\",\n \"attach\": \"Adjuntar archivos\",\n \"typing\": \"El agente está escribiendo\",\n \"moreSteps\": \"{count, plural, one {# paso más} other {# pasos más}}\",\n \"hideSteps\": \"Ocultar pasos\",\n \"unread\": \"{count, plural, one {# respuesta sin leer} other {# respuestas sin leer}}\",\n \"retry\": \"Reintentar\",\n \"tooLarge\": \"El archivo es demasiado grande.\",\n \"stop\": \"Detener\",\n \"voice\": {\n \"hold\": \"Mantenga pulsado para grabar\",\n \"stop\": \"Detener la grabación\",\n \"recording\": \"Grabando… {seconds} s\",\n \"review\": \"Revise la transcripción antes de enviar\",\n \"notRecognized\": \"No se reconoció la voz\",\n \"micDenied\": \"Sin acceso al micrófono\",\n \"unsupported\": \"Este navegador no admite la entrada de voz\",\n \"start\": \"Grabar un mensaje de voz\",\n \"done\": \"Detener\",\n \"recognizing\": \"Reconociendo…\",\n \"recordingNow\": \"Grabando\",\n \"failed\": \"No se pudo reconocer el mensaje de voz\",\n \"retry\": \"Reintentar\"\n },\n \"confirm\": {\n \"title\": \"Confirme la acción\",\n \"text\": \"El agente quiere ejecutar: {action}\",\n \"approve\": \"Ejecutar\",\n \"reject\": \"Rechazar\"\n },\n \"wait\": {\n \"starting\": \"El agente se está iniciando…\",\n \"queued\": \"{count, plural, =0 {En cola · usted es el siguiente} other {En cola · # por delante}}\"\n },\n \"palette\": {\n \"title\": \"Comandos y skills\",\n \"commands\": \"Comandos\",\n \"skills\": \"Skills\",\n \"noSkills\": \"No tiene skills disponibles\",\n \"empty\": \"No se encontró nada\"\n },\n \"unknownCommand\": \"Comando desconocido {name}\",\n \"sendAsText\": \"Enviar como texto\",\n \"skillPlaceholder\": \"¿Qué hacer con el skill?\",\n \"context\": {\n \"meter\": \"Contexto: {used} de {total} tokens ({pct} %)\",\n \"full\": \"Las respuestas se encarecen y el agente puede confundirse.\",\n \"compact\": \"Compactar\",\n \"reset\": \"Empezar de nuevo\"\n },\n \"event\": {\n \"details\": \"Resumen\"\n }\n }\n}\n","{\n \"loading\": \"加载中…\",\n \"cancel\": \"取消\",\n \"create\": \"创建\",\n \"close\": \"关闭\",\n \"delete\": \"删除\",\n \"remove\": \"移除\",\n \"agentName\": \"智能体名称\",\n \"topbar\": {\n \"sections\": \"栏目\",\n \"profile\": \"个人资料\"\n },\n \"chat\": {\n \"title\": \"聊天\",\n \"conversations\": \"对话\",\n \"conversation\": \"对话\",\n \"topics\": \"话题\",\n \"archive\": \"归档\",\n \"noTopics\": \"暂无话题\",\n \"newTopic\": \"新话题\",\n \"topicTitle\": \"话题\",\n \"topicHint\": \"话题有独立的历史记录,记忆和空间与主对话相同。\",\n \"loadOlder\": \"更早的消息\",\n \"emptyTitle\": \"你好,我是 {name}\",\n \"placeholder\": \"给 {name} 发消息…\",\n \"send\": \"发送\",\n \"attach\": \"附加文件\",\n \"typing\": \"智能体正在输入\",\n \"moreSteps\": \"{count, plural, other {另外 # 个步骤}}\",\n \"hideSteps\": \"隐藏步骤\",\n \"unread\": \"{count} 条未读回复\",\n \"retry\": \"重试\",\n \"tooLarge\": \"文件太大。\",\n \"stop\": \"停止\",\n \"voice\": {\n \"hold\": \"按住录音\",\n \"stop\": \"停止录音\",\n \"recording\": \"录音中… {seconds} 秒\",\n \"review\": \"发送前请检查转写文本\",\n \"notRecognized\": \"未能识别语音\",\n \"micDenied\": \"无法访问麦克风\",\n \"unsupported\": \"此浏览器不支持语音输入\",\n \"start\": \"录制语音\",\n \"done\": \"停止\",\n \"recognizing\": \"正在识别…\",\n \"recordingNow\": \"录音中\",\n \"failed\": \"无法识别语音消息\",\n \"retry\": \"重试\"\n },\n \"confirm\": {\n \"title\": \"确认操作\",\n \"text\": \"代理想要执行:{action}\",\n \"approve\": \"执行\",\n \"reject\": \"拒绝\"\n },\n \"wait\": {\n \"starting\": \"代理正在启动…\",\n \"queued\": \"{count, plural, =0 {排队中 · 您是下一位} other {排队中 · 前面还有 # 位}}\"\n },\n \"palette\": {\n \"title\": \"命令和技能\",\n \"commands\": \"命令\",\n \"skills\": \"技能\",\n \"noSkills\": \"您没有可用的技能\",\n \"empty\": \"未找到\"\n },\n \"unknownCommand\": \"未知命令 {name}\",\n \"sendAsText\": \"作为文本发送\",\n \"skillPlaceholder\": \"用这个技能做什么?\",\n \"context\": {\n \"meter\": \"上下文:{used} / {total} 个令牌({pct}%)\",\n \"full\": \"回答变得更贵,代理可能会混淆。\",\n \"compact\": \"压缩\",\n \"reset\": \"重新开始\"\n },\n \"event\": {\n \"details\": \"摘要\"\n }\n }\n}\n","import en from \"./en.json\";\nimport ru from \"./ru.json\";\nimport de from \"./de.json\";\nimport es from \"./es.json\";\nimport zh from \"./zh.json\";\n\n/** Strings of the components in the five languages of the products. A product adds\n * them to its i18next instance under the namespace `uikit`. */\nexport const resources = { en, ru, de, es, zh };\nexport type KitLanguage = keyof typeof resources;\nexport { UIKIT_NS } from \"../i18n\";\n"],"mappings":";;;AKQA,IAAaiC,IAAY;CAAE,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;AAAG"}
|
|
1
|
+
{"version":3,"file":"locales.js","names":["loading","cancel","create","close","remove","agentName","topbar","chat","loading","cancel","create","close","remove","agentName","topbar","chat","loading","cancel","create","close","remove","agentName","topbar","chat","loading","cancel","create","close","remove","agentName","topbar","chat","UIKIT_NS","resources","\"delete\"","\"sections\"","\"profile\"","\"title\"","\"conversations\"","\"conversation\"","\"topics\"","\"archive\"","\"noTopics\"","\"newTopic\"","\"topicTitle\"","\"topicHint\"","\"loadOlder\"","\"emptyTitle\"","\"placeholder\"","\"send\"","\"attach\"","\"typing\"","\"moreSteps\"","\"hideSteps\"","\"unread\"","\"retry\"","\"tooLarge\"","\"stop\"","\"voice\"","\"hold\"","\"recording\"","\"review\"","\"notRecognized\"","\"micDenied\"","\"unsupported\"","\"start\"","\"done\"","\"recognizing\"","\"recordingNow\"","\"failed\"","\"confirm\"","\"text\"","\"approve\"","\"reject\"","\"wait\"","\"starting\"","\"queued\"","\"palette\"","\"commands\"","\"skills\"","\"noSkills\"","\"empty\"","\"unknownCommand\"","\"sendAsText\"","\"skillPlaceholder\"","\"context\"","\"meter\"","\"full\"","\"compact\"","\"reset\"","\"event\"","\"details\"","\"files\"","\"open\"","\"download\"","\"save\"","\"notUtf8\"","\"rows\"","\"source\"","\"page\""],"sources":["../src/locales/en.json","../src/locales/ru.json","../src/locales/de.json","../src/locales/es.json","../src/locales/zh.json","../src/locales/index.ts"],"sourcesContent":["{\n \"loading\": \"Loading…\",\n \"cancel\": \"Cancel\",\n \"create\": \"Create\",\n \"close\": \"Close\",\n \"delete\": \"Delete\",\n \"remove\": \"Remove\",\n \"agentName\": \"Agent name\",\n \"topbar\": {\n \"sections\": \"Sections\",\n \"profile\": \"Profile\"\n },\n \"chat\": {\n \"title\": \"Chat\",\n \"conversations\": \"Conversations\",\n \"conversation\": \"Conversation\",\n \"topics\": \"Topics\",\n \"archive\": \"Archive\",\n \"noTopics\": \"No topics yet\",\n \"newTopic\": \"New topic\",\n \"topicTitle\": \"Topic\",\n \"topicHint\": \"A topic has its own history and the same memory and space.\",\n \"loadOlder\": \"Earlier messages\",\n \"emptyTitle\": \"Hi, I am {name}\",\n \"placeholder\": \"Message {name}…\",\n \"send\": \"Send\",\n \"attach\": \"Attach files\",\n \"typing\": \"The agent is typing\",\n \"moreSteps\": \"{count, plural, one {# more step} other {# more steps}}\",\n \"hideSteps\": \"Hide steps\",\n \"unread\": \"{count, plural, one {# unread answer} other {# unread answers}}\",\n \"retry\": \"Retry\",\n \"tooLarge\": \"The file is too large.\",\n \"stop\": \"Stop\",\n \"voice\": {\n \"hold\": \"Hold to record\",\n \"stop\": \"Stop recording\",\n \"recording\": \"Recording… {seconds} s\",\n \"review\": \"Check the transcript before sending\",\n \"notRecognized\": \"The speech was not recognized\",\n \"micDenied\": \"No access to the microphone\",\n \"unsupported\": \"Voice input is not supported in this browser\",\n \"start\": \"Record a voice message\",\n \"done\": \"Stop\",\n \"recognizing\": \"Recognizing…\",\n \"recordingNow\": \"Recording\",\n \"failed\": \"The voice message could not be recognized\",\n \"retry\": \"Retry\"\n },\n \"confirm\": {\n \"title\": \"Confirm the action\",\n \"text\": \"The agent wants to perform: {action}\",\n \"approve\": \"Execute\",\n \"reject\": \"Reject\"\n },\n \"wait\": {\n \"starting\": \"The agent is starting…\",\n \"queued\": \"{count, plural, =0 {In the queue · you are next} one {In the queue · # ahead of you} other {In the queue · # ahead of you}}\"\n },\n \"palette\": {\n \"title\": \"Commands and skills\",\n \"commands\": \"Commands\",\n \"skills\": \"Skills\",\n \"noSkills\": \"No skills are granted to you\",\n \"empty\": \"Nothing found\"\n },\n \"unknownCommand\": \"Unknown command {name}\",\n \"sendAsText\": \"Send as text\",\n \"skillPlaceholder\": \"What to do with the skill?\",\n \"context\": {\n \"meter\": \"Context: {used} of {total} tokens ({pct}%)\",\n \"full\": \"Answers get more expensive and the agent may get confused.\",\n \"compact\": \"Compact\",\n \"reset\": \"Start over\"\n },\n \"event\": {\n \"details\": \"Summary\"\n },\n \"files\": {\n \"open\": \"Open {name}\",\n \"download\": \"Download\",\n \"failed\": \"Could not open the file\",\n \"tooLarge\": \"The file is too large to preview — download it\",\n \"save\": \"Download {name}\",\n \"notUtf8\": \"The file is not in UTF-8 — download it\",\n \"rows\": \"Showing {shown} of {total, plural, one {# row} other {# rows}}\",\n \"source\": \"Code\",\n \"page\": \"Page\"\n }\n }\n}\n","{\n \"loading\": \"Загрузка…\",\n \"cancel\": \"Отмена\",\n \"create\": \"Создать\",\n \"close\": \"Закрыть\",\n \"delete\": \"Удалить\",\n \"remove\": \"Убрать\",\n \"agentName\": \"Имя агента\",\n \"topbar\": {\n \"sections\": \"Разделы\",\n \"profile\": \"Профиль\"\n },\n \"chat\": {\n \"title\": \"Чат\",\n \"conversations\": \"Разговоры\",\n \"conversation\": \"Разговор\",\n \"topics\": \"Темы\",\n \"archive\": \"Архив\",\n \"noTopics\": \"Тем пока нет\",\n \"newTopic\": \"Новая тема\",\n \"topicTitle\": \"Тема\",\n \"topicHint\": \"У темы своя история, а память и пространство — те же.\",\n \"loadOlder\": \"Более ранние сообщения\",\n \"emptyTitle\": \"Привет, я {name}\",\n \"placeholder\": \"Сообщение для {name}…\",\n \"send\": \"Отправить\",\n \"attach\": \"Прикрепить файлы\",\n \"typing\": \"Агент печатает\",\n \"moreSteps\": \"{count, plural, one {ещё # шаг} few {ещё # шага} many {ещё # шагов} other {ещё # шага}}\",\n \"hideSteps\": \"Скрыть шаги\",\n \"unread\": \"{count, plural, one {# непрочитанный ответ} few {# непрочитанных ответа} many {# непрочитанных ответов} other {# непрочитанных ответа}}\",\n \"retry\": \"Повторить\",\n \"tooLarge\": \"Файл слишком большой.\",\n \"stop\": \"Остановить\",\n \"voice\": {\n \"hold\": \"Удерживайте для записи\",\n \"stop\": \"Остановить запись\",\n \"recording\": \"Запись… {seconds} с\",\n \"review\": \"Проверьте расшифровку перед отправкой\",\n \"notRecognized\": \"Речь не распознана\",\n \"micDenied\": \"Нет доступа к микрофону\",\n \"unsupported\": \"Голосовой ввод не поддерживается этим браузером\",\n \"start\": \"Записать голосом\",\n \"done\": \"Стоп\",\n \"recognizing\": \"Распознаём…\",\n \"recordingNow\": \"Запись\",\n \"failed\": \"Не удалось распознать голосовое сообщение\",\n \"retry\": \"Повторить\"\n },\n \"confirm\": {\n \"title\": \"Подтвердите действие\",\n \"text\": \"Агент хочет выполнить: {action}\",\n \"approve\": \"Выполнить\",\n \"reject\": \"Отклонить\"\n },\n \"wait\": {\n \"starting\": \"Агент запускается…\",\n \"queued\": \"{count, plural, =0 {В очереди · вы следующий} other {В очереди · перед вами #}}\"\n },\n \"palette\": {\n \"title\": \"Команды и скиллы\",\n \"commands\": \"Команды\",\n \"skills\": \"Скиллы\",\n \"noSkills\": \"Вам не выдан ни один скилл\",\n \"empty\": \"Ничего не найдено\"\n },\n \"unknownCommand\": \"Неизвестная команда {name}\",\n \"sendAsText\": \"Отправить как текст\",\n \"skillPlaceholder\": \"Что сделать по скиллу?\",\n \"context\": {\n \"meter\": \"Контекст: {used} из {total} токенов ({pct} %)\",\n \"full\": \"Ответы дорожают, агент может путаться.\",\n \"compact\": \"Сжать\",\n \"reset\": \"Начать заново\"\n },\n \"event\": {\n \"details\": \"Изложение\"\n },\n \"files\": {\n \"open\": \"Открыть {name}\",\n \"download\": \"Скачать\",\n \"failed\": \"Не удалось открыть файл\",\n \"tooLarge\": \"Файл слишком большой для просмотра — скачайте его\",\n \"save\": \"Скачать {name}\",\n \"notUtf8\": \"Файл не в кодировке UTF-8 — скачайте его\",\n \"rows\": \"Показаны {shown} из {total, plural, one {# строки} other {# строк}}\",\n \"source\": \"Код\",\n \"page\": \"Страница\"\n }\n }\n}\n","{\n \"loading\": \"Wird geladen…\",\n \"cancel\": \"Abbrechen\",\n \"create\": \"Erstellen\",\n \"close\": \"Schließen\",\n \"delete\": \"Löschen\",\n \"remove\": \"Entfernen\",\n \"agentName\": \"Name des Agenten\",\n \"topbar\": {\n \"sections\": \"Bereiche\",\n \"profile\": \"Profil\"\n },\n \"chat\": {\n \"title\": \"Chat\",\n \"conversations\": \"Gespräche\",\n \"conversation\": \"Gespräch\",\n \"topics\": \"Themen\",\n \"archive\": \"Archiv\",\n \"noTopics\": \"Noch keine Themen\",\n \"newTopic\": \"Neues Thema\",\n \"topicTitle\": \"Thema\",\n \"topicHint\": \"Ein Thema hat einen eigenen Verlauf, aber dasselbe Gedächtnis und denselben Arbeitsbereich.\",\n \"loadOlder\": \"Frühere Nachrichten\",\n \"emptyTitle\": \"Hallo, ich bin {name}\",\n \"placeholder\": \"Nachricht an {name}…\",\n \"send\": \"Senden\",\n \"attach\": \"Dateien anhängen\",\n \"typing\": \"Der Agent schreibt\",\n \"moreSteps\": \"{count, plural, one {# weiterer Schritt} other {# weitere Schritte}}\",\n \"hideSteps\": \"Schritte ausblenden\",\n \"unread\": \"{count, plural, one {# ungelesene Antwort} other {# ungelesene Antworten}}\",\n \"retry\": \"Wiederholen\",\n \"tooLarge\": \"Die Datei ist zu groß.\",\n \"stop\": \"Stoppen\",\n \"voice\": {\n \"hold\": \"Zum Aufnehmen gedrückt halten\",\n \"stop\": \"Aufnahme beenden\",\n \"recording\": \"Aufnahme… {seconds} s\",\n \"review\": \"Prüfen Sie die Transkription vor dem Senden\",\n \"notRecognized\": \"Die Sprache wurde nicht erkannt\",\n \"micDenied\": \"Kein Zugriff auf das Mikrofon\",\n \"unsupported\": \"Spracheingabe wird von diesem Browser nicht unterstützt\",\n \"start\": \"Sprachnachricht aufnehmen\",\n \"done\": \"Stopp\",\n \"recognizing\": \"Wird erkannt…\",\n \"recordingNow\": \"Aufnahme\",\n \"failed\": \"Die Sprachnachricht konnte nicht erkannt werden\",\n \"retry\": \"Wiederholen\"\n },\n \"confirm\": {\n \"title\": \"Aktion bestätigen\",\n \"text\": \"Der Agent möchte ausführen: {action}\",\n \"approve\": \"Ausführen\",\n \"reject\": \"Ablehnen\"\n },\n \"wait\": {\n \"starting\": \"Der Agent startet…\",\n \"queued\": \"{count, plural, =0 {In der Warteschlange · Sie sind als Nächstes dran} other {In der Warteschlange · # vor Ihnen}}\"\n },\n \"palette\": {\n \"title\": \"Befehle und Skills\",\n \"commands\": \"Befehle\",\n \"skills\": \"Skills\",\n \"noSkills\": \"Ihnen ist kein Skill freigegeben\",\n \"empty\": \"Nichts gefunden\"\n },\n \"unknownCommand\": \"Unbekannter Befehl {name}\",\n \"sendAsText\": \"Als Text senden\",\n \"skillPlaceholder\": \"Was soll mit dem Skill getan werden?\",\n \"context\": {\n \"meter\": \"Kontext: {used} von {total} Tokens ({pct} %)\",\n \"full\": \"Antworten werden teurer, der Agent kann durcheinanderkommen.\",\n \"compact\": \"Komprimieren\",\n \"reset\": \"Neu beginnen\"\n },\n \"event\": {\n \"details\": \"Zusammenfassung\"\n },\n \"files\": {\n \"open\": \"{name} öffnen\",\n \"download\": \"Herunterladen\",\n \"failed\": \"Die Datei konnte nicht geöffnet werden\",\n \"tooLarge\": \"Die Datei ist zu groß für die Vorschau — bitte herunterladen\",\n \"save\": \"{name} herunterladen\",\n \"notUtf8\": \"Die Datei ist nicht in UTF-8 — bitte herunterladen\",\n \"rows\": \"{shown} von {total, plural, one {# Zeile} other {# Zeilen}} angezeigt\",\n \"source\": \"Code\",\n \"page\": \"Seite\"\n }\n }\n}\n","{\n \"loading\": \"Cargando…\",\n \"cancel\": \"Cancelar\",\n \"create\": \"Crear\",\n \"close\": \"Cerrar\",\n \"delete\": \"Eliminar\",\n \"remove\": \"Quitar\",\n \"agentName\": \"Nombre del agente\",\n \"topbar\": {\n \"sections\": \"Secciones\",\n \"profile\": \"Perfil\"\n },\n \"chat\": {\n \"title\": \"Chat\",\n \"conversations\": \"Conversaciones\",\n \"conversation\": \"Conversación\",\n \"topics\": \"Temas\",\n \"archive\": \"Archivo\",\n \"noTopics\": \"Aún no hay temas\",\n \"newTopic\": \"Nuevo tema\",\n \"topicTitle\": \"Tema\",\n \"topicHint\": \"Un tema tiene su propio historial y la misma memoria y espacio.\",\n \"loadOlder\": \"Mensajes anteriores\",\n \"emptyTitle\": \"Hola, soy {name}\",\n \"placeholder\": \"Mensaje para {name}…\",\n \"send\": \"Enviar\",\n \"attach\": \"Adjuntar archivos\",\n \"typing\": \"El agente está escribiendo\",\n \"moreSteps\": \"{count, plural, one {# paso más} other {# pasos más}}\",\n \"hideSteps\": \"Ocultar pasos\",\n \"unread\": \"{count, plural, one {# respuesta sin leer} other {# respuestas sin leer}}\",\n \"retry\": \"Reintentar\",\n \"tooLarge\": \"El archivo es demasiado grande.\",\n \"stop\": \"Detener\",\n \"voice\": {\n \"hold\": \"Mantenga pulsado para grabar\",\n \"stop\": \"Detener la grabación\",\n \"recording\": \"Grabando… {seconds} s\",\n \"review\": \"Revise la transcripción antes de enviar\",\n \"notRecognized\": \"No se reconoció la voz\",\n \"micDenied\": \"Sin acceso al micrófono\",\n \"unsupported\": \"Este navegador no admite la entrada de voz\",\n \"start\": \"Grabar un mensaje de voz\",\n \"done\": \"Detener\",\n \"recognizing\": \"Reconociendo…\",\n \"recordingNow\": \"Grabando\",\n \"failed\": \"No se pudo reconocer el mensaje de voz\",\n \"retry\": \"Reintentar\"\n },\n \"confirm\": {\n \"title\": \"Confirme la acción\",\n \"text\": \"El agente quiere ejecutar: {action}\",\n \"approve\": \"Ejecutar\",\n \"reject\": \"Rechazar\"\n },\n \"wait\": {\n \"starting\": \"El agente se está iniciando…\",\n \"queued\": \"{count, plural, =0 {En cola · usted es el siguiente} other {En cola · # por delante}}\"\n },\n \"palette\": {\n \"title\": \"Comandos y skills\",\n \"commands\": \"Comandos\",\n \"skills\": \"Skills\",\n \"noSkills\": \"No tiene skills disponibles\",\n \"empty\": \"No se encontró nada\"\n },\n \"unknownCommand\": \"Comando desconocido {name}\",\n \"sendAsText\": \"Enviar como texto\",\n \"skillPlaceholder\": \"¿Qué hacer con el skill?\",\n \"context\": {\n \"meter\": \"Contexto: {used} de {total} tokens ({pct} %)\",\n \"full\": \"Las respuestas se encarecen y el agente puede confundirse.\",\n \"compact\": \"Compactar\",\n \"reset\": \"Empezar de nuevo\"\n },\n \"event\": {\n \"details\": \"Resumen\"\n },\n \"files\": {\n \"open\": \"Abrir {name}\",\n \"download\": \"Descargar\",\n \"failed\": \"No se pudo abrir el archivo\",\n \"tooLarge\": \"El archivo es demasiado grande para la vista previa: descárguelo\",\n \"save\": \"Descargar {name}\",\n \"notUtf8\": \"El archivo no está en UTF-8: descárguelo\",\n \"rows\": \"Se muestran {shown} de {total, plural, one {# fila} other {# filas}}\",\n \"source\": \"Código\",\n \"page\": \"Página\"\n }\n }\n}\n","{\n \"loading\": \"加载中…\",\n \"cancel\": \"取消\",\n \"create\": \"创建\",\n \"close\": \"关闭\",\n \"delete\": \"删除\",\n \"remove\": \"移除\",\n \"agentName\": \"智能体名称\",\n \"topbar\": {\n \"sections\": \"栏目\",\n \"profile\": \"个人资料\"\n },\n \"chat\": {\n \"title\": \"聊天\",\n \"conversations\": \"对话\",\n \"conversation\": \"对话\",\n \"topics\": \"话题\",\n \"archive\": \"归档\",\n \"noTopics\": \"暂无话题\",\n \"newTopic\": \"新话题\",\n \"topicTitle\": \"话题\",\n \"topicHint\": \"话题有独立的历史记录,记忆和空间与主对话相同。\",\n \"loadOlder\": \"更早的消息\",\n \"emptyTitle\": \"你好,我是 {name}\",\n \"placeholder\": \"给 {name} 发消息…\",\n \"send\": \"发送\",\n \"attach\": \"附加文件\",\n \"typing\": \"智能体正在输入\",\n \"moreSteps\": \"{count, plural, other {另外 # 个步骤}}\",\n \"hideSteps\": \"隐藏步骤\",\n \"unread\": \"{count} 条未读回复\",\n \"retry\": \"重试\",\n \"tooLarge\": \"文件太大。\",\n \"stop\": \"停止\",\n \"voice\": {\n \"hold\": \"按住录音\",\n \"stop\": \"停止录音\",\n \"recording\": \"录音中… {seconds} 秒\",\n \"review\": \"发送前请检查转写文本\",\n \"notRecognized\": \"未能识别语音\",\n \"micDenied\": \"无法访问麦克风\",\n \"unsupported\": \"此浏览器不支持语音输入\",\n \"start\": \"录制语音\",\n \"done\": \"停止\",\n \"recognizing\": \"正在识别…\",\n \"recordingNow\": \"录音中\",\n \"failed\": \"无法识别语音消息\",\n \"retry\": \"重试\"\n },\n \"confirm\": {\n \"title\": \"确认操作\",\n \"text\": \"代理想要执行:{action}\",\n \"approve\": \"执行\",\n \"reject\": \"拒绝\"\n },\n \"wait\": {\n \"starting\": \"代理正在启动…\",\n \"queued\": \"{count, plural, =0 {排队中 · 您是下一位} other {排队中 · 前面还有 # 位}}\"\n },\n \"palette\": {\n \"title\": \"命令和技能\",\n \"commands\": \"命令\",\n \"skills\": \"技能\",\n \"noSkills\": \"您没有可用的技能\",\n \"empty\": \"未找到\"\n },\n \"unknownCommand\": \"未知命令 {name}\",\n \"sendAsText\": \"作为文本发送\",\n \"skillPlaceholder\": \"用这个技能做什么?\",\n \"context\": {\n \"meter\": \"上下文:{used} / {total} 个令牌({pct}%)\",\n \"full\": \"回答变得更贵,代理可能会混淆。\",\n \"compact\": \"压缩\",\n \"reset\": \"重新开始\"\n },\n \"event\": {\n \"details\": \"摘要\"\n },\n \"files\": {\n \"open\": \"打开 {name}\",\n \"download\": \"下载\",\n \"failed\": \"无法打开文件\",\n \"tooLarge\": \"文件太大,无法预览,请下载\",\n \"save\": \"下载 {name}\",\n \"notUtf8\": \"文件不是 UTF-8 编码,请下载\",\n \"rows\": \"显示 {total} 行中的 {shown} 行\",\n \"source\": \"代码\",\n \"page\": \"页面\"\n }\n }\n}\n","import en from \"./en.json\";\nimport ru from \"./ru.json\";\nimport de from \"./de.json\";\nimport es from \"./es.json\";\nimport zh from \"./zh.json\";\n\n/** Strings of the components in the five languages of the products. A product adds\n * them to its i18next instance under the namespace `uikit`. */\nexport const resources = { en, ru, de, es, zh };\nexport type KitLanguage = keyof typeof resources;\nexport { UIKIT_NS } from \"../i18n\";\n"],"mappings":";;;AKQA,IAAaiC,IAAY;CAAE,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;CAAI,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAA;AAAG"}
|
package/dist/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.4.0",
|
|
3
3
|
"classes": [
|
|
4
4
|
"a",
|
|
5
5
|
"action",
|
|
@@ -16,6 +16,23 @@
|
|
|
16
16
|
"amber",
|
|
17
17
|
"app",
|
|
18
18
|
"arch",
|
|
19
|
+
"att-cap",
|
|
20
|
+
"att-html",
|
|
21
|
+
"att-ic",
|
|
22
|
+
"att-img",
|
|
23
|
+
"att-kl",
|
|
24
|
+
"att-md",
|
|
25
|
+
"att-more",
|
|
26
|
+
"att-msg",
|
|
27
|
+
"att-name",
|
|
28
|
+
"att-pdf",
|
|
29
|
+
"att-size",
|
|
30
|
+
"att-table",
|
|
31
|
+
"att-text",
|
|
32
|
+
"att-thumb",
|
|
33
|
+
"att-tile",
|
|
34
|
+
"att-title",
|
|
35
|
+
"att-view",
|
|
19
36
|
"atts",
|
|
20
37
|
"avatar",
|
|
21
38
|
"badges",
|
|
@@ -46,6 +63,7 @@
|
|
|
46
63
|
"danger",
|
|
47
64
|
"danger-fill",
|
|
48
65
|
"dashed",
|
|
66
|
+
"dl",
|
|
49
67
|
"dot",
|
|
50
68
|
"draft",
|
|
51
69
|
"ds",
|
|
@@ -76,9 +94,12 @@
|
|
|
76
94
|
"hide-m",
|
|
77
95
|
"hint",
|
|
78
96
|
"hintbox",
|
|
97
|
+
"html",
|
|
79
98
|
"i",
|
|
80
99
|
"ic",
|
|
81
100
|
"iconbtn",
|
|
101
|
+
"image",
|
|
102
|
+
"in-burger",
|
|
82
103
|
"inherit",
|
|
83
104
|
"inp",
|
|
84
105
|
"it",
|
|
@@ -96,6 +117,7 @@
|
|
|
96
117
|
"lvl",
|
|
97
118
|
"m",
|
|
98
119
|
"main",
|
|
120
|
+
"markdown",
|
|
99
121
|
"mb",
|
|
100
122
|
"mentor",
|
|
101
123
|
"menu",
|
|
@@ -126,6 +148,7 @@
|
|
|
126
148
|
"palette-row",
|
|
127
149
|
"panel",
|
|
128
150
|
"panel-h",
|
|
151
|
+
"pdf",
|
|
129
152
|
"pending-files",
|
|
130
153
|
"primary",
|
|
131
154
|
"prose",
|
|
@@ -134,6 +157,7 @@
|
|
|
134
157
|
"rec",
|
|
135
158
|
"rec-box",
|
|
136
159
|
"recbar",
|
|
160
|
+
"recognizing",
|
|
137
161
|
"row",
|
|
138
162
|
"row2",
|
|
139
163
|
"run",
|
|
@@ -162,6 +186,7 @@
|
|
|
162
186
|
"table",
|
|
163
187
|
"tabs",
|
|
164
188
|
"tag",
|
|
189
|
+
"text",
|
|
165
190
|
"textbtn",
|
|
166
191
|
"tm",
|
|
167
192
|
"toast",
|
|
@@ -177,6 +202,7 @@
|
|
|
177
202
|
"typing",
|
|
178
203
|
"u",
|
|
179
204
|
"unread",
|
|
205
|
+
"voicewait",
|
|
180
206
|
"warn",
|
|
181
207
|
"warn-t",
|
|
182
208
|
"webhook",
|
|
@@ -192,6 +218,23 @@
|
|
|
192
218
|
"agentoption",
|
|
193
219
|
"agentoptions",
|
|
194
220
|
"app",
|
|
221
|
+
"att-cap",
|
|
222
|
+
"att-html",
|
|
223
|
+
"att-ic",
|
|
224
|
+
"att-img",
|
|
225
|
+
"att-kl",
|
|
226
|
+
"att-md",
|
|
227
|
+
"att-more",
|
|
228
|
+
"att-msg",
|
|
229
|
+
"att-name",
|
|
230
|
+
"att-pdf",
|
|
231
|
+
"att-size",
|
|
232
|
+
"att-table",
|
|
233
|
+
"att-text",
|
|
234
|
+
"att-thumb",
|
|
235
|
+
"att-tile",
|
|
236
|
+
"att-title",
|
|
237
|
+
"att-view",
|
|
195
238
|
"avatar",
|
|
196
239
|
"brand",
|
|
197
240
|
"btn",
|
|
@@ -292,6 +335,7 @@
|
|
|
292
335
|
"turnstate",
|
|
293
336
|
"typing",
|
|
294
337
|
"unread",
|
|
338
|
+
"voicewait",
|
|
295
339
|
"warn",
|
|
296
340
|
"warn-t",
|
|
297
341
|
"webhook"
|
package/dist/styles.css
CHANGED
|
@@ -495,6 +495,9 @@ h3.sec {
|
|
|
495
495
|
inset: 0;
|
|
496
496
|
background: var(--overlay);
|
|
497
497
|
display: grid;
|
|
498
|
+
/* the column is never wider than the screen: wide content (code, a table)
|
|
499
|
+
scrolls inside the modal instead of pushing it past the edges */
|
|
500
|
+
grid-template-columns: minmax(0, 1fr);
|
|
498
501
|
place-items: center;
|
|
499
502
|
padding: 24px;
|
|
500
503
|
z-index: 50;
|
|
@@ -693,8 +696,11 @@ textarea.inp {
|
|
|
693
696
|
border-radius: var(--r-m);
|
|
694
697
|
padding: 8px 10px;
|
|
695
698
|
font-size: 14px;
|
|
699
|
+
line-height: 20px;
|
|
696
700
|
min-height: 38px;
|
|
697
|
-
|
|
701
|
+
/* three lines: the field grows up to them, then scrolls (FTR.NAB.CHAT-0001 design §3.1) */
|
|
702
|
+
max-height: calc(3 * 20px + 18px);
|
|
703
|
+
overflow-y: auto;
|
|
698
704
|
resize: none;
|
|
699
705
|
background: var(--surface);
|
|
700
706
|
}
|
|
@@ -944,6 +950,9 @@ table.t tr.clickable {
|
|
|
944
950
|
.side .lab {
|
|
945
951
|
display: none;
|
|
946
952
|
}
|
|
953
|
+
.side.in-burger {
|
|
954
|
+
display: none;
|
|
955
|
+
}
|
|
947
956
|
}
|
|
948
957
|
@media (prefers-reduced-motion: reduce) {
|
|
949
958
|
* {
|
|
@@ -1031,10 +1040,34 @@ table.t tr.clickable {
|
|
|
1031
1040
|
font-size: 15px;
|
|
1032
1041
|
color: var(--text);
|
|
1033
1042
|
}
|
|
1034
|
-
.navmenu a.on
|
|
1043
|
+
.navmenu a.on,
|
|
1044
|
+
|
|
1045
|
+
/* the navigation of a part of the product behind the burger: a column, with its title */
|
|
1046
|
+
.navmenu .side {
|
|
1047
|
+
display: flex;
|
|
1048
|
+
flex-direction: column;
|
|
1049
|
+
gap: 2px;
|
|
1050
|
+
min-width: 240px;
|
|
1051
|
+
max-height: calc(100vh - 96px);
|
|
1052
|
+
overflow-y: auto;
|
|
1053
|
+
padding: 0;
|
|
1054
|
+
border: 0;
|
|
1055
|
+
background: none;
|
|
1056
|
+
}
|
|
1057
|
+
.navmenu .side .lab {
|
|
1058
|
+
display: block;
|
|
1059
|
+
padding: 6px 12px 4px;
|
|
1060
|
+
}
|
|
1061
|
+
.navmenu .side a {
|
|
1062
|
+
padding: 10px 12px;
|
|
1063
|
+
font-size: 15px;
|
|
1064
|
+
color: var(--text);
|
|
1065
|
+
}
|
|
1066
|
+
.navmenu .side a.active {
|
|
1035
1067
|
background: var(--violet-soft);
|
|
1036
1068
|
color: var(--violet-text);
|
|
1037
1069
|
font-weight: 600;
|
|
1070
|
+
box-shadow: none;
|
|
1038
1071
|
}
|
|
1039
1072
|
.kpi {
|
|
1040
1073
|
display: grid;
|
|
@@ -1311,6 +1344,7 @@ select.inp.inherit {
|
|
|
1311
1344
|
/* .field of the forms has a margin under it: in the composer the field stands on the line of the buttons */
|
|
1312
1345
|
.composer .field{flex:1;display:flex;align-items:flex-end;gap:6px;min-width:0;margin-bottom:0}
|
|
1313
1346
|
.composer .field textarea{min-width:0}
|
|
1347
|
+
.composer .field.recognizing textarea{opacity:.55;cursor:progress;background:var(--surface-2)}
|
|
1314
1348
|
.composer .field.with-skill{flex-wrap:wrap}
|
|
1315
1349
|
.skill-chip{background:var(--violet-soft);color:var(--violet-text);border-color:transparent;align-self:center}
|
|
1316
1350
|
.palette{position:absolute;left:10px;right:10px;bottom:calc(100% - 4px);z-index:15;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-m);box-shadow:var(--shadow-l, 0 12px 32px rgba(0,0,0,.18));padding:6px;max-height:300px;overflow-y:auto}
|
|
@@ -1346,6 +1380,13 @@ select.inp.inherit {
|
|
|
1346
1380
|
.recbar.ending{border-color:var(--amber);background:var(--amber-soft)}
|
|
1347
1381
|
.recbar.ending .tm{color:var(--amber)}
|
|
1348
1382
|
.recbar.ending .dot,.recbar.ending .lvl i{background:var(--amber)}
|
|
1383
|
+
.voicewait{width:36px;height:36px;flex:none;display:flex;align-items:center;justify-content:center;gap:3px}
|
|
1384
|
+
.voicewait i{width:3px;height:16px;border-radius:2px;background:var(--violet);transform:scaleY(.3);animation:nb-wave 1s ease-in-out infinite}
|
|
1385
|
+
.voicewait i:nth-child(2){animation-delay:.15s}
|
|
1386
|
+
.voicewait i:nth-child(3){animation-delay:.3s}
|
|
1387
|
+
.voicewait i:nth-child(4){animation-delay:.45s}
|
|
1388
|
+
.voicewait i:nth-child(5){animation-delay:.6s}
|
|
1389
|
+
@keyframes nb-wave{0%,100%{transform:scaleY(.3)}50%{transform:scaleY(1)}}
|
|
1349
1390
|
.agentmodels{display:flex;flex-direction:column;gap:4px}
|
|
1350
1391
|
.agentmodel{display:flex;gap:10px;align-items:flex-start;width:100%;padding:8px;border:0;border-radius:var(--r-m);background:none;color:var(--text);text-align:left}
|
|
1351
1392
|
.agentmodel.on{background:var(--violet-soft)}
|
|
@@ -1358,3 +1399,37 @@ select.inp.inherit {
|
|
|
1358
1399
|
.agentmodel .badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
|
|
1359
1400
|
.agentmodel .cap{display:inline-flex;align-items:center;gap:3px;font-size:11px;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--text-2)}
|
|
1360
1401
|
.agentmodel .warn{font-size:12px;color:var(--amber);margin-top:2px}
|
|
1402
|
+
/* FTR.NAB.CHAT-0001 R34: the files of a message and their preview */
|
|
1403
|
+
.m.a .atts{justify-content:flex-start}
|
|
1404
|
+
.m .atts{align-items:flex-start;gap:8px}
|
|
1405
|
+
.att-thumb{position:relative;border:1px solid var(--border);border-radius:var(--r-m);padding:0;background:var(--surface-2);width:160px;height:120px;display:grid;place-items:center;overflow:hidden;cursor:zoom-in}
|
|
1406
|
+
.att-thumb img{width:100%;height:100%;object-fit:cover;display:block}
|
|
1407
|
+
.att-cap{position:absolute;left:0;right:0;bottom:0;padding:4px 8px;background:linear-gradient(transparent,rgba(0,0,0,.55));color:#fff;font-size:12px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
1408
|
+
.att-tile{width:120px;height:120px;border:1px solid var(--border);border-radius:var(--r-m);background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px;color:var(--text);font:inherit;text-decoration:none;cursor:zoom-in}
|
|
1409
|
+
.att-tile:hover{border-color:var(--border-strong)}
|
|
1410
|
+
.att-tile.dl{border-style:dashed;cursor:pointer}
|
|
1411
|
+
.att-ic{position:relative;width:40px;height:40px;border-radius:10px;display:grid;place-items:center;margin-bottom:4px;background:var(--surface-2);color:var(--text-2)}
|
|
1412
|
+
.att-kl{position:absolute;right:-8px;bottom:-4px;font-size:9px;font-weight:700;letter-spacing:.03em;padding:1px 4px;border-radius:4px;color:#fff;background:var(--text-2)}
|
|
1413
|
+
.att-tile .att-name{font-size:12px;max-width:100%}
|
|
1414
|
+
.att-size{font-size:11px;color:var(--muted)}
|
|
1415
|
+
.att-tile.pdf .att-ic{background:var(--red-soft);color:var(--red)}.att-tile.pdf .att-kl{background:var(--red)}
|
|
1416
|
+
.att-tile.markdown .att-ic,.att-tile.image .att-ic{background:var(--violet-soft);color:var(--violet)}.att-tile.markdown .att-kl,.att-tile.image .att-kl{background:var(--violet)}
|
|
1417
|
+
.att-tile.table .att-ic{background:var(--green-soft);color:var(--green)}.att-tile.table .att-kl{background:var(--green)}
|
|
1418
|
+
.att-tile.html .att-ic{background:var(--amber-soft);color:var(--amber)}.att-tile.html .att-kl{background:var(--amber)}
|
|
1419
|
+
.att-tile.dl .att-ic{color:var(--muted)}.att-tile.dl .att-kl{background:var(--muted)}
|
|
1420
|
+
.att-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
1421
|
+
.att-title{display:flex;align-items:baseline;gap:10px;min-width:0}
|
|
1422
|
+
.att-view{display:grid;place-items:center;min-height:200px;min-width:0}
|
|
1423
|
+
.att-img{max-width:100%;max-height:70vh;object-fit:contain;border-radius:var(--r-m)}
|
|
1424
|
+
.att-pdf{width:100%;height:70vh;border:1px solid var(--border);border-radius:var(--r-m);background:var(--surface)}
|
|
1425
|
+
.att-view.markdown{display:block}
|
|
1426
|
+
.att-md{max-height:70vh;overflow:auto;padding:4px 2px}
|
|
1427
|
+
.att-msg{color:var(--muted);display:flex;align-items:center;gap:8px}
|
|
1428
|
+
.att-view.table,.att-view.text,.att-view.html{display:block}
|
|
1429
|
+
.att-html{width:100%;height:70vh;border:1px solid var(--border);border-radius:var(--r-m);background:#fff}
|
|
1430
|
+
.att-table{max-height:70vh;overflow:auto}
|
|
1431
|
+
.att-table table{border-collapse:collapse;font-family:var(--mono);font-size:12px}
|
|
1432
|
+
.att-table th,.att-table td{border:1px solid var(--border);padding:5px 8px;text-align:left;white-space:nowrap}
|
|
1433
|
+
.att-table th{background:var(--surface-2);font-weight:600;position:sticky;top:0}
|
|
1434
|
+
.att-more{margin-top:8px;font-size:12px;color:var(--muted)}
|
|
1435
|
+
.att-text{max-height:70vh;overflow:auto;margin:0;font-family:var(--mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}
|
|
@@ -72,6 +72,9 @@ var l = {
|
|
|
72
72
|
tag: "<path d=\"M3 12V4h8l9 9-8 8z\"/><circle cx=\"7.5\" cy=\"8.5\" r=\"1.3\"/>",
|
|
73
73
|
globe: "<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18\"/>",
|
|
74
74
|
download: "<path d=\"M12 4v12M7 11l5 5 5-5M5 20h14\"/>",
|
|
75
|
+
pdf: "<path d=\"M6 3h9l4 4v14H6z\"/><path d=\"M15 3v4h4M9 12h6M9 15.5h6M9 19h3\"/>",
|
|
76
|
+
markdown: "<rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"M7 15V9l2.5 3L12 9v6M16 9v6M14 13l2 2 2-2\"/>",
|
|
77
|
+
source: "<path d=\"M6 3h9l4 4v14H6z\"/><path d=\"M15 3v4h4M10.5 11l-2 2.5 2 2.5M13.5 11l2 2.5-2 2.5\"/>",
|
|
75
78
|
pin: "<path d=\"M9 4h6l-1 6 4 4H6l4-4zM12 14v6\"/>",
|
|
76
79
|
edit: "<path d=\"M4 20h4L19 9l-4-4L4 16zM14 6l4 4\"/>",
|
|
77
80
|
image: "<rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\"/><circle cx=\"9\" cy=\"10\" r=\"2\"/><path d=\"m21 16-5-5-9 9\"/>",
|
|
@@ -306,4 +309,4 @@ function w(e, t) {
|
|
|
306
309
|
//#endregion
|
|
307
310
|
export { x as a, v as c, u as d, h as i, m as l, S as n, _ as o, C as r, w as s, b as t, d as u };
|
|
308
311
|
|
|
309
|
-
//# sourceMappingURL=ui-
|
|
312
|
+
//# sourceMappingURL=ui-ChXUXoIB.js.map
|