@epam/ai-dial-chat-shared 1.2.0-dev.12 → 1.2.0-dev.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/components/MarkdownRenderer/CodeBlock/CodeBlock.js +64 -63
  2. package/components/MarkdownRenderer/CodeBlock/CodeBlock.module.scss.js +6 -6
  3. package/components/MarkdownRenderer/MDMessageViewer.js +23 -17
  4. package/components/MarkdownRenderer/MarkdownRenderer.js +88 -90
  5. package/components/MarkdownRenderer/Math/MarkdownMathBlock.js +19 -18
  6. package/components/MarkdownRenderer/PlainTextRenderer.js +21 -0
  7. package/components/MarkdownRenderer/Table/MarkdownTable.js +74 -56
  8. package/components/MarkdownRenderer/Table/MarkdownTable.module.scss.js +11 -11
  9. package/components/MarkdownRenderer/Table/table-serialization.js +23 -3
  10. package/components/MarkdownRenderer/Table/useMarkdownTableActions/useMarkdownTableActions.js +48 -62
  11. package/components/MarkdownRenderer/ThinkingShimmer.js +14 -0
  12. package/constants/mime-types.js +49 -2
  13. package/constants/public-class-names.js +10 -0
  14. package/constants/resizable-fields.js +1 -1
  15. package/file-manager/DialFileManagerShell/DialFileManagerShell.js +160 -159
  16. package/file-manager/FileManagerAttachModal/FileManagerAttachModal.js +23 -22
  17. package/file-manager/UploadProgressModal/UploadProgressModal.js +26 -32
  18. package/file-manager.d.ts +10 -6
  19. package/hooks/useTextRefinement.js +66 -0
  20. package/index.css +2 -2
  21. package/index.d.ts +209 -10
  22. package/index.js +59 -56
  23. package/markdown.d.ts +61 -8
  24. package/markdown.js +13 -11
  25. package/package.json +3 -3
  26. package/types/attachment.js +1 -1
  27. package/utils/file-download.js +6 -6
  28. package/utils/is-skill-selection-unsupported.js +4 -0
  29. package/utils/latex.js +5 -3
  30. package/utils/merge-class.js +5 -4
  31. package/utils/mime-type.js +10 -6
package/file-manager.d.ts CHANGED
@@ -11,8 +11,8 @@ import { DialUploadFileItem } from '@epam/ai-dial-react-file-manager';
11
11
  import { FC } from 'react';
12
12
  import { FileManagerColumnKey } from '@epam/ai-dial-react-file-manager';
13
13
  import { FileManagerGridRow } from '@epam/ai-dial-react-file-manager';
14
+ import { FileTreeOptions } from '@epam/ai-dial-react-file-manager';
14
15
  import { ReactNode } from 'react';
15
- import { ToolbarOptions } from '@epam/ai-dial-react-file-manager';
16
16
 
17
17
  /** Result returned by the file-manager attach modal when the user confirms a selection. */
18
18
  declare interface AttachResult {
@@ -174,8 +174,8 @@ export declare interface DialFileManagerShellProps {
174
174
  labels: DialFileManagerShellLabels;
175
175
  /** Currently active tab. */
176
176
  activeTab: DialFileManagerTabs;
177
- /** Tab configuration for the toolbar. */
178
- tabs: ToolbarOptions['tabs'];
177
+ /** Filter chips scoping the tree and the grid, rendered above the folder tree. */
178
+ tabs: FileTreeOptions['tabs'];
179
179
  /** Called when the user switches tabs. */
180
180
  onTabChange: (tab: DialFileManagerTabs) => void;
181
181
  /** Set of currently selected file/folder virtual paths. */
@@ -190,8 +190,10 @@ export declare interface DialFileManagerShellProps {
190
190
  autoSelectUploadedItems?: boolean;
191
191
  /** MIME type filters for selectable files. */
192
192
  allowedFileTypes?: DialFileAcceptType[];
193
- /** Maximum file size in bytes for selectable files. */
193
+ /** Maximum file size in bytes for selectable files, and — reused as the ui-kit's own `maxFileSize` — the maximum size accepted for a newly-uploaded file. */
194
194
  maxSelectableFileSize?: number;
195
+ /** Pre-translated message shown by the ui-kit when a newly-selected file exceeds `maxSelectableFileSize`. Omit to leave upload-size validation unrestricted regardless of `maxSelectableFileSize`. */
196
+ oversizedUploadMessage?: string;
195
197
  /** Custom row-selectability predicate, forwarded to the grid's row selection. */
196
198
  isRowSelectable?: (node: {
197
199
  data?: FileManagerSelectableNode | null;
@@ -261,8 +263,8 @@ export declare interface FileManagerAttachModalProps {
261
263
  isAnyOperationInProgress: boolean;
262
264
  /** Currently active tab. */
263
265
  activeTab: DialFileManagerTabs;
264
- /** Tab configuration for the toolbar. */
265
- tabs: ToolbarOptions['tabs'];
266
+ /** Filter chips scoping the tree and the grid, rendered above the folder tree. */
267
+ tabs: FileTreeOptions['tabs'];
266
268
  /**
267
269
  * Called when the user switches tabs.
268
270
  * The host is responsible for resetting `selectedPaths` to an empty set.
@@ -316,6 +318,8 @@ export declare interface FileManagerAttachModalProps {
316
318
  allowedFileTypes?: DialFileAcceptType[];
317
319
  /** Whether to auto-select items immediately after upload. Defaults to `false`. */
318
320
  autoSelectUploadedItems?: boolean;
321
+ /** Pre-translated message shown by the ui-kit when a newly-selected file exceeds `maxSelectableFileSize`. Omit to leave upload-size validation unrestricted regardless of `maxSelectableFileSize`. */
322
+ oversizedUploadMessage?: string;
319
323
  }
320
324
 
321
325
  /**
@@ -0,0 +1,66 @@
1
+ import { useCallback as e, useLayoutEffect as t, useRef as n, useState as r } from "react";
2
+ //#region src/hooks/useTextRefinement.ts
3
+ var i = /* @__PURE__ */ function(e) {
4
+ return e.Idle = "idle", e.Pending = "pending", e.Success = "success", e.Error = "error", e.Restored = "restored", e.Unchanged = "unchanged", e;
5
+ }({}), a = (i) => {
6
+ let [a, o] = r("idle"), [s, c] = r(!1), l = n(i), u = n(!1), d = n({
7
+ value: i.value,
8
+ resetKey: i.resetKey,
9
+ generation: 0,
10
+ controller: void 0,
11
+ baseline: void 0,
12
+ expected: void 0
13
+ }), f = e(() => {
14
+ let e = d.current;
15
+ e.generation++, e.controller?.abort(), e.controller = void 0, e.baseline = void 0, e.expected = void 0;
16
+ }, []), p = e(() => {
17
+ f(), u.current && (o("idle"), c(!1));
18
+ }, [f]);
19
+ t(() => (u.current = !0, () => {
20
+ u.current = !1, f();
21
+ }), [f]), t(() => {
22
+ let e = l.current, t = d.current;
23
+ l.current = i;
24
+ let n = t.value !== i.value, r = n && t.expected === i.value;
25
+ t.resetKey !== i.resetKey || e.onRefine && !i.onRefine || !e.disabled && i.disabled || n && !r ? p() : r && (t.expected = void 0), t.value = i.value, t.resetKey = i.resetKey;
26
+ });
27
+ let m = e(async () => {
28
+ let e = l.current, t = d.current;
29
+ if (!u.current || !e.onRefine || e.disabled || !e.value.trim() || t.controller || t.expected !== void 0) return;
30
+ let n = new AbortController();
31
+ t.controller = n;
32
+ let r = ++t.generation, i = e.value, a = () => u.current && r === t.generation && !n.signal.aborted && l.current.value === i;
33
+ o("pending");
34
+ try {
35
+ let r = await e.onRefine(i, n.signal);
36
+ if (!a()) return;
37
+ if (typeof r != "string" || !r.trim()) throw Error("Empty refinement");
38
+ if (r === i) {
39
+ o("unchanged");
40
+ return;
41
+ }
42
+ t.baseline ??= i, t.expected = r, c(!0), o("success"), l.current.onChange(r);
43
+ } catch (e) {
44
+ if (!a()) return;
45
+ typeof e == "object" && e && "name" in e && e.name === "AbortError" ? o("idle") : o("error");
46
+ } finally {
47
+ r === t.generation && (t.controller = void 0);
48
+ }
49
+ }, []), h = e(() => {
50
+ let e = d.current;
51
+ if (!u.current || l.current.disabled || e.controller || e.baseline === void 0) return;
52
+ let t = e.baseline;
53
+ e.baseline = void 0, e.expected = t, c(!1), o("restored"), l.current.onChange(t);
54
+ }, []);
55
+ return {
56
+ state: a,
57
+ isPending: a === "pending",
58
+ canRefine: !!(i.onRefine && !i.disabled && i.value.trim() && a !== "pending"),
59
+ canUndo: s,
60
+ refine: m,
61
+ undo: h,
62
+ reset: p
63
+ };
64
+ };
65
+ //#endregion
66
+ export { i as TextRefinementState, a as useTextRefinement };
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
- ._agentIconBadge_1ger8_1{background:var(--di-icon-bg,var(--bg-layer-sunken,#eef1f7))}._badge_1ko75_1{background:var(--ia-bg,var(--bg-visual-green-1,#cde8e5))}._initials_1ko75_5{color:var(--ia-fg,var(--text-visual-green-2,#0d6e72))}._title_11w3i_1{color:var(--ih-title-color,var(--text-primary,#161b2d))}._count_11w3i_5{color:var(--ih-count-color,var(--text-secondary,#57647a))}._container_spugt_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._containerLight_spugt_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._header_spugt_10{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._languageLabel_spugt_15{color:var(--cm-code-block-language,var(--text-secondary,#57647a))}._copiedIcon_spugt_19{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_spugt_23 .token.table,._scrollContainer_spugt_23 .token.table-header-row,._scrollContainer_spugt_23 .token.table-line,._scrollContainer_spugt_23 .token.table-data-rows{display:inline}._scrollContainer_spugt_23{scrollbar-width:thin;scrollbar-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_spugt_23::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_spugt_23::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_spugt_23::-webkit-scrollbar-thumb{background-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}@keyframes _cm-shimmer_1g29w_1{0%{background-position:200%}to{background-position:-200%}}._thinking_1g29w_9{background:linear-gradient(270deg, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 0%, var(--cm-thinking-secondary,var(--text-secondary,#57647a)) 40%, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 80%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite _cm-shimmer_1g29w_1}._h6_1g29w_18{color:var(--cm-h6-text,var(--text-secondary,#57647a))}._codeInline_1g29w_22{background:var(--cm-code-inline-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-code-inline-text,var(--text-primary,#161b2d))}._secondaryBorder_1g29w_27{border-color:var(--cm-markdown-border,var(--stroke-secondary,#d1dbea))}._blockquote_1g29w_31{border-color:var(--cm-blockquote-border,var(--stroke-primary,#57647a));color:var(--cm-blockquote-text,var(--text-secondary,#57647a))}._link_1g29w_36{color:var(--cm-link-text,var(--text-accent,#1d4ed8))}._link_1g29w_36:focus-visible{outline-color:var(--cm-link-focus,var(--stroke-focus-black,#161b2d))}._scrollContainer_1f433_1{scrollbar-width:thin;scrollbar-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1f433_1::-webkit-scrollbar{height:4px}._scrollContainer_1f433_1::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1f433_1::-webkit-scrollbar-thumb{background-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._scrollContainer_1f433_1:focus-visible{outline:1px solid var(--cm-math-focus,var(--stroke-focus-black,#161b2d));outline-offset:2px}._mathContent_1f433_24{width:max-content;min-width:100%;display:block}._tableContainer_187t3_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._tableContainerLight_187t3_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._copiedIcon_187t3_10{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_187t3_14{scrollbar-width:thin;scrollbar-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_187t3_14::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_187t3_14::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_187t3_14::-webkit-scrollbar-thumb{background-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableHeaderCell_187t3_30{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-table-header-text,var(--text-secondary,#57647a))}._sectionRow_187t3_35 td{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc))}tbody ._row_187t3_39:nth-child(2n) td{background:var(--cm-table-row-zebra-bg,var(--bg-layer-base,#f5f7fa))}._rowDivider_187t3_43{border-block-end:.5px solid var(--cm-table-row-divider,var(--stroke-tertiary,#e0e6f0))}tbody ._row_187t3_39:hover td{background:var(--cm-table-row-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._tableScrollFadeEnd_187t3_53{-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}[dir=rtl] ._tableScrollFadeEnd_187t3_53{-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableScrollFadeStart_187t3_61{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}[dir=rtl] ._tableScrollFadeStart_187t3_61{-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}._tableScrollFadeBoth_187t3_69{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableHeader_1qvg8_1{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._label_12p89_1{color:var(--pes-label-color,var(--text-primary,#161b2d))}._row_1csuq_1{border-color:var(--rs-border,var(--stroke-tertiary,#e0e6f0));background:var(--rs-bg,var(--bg-layer-sunken,#eef1f7))}._versionTag_1csuq_7{border-color:var(--rs-version-tag-border,var(--stroke-tertiary,#e0e6f0))!important;background:var(--rs-version-tag-bg,var(--bg-control-accent-alpha,#2764d90f))!important;color:var(--rs-version-tag-text,var(--text-accent,#1d4ed8))!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip:auto;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-bottom-0{bottom:0}.-bottom-0\.5{bottom:-.125rem}.-left-0{left:0}.-left-0\.5{left:-.125rem}.end-0{inset-inline-end:0}.left-0{left:0}.left-full{left:100%}.right-0{right:0}.right-full{right:100%}.top-0{top:0}.top-1\/2{top:50%}.top-8{top:2rem}.top-\[-2px\]{top:-2px}.top-\[-6px\]{top:-6px}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.z-\[-1\]{z-index:-1}.z-\[2\]{z-index:2}.z-\[52\]{z-index:52}.z-\[53\]{z-index:53}.z-\[54\]{z-index:54}.z-\[55\]{z-index:55}.-m-px{margin:-1px}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.my-\[-2px\]{margin-top:-2px;margin-bottom:-2px}.-ml-6{margin-left:-1.5rem}.-mr-2{margin-right:-.5rem}.-mr-px{margin-right:-1px}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-\[2px\]{margin-bottom:2px}.me-1{margin-inline-end:.25rem}.me-1\.5{margin-inline-end:.375rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-\[26px\]{margin-left:26px}.ml-\[28px\]{margin-left:28px}.ml-\[44px\]{margin-left:44px}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.ms-auto{margin-inline-start:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.size-0{width:0;height:0}.size-10{width:2.5rem;height:2.5rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-9{width:2.25rem;height:2.25rem}.size-\[16px\]{width:16px;height:16px}.size-\[18px\]{width:18px;height:18px}.size-\[20px\]{width:20px;height:20px}.size-\[24px\]{width:24px;height:24px}.size-\[38px\]{width:38px;height:38px}.size-\[40px\]{width:40px;height:40px}.size-\[48px\]{width:48px;height:48px}.size-\[4px\]{width:4px;height:4px}.size-\[8px\]{width:8px;height:8px}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.size-px{width:1px;height:1px}.\!h-10{height:2.5rem!important}.\!h-5{height:1.25rem!important}.\!h-6{height:1.5rem!important}.\!h-9{height:2.25rem!important}.\!h-\[min\(800px\,100dvh\)\]{height:min(800px,100dvh)!important}.\!h-auto{height:auto!important}.\!h-fit{height:fit-content!important}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[120px\]{height:120px}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[24px\]{height:24px}.h-\[26px\]{height:26px}.h-\[32px\]{height:32px}.h-\[34px\]{height:34px}.h-\[38px\]{height:38px}.h-\[40px\]{height:40px}.h-\[60px\]{height:60px}.h-\[8px\]{height:8px}.h-auto{height:auto}.h-full{height:100%}.\!max-h-full{max-height:100%!important}.max-h-\[344px\]{max-height:344px}.max-h-\[352px\]{max-height:352px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.min-h-2{min-height:.5rem}.min-h-4{min-height:1rem}.min-h-\[248px\]{min-height:248px}.min-h-\[24px\]{min-height:24px}.min-h-\[25px\]{min-height:25px}.min-h-\[38px\]{min-height:38px}.min-h-\[40px\]{min-height:40px}.min-h-\[42px\]{min-height:42px}.\!w-\[400px\]{width:400px!important}.w-0{width:0}.w-0\.5{width:.125rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-2\/5{width:40%}.w-8{width:2rem}.w-\[120px\]{width:120px}.w-\[22px\]{width:22px}.w-\[248px\]{width:248px}.w-\[24px\]{width:24px}.w-\[260px\]{width:260px}.w-\[32px\]{width:32px}.w-\[36px\]{width:36px}.w-\[40px\]{width:40px}.w-\[44px\]{width:44px}.w-\[600px\]{width:600px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.min-w-0{min-width:0}.min-w-8{min-width:2rem}.min-w-\[100px\]{min-width:100px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[24px\]{min-width:24px}.min-w-\[5ch\]{min-width:5ch}.min-w-full{min-width:100%}.\!max-w-\[var\(--reference-width\)\]{max-width:var(--reference-width)!important}.max-w-96{max-width:24rem}.max-w-\[200px\]{max-width:200px}.max-w-\[280px\]{max-width:280px}.max-w-\[30\%\]{max-width:30%}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[376px\]{max-width:376px}.max-w-\[428px\]{max-width:428px}.max-w-\[45\%\]{max-width:45%}.max-w-\[51\%\]{max-width:51%}.max-w-\[600px\]{max-width:600px}.max-w-full{max-width:100%}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-auto{flex-basis:auto}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.\!cursor-default{cursor:default!important}.\!cursor-not-allowed{cursor:not-allowed!important}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.select-none{-webkit-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.resize-x{resize:horizontal}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-8{gap:2rem}.gap-\[2px\]{gap:2px}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-reverse>:not([hidden])~:not([hidden]){--tw-space-y-reverse:1}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-y-reverse>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:1}.divide-x-reverse>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}.divide-tertiary>:not([hidden])~:not([hidden]){border-color:var(--stroke-tertiary,#e0e6f0)}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.\!truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-ellipsis{text-overflow:ellipsis}.text-clip{text-overflow:clip}.\!whitespace-normal{white-space:normal!important}.whitespace-normal{white-space:normal}.\!whitespace-nowrap{white-space:nowrap!important}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded{border-radius:4px!important}.rounded{border-radius:4px}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[120px\]{border-radius:120px}.rounded-\[14px\]{border-radius:14px}.rounded-\[20px\]{border-radius:20px}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.\!rounded-r-none{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-b{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.rounded-e{border-start-end-radius:4px;border-end-end-radius:4px}.rounded-l{border-top-left-radius:4px;border-bottom-left-radius:4px}.rounded-r{border-top-right-radius:4px;border-bottom-right-radius:4px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-s{border-start-start-radius:4px;border-end-start-radius:4px}.rounded-t{border-top-left-radius:4px;border-top-right-radius:4px}.rounded-bl{border-bottom-left-radius:4px}.rounded-br{border-bottom-right-radius:4px}.rounded-ee{border-end-end-radius:4px}.rounded-es{border-end-start-radius:4px}.rounded-se{border-start-end-radius:4px}.rounded-ss{border-start-start-radius:4px}.rounded-tl{border-top-left-radius:4px}.rounded-tr{border-top-right-radius:4px}.\!border-0{border-width:0!important}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-x{border-left-width:1px;border-right-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-b-2{border-bottom-width:2px}.border-e{border-inline-end-width:1px}.border-l{border-left-width:1px}.border-l-0{border-left-width:0}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0}.border-s{border-inline-start-width:1px}.border-s-2{border-inline-start-width:2px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.\!border-error{border-color:var(--stroke-error,#ae2f2f)!important}.\!border-primary{border-color:var(--stroke-primary,#57647a)!important}.\!border-transparent{border-color:#0000!important}.border-accent{border-color:var(--stroke-accent,#1d4ed8)}.border-control-disable-primary{border-color:var(--stroke-control-disable-primary,#848e9c)}.border-default{border-color:var(--stroke-default,#b2c2dd)}.border-error{border-color:var(--stroke-error,#ae2f2f)}.border-info{border-color:var(--stroke-info,#1d4ed8)}.border-primary{border-color:var(--stroke-primary,#57647a)}.border-secondary{border-color:var(--stroke-secondary,#d1dbea)}.border-success{border-color:var(--stroke-success,#007274)}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--stroke-warning,#eec840)}.border-l-transparent{border-left-color:#0000}.border-t-accent{border-top-color:var(--stroke-accent,#1d4ed8)}.\!bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)!important}.bg-backdrop{background-color:var(--bg-backdrop,#161b2d4d)}.bg-control-accent{background-color:var(--bg-control-accent,#1d4ed8)}.bg-control-accent-alpha{background-color:var(--bg-control-accent-alpha,#2764d90f)}.bg-control-accent-alpha-hover{background-color:var(--bg-control-accent-alpha-hover,#2764d924)}.bg-control-disable-primary{background-color:var(--bg-control-disable-primary,#dce0e8)}.bg-control-disable-secondary{background-color:var(--bg-control-disable-secondary,#acb3c3)}.bg-control-error{background-color:var(--bg-control-error,#ae2f2f)}.bg-control-inverted{background-color:var(--bg-control-inverted,#57647a)}.bg-control-neutral{background-color:var(--bg-control-neutral,#fcfcfc)}.bg-control-neutral-active{background-color:var(--bg-control-neutral-active,#d1dbea)}.bg-control-neutral-default{background-color:var(--bg-control-neutral-default,#acb3c3)}.bg-error{background-color:var(--bg-error,#f3d6d8)}.bg-info{background-color:var(--bg-info,#e1eaf9)}.bg-layer-base{background-color:var(--bg-layer-base,#f5f7fa)}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.bg-success{background-color:var(--bg-success,#dbf1eb)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--bg-warning,#faf0cf)}.bg-repeat{background-repeat:repeat}.fill-control-inverted{fill:var(--bg-control-inverted,#57647a)}.stroke-primary{stroke:var(--stroke-primary,#57647a)}.object-contain{-o-object-fit:contain;object-fit:contain}.\!p-0{padding:0!important}.\!p-1{padding:.25rem!important}.\!p-\[9px\]{padding:9px!important}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-\[3px\]{padding:3px}.p-\[6px\]{padding:6px}.p-px{padding:1px}.\!py-\[1px\]{padding-top:1px!important;padding-bottom:1px!important}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.\!pl-\[7px\]{padding-left:7px!important}.pb-1{padding-bottom:.25rem}.pb-4{padding-bottom:1rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-\[7px\]{padding-left:7px}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-7{padding-right:1.75rem}.pr-\[7px\]{padding-right:7px}.ps-10{padding-inline-start:2.5rem}.ps-4{padding-inline-start:1rem}.ps-5{padding-inline-start:1.25rem}.ps-\[2em\]{padding-inline-start:2em}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.\!text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.normal-nums{font-variant-numeric:normal}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.\!text-accent{color:var(--text-accent,#1d4ed8)!important}.text-\[var\(--bg-layer-0\,_\#000000\)\]{color:var(--bg-layer-0,#000)}.text-accent{color:var(--text-accent,#1d4ed8)}.text-control-disable-primary{color:var(--text-control-disable-primary,var(--text-control-disable-alpha,#848e9c))}.text-control-inverted{color:var(--text-control-inverted,#fcfcfc)}.text-control-permanent{color:var(--text-control-permanent,#fcfcfc)}.text-error{color:var(--text-error,#ae2f2f)}.text-info{color:var(--text-info,#1d4ed8)}.text-primary{color:var(--text-primary,#161b2d)}.text-secondary{color:var(--text-secondary,#57647a)}.text-success{color:var(--text-success,#007274)}.text-tertiary{color:var(--text-tertiary,#848e9c)}.text-transparent{color:#0000}.text-violet-1{color:var(--text-visual-violet-1,#7c3aed)}.text-warning{color:var(--text-warning,#7f6300)}.text-warning-icon{color:var(--text-warning-icon,#eec840)}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 8px 44px 0 var(--shadow-lg,#2764d914);--tw-shadow-colored:0 8px 44px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 8px 24px 0 var(--shadow-md,#2764d90f);--tw-shadow-colored:0 8px 24px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 4px 0 var(--shadow-xs-1,#2764d933), 0 1px 2px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 1px 4px 0 var(--tw-shadow-color), 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-width:1px;outline-style:solid}.outline-offset-0{outline-offset:0px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[transform\,box-shadow\]{transition-property:transform,box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\]{transition-property:width;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.\[writing-mode\:tb-rl\]{writing-mode:tb-rl}.placeholder\:text-secondary::placeholder{color:var(--text-secondary,#57647a)}.before\:inline-block:before{content:var(--tw-content);display:inline-block}.before\:h-\[18px\]:before{content:var(--tw-content);height:18px}.before\:w-\[18px\]:before{content:var(--tw-content);width:18px}.before\:rounded:before{content:var(--tw-content);border-radius:4px}.before\:border:before{content:var(--tw-content);border-width:1px}.before\:content-\[\"\"\]:before{--tw-content:"";content:var(--tw-content)}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:border-accent-focus:focus-within{border-color:var(--stroke-accent-focus,#6785fb)}.hover\:-translate-y-\[3px\]:hover{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:\!border-transparent:hover{border-color:#0000!important}.hover\:border-accent:hover{border-color:var(--stroke-accent,#1d4ed8)}.hover\:border-accent-alpha:hover{border-color:var(--stroke-accent-alpha,#2764d933)}.hover\:border-error:hover{border-color:var(--stroke-error,#ae2f2f)}.hover\:bg-control-accent-alpha-hover:hover{background-color:var(--bg-control-accent-alpha-hover,#2764d924)}.hover\:bg-control-accent-hover:hover{background-color:var(--bg-control-accent-hover,#5976e9)}.hover\:bg-control-neutral-hover-strong:hover{background-color:var(--bg-control-neutral-hover-strong,#848e9c)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent:hover{color:var(--text-accent,#1d4ed8)}.hover\:text-control-accent-hover:hover{color:var(--text-control-accent-hover,var(--text-control-blue-hover,#5976e9))}.hover\:text-primary:hover{color:var(--text-primary,#161b2d)}.hover\:decoration-current:hover{text-decoration-color:currentColor}.hover\:shadow-lg:hover{--tw-shadow:0 8px 44px 0 var(--shadow-lg,#2764d914);--tw-shadow-colored:0 8px 44px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus-visible\:relative:focus-visible{position:relative}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-none:focus-visible{border-style:none}.focus-visible\:border-focus:focus-visible{border-color:var(--stroke-focus-black,var(--stroke-focus,#161b2d))}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:outline:focus-visible{outline-width:1px;outline-style:solid}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-focus:focus-visible{outline-color:var(--stroke-focus-black,var(--stroke-focus,#161b2d))}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.active\:bg-control-accent-alpha-active:active{background-color:var(--bg-control-accent-alpha-active,#2764d933)}.active\:text-control-accent-active:active{color:var(--text-control-accent-active,var(--text-control-blue-active,#6785fb))}.enabled\:text-secondary:enabled{color:var(--text-secondary,#57647a)}.enabled\:hover\:bg-control-accent-alpha-hover:hover:enabled{background-color:var(--bg-control-accent-alpha-hover,#2764d924)}.enabled\:hover\:text-control-accent-hover:hover:enabled{color:var(--text-control-accent-hover,var(--text-control-blue-hover,#5976e9))}.enabled\:active\:bg-control-accent-alpha-active:active:enabled{background-color:var(--bg-control-accent-alpha-active,#2764d933)}.enabled\:active\:text-control-accent-active:active:enabled{color:var(--text-control-accent-active,var(--text-control-blue-active,#6785fb))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-control-disable-primary:disabled{color:var(--text-control-disable-primary,var(--text-control-disable-alpha,#848e9c))}.disabled\:opacity-75:disabled{opacity:.75}.disabled\:hover\:cursor-default:hover:disabled{cursor:default}.group\/grid-row:hover .group-hover\/grid-row\:pointer-events-auto{pointer-events:auto}.group\/item:hover .group-hover\/item\:visible,.group:hover .group-hover\:visible{visibility:visible}.group\/grid-row:hover .group-hover\/grid-row\:bg-control-accent-alpha-hover,.group\/item:hover .group-hover\/item\:bg-control-accent-alpha-hover{background-color:var(--bg-control-accent-alpha-hover,#2764d924)}.group:hover .group-hover\:text-primary{color:var(--text-primary,#161b2d)}.group\/grid-row:hover .group-hover\/grid-row\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.peer:focus-visible~.peer-focus-visible\:outline{outline-width:1px;outline-style:solid}.peer:focus-visible~.peer-focus-visible\:outline-offset-2{outline-offset:2px}.peer:focus-visible~.peer-focus-visible\:outline-focus{outline-color:var(--stroke-focus-black,var(--stroke-focus,#161b2d))}.has-\[\[data-menu-item-row\]\:focus-visible\]\:outline:has([data-menu-item-row]:focus-visible){outline-width:1px;outline-style:solid}.has-\[\[data-menu-item-row\]\:focus-visible\]\:outline-focus:has([data-menu-item-row]:focus-visible){outline-color:var(--stroke-focus-black,var(--stroke-focus,#161b2d))}.aria-expanded\:bg-control-accent-alpha-hover[aria-expanded=true]{background-color:var(--bg-control-accent-alpha-hover,#2764d924)}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}.motion-reduce\:hover\:translate-y-0:hover{--tw-translate-y:0px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}@media (width>=640px){.sm\:inline{display:inline}}@media (width>=768px){.md\:\!h-\[800px\]{height:800px!important}.md\:h-auto{height:auto}.md\:min-h-\[266px\]{min-height:266px}.md\:max-w-\[1200px\]{max-width:1200px}.md\:max-w-\[400px\]{max-width:400px}.md\:max-w-\[800px\]{max-width:800px}.md\:p-4{padding:1rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (width<=1279px){.mobile\:\!w-full{width:100%!important}}@media (width>=1280px){.desktop\:\!max-h-\[693px\]{max-height:693px!important}.desktop\:p-4{padding:1rem}}.rtl\:scale-x-\[-1\]:where([dir=rtl],[dir=rtl] *){--tw-scale-x:-1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>div\]\:\!border-0>div{border-width:0!important}.\[\&_\.w-md-editor\]\:max-h-\[var\(--resizable-field-max-height\,70vh\)\] .w-md-editor{max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}.\[\&_\.wmde-markdown_ul\]\:list-disc .wmde-markdown ul{list-style-type:disc}.\[\&_\.wmde-markdown_ul_ul\]\:list-\[circle\] .wmde-markdown ul ul{list-style-type:circle}.\[\&_\.wmde-markdown_ul_ul_ul\]\:list-\[square\] .wmde-markdown ul ul ul{list-style-type:square}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}
2
- /*$vite$:1*/
1
+ ._agentIconBadge_1ger8_1{background:var(--di-icon-bg,var(--bg-layer-sunken,#eef1f7))}._badge_1ko75_1{background:var(--ia-bg,var(--bg-visual-green-1,#cde8e5))}._initials_1ko75_5{color:var(--ia-fg,var(--text-visual-green-2,#0d6e72))}._title_11w3i_1{color:var(--ih-title-color,var(--text-primary,#161b2d))}._count_11w3i_5{color:var(--ih-count-color,var(--text-secondary,#57647a))}._container_sqe5k_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._containerLight_sqe5k_6{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc))}._header_sqe5k_10{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._languageLabel_sqe5k_15{color:var(--cm-code-block-language,var(--text-secondary,#57647a))}._copiedIcon_sqe5k_19{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_sqe5k_23 .token.table,._scrollContainer_sqe5k_23 .token.table-header-row,._scrollContainer_sqe5k_23 .token.table-line,._scrollContainer_sqe5k_23 .token.table-data-rows{display:inline}._scrollContainer_sqe5k_23{scrollbar-width:thin;scrollbar-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_sqe5k_23::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_sqe5k_23::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_sqe5k_23::-webkit-scrollbar-thumb{background-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}@keyframes _cm-shimmer_1g29w_1{0%{background-position:200%}to{background-position:-200%}}._thinking_1g29w_9{background:linear-gradient(270deg, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 0%, var(--cm-thinking-secondary,var(--text-secondary,#57647a)) 40%, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 80%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite _cm-shimmer_1g29w_1}._h6_1g29w_18{color:var(--cm-h6-text,var(--text-secondary,#57647a))}._codeInline_1g29w_22{background:var(--cm-code-inline-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-code-inline-text,var(--text-primary,#161b2d))}._secondaryBorder_1g29w_27{border-color:var(--cm-markdown-border,var(--stroke-secondary,#d1dbea))}._blockquote_1g29w_31{border-color:var(--cm-blockquote-border,var(--stroke-primary,#57647a));color:var(--cm-blockquote-text,var(--text-secondary,#57647a))}._link_1g29w_36{color:var(--cm-link-text,var(--text-accent,#1d4ed8))}._link_1g29w_36:focus-visible{outline-color:var(--cm-link-focus,var(--stroke-focus-black,#161b2d))}._scrollContainer_1f433_1{scrollbar-width:thin;scrollbar-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1f433_1::-webkit-scrollbar{height:4px}._scrollContainer_1f433_1::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1f433_1::-webkit-scrollbar-thumb{background-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._scrollContainer_1f433_1:focus-visible{outline:1px solid var(--cm-math-focus,var(--stroke-focus-black,#161b2d));outline-offset:2px}._mathContent_1f433_24{width:max-content;min-width:100%;display:block}._tableContainer_1fwnj_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._tableContainerLight_1fwnj_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._copiedIcon_1fwnj_10{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_1fwnj_14{scrollbar-width:thin;scrollbar-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_1fwnj_14::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_1fwnj_14::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_1fwnj_14::-webkit-scrollbar-thumb{background-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableHeaderCell_1fwnj_30{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));height:3rem;color:var(--cm-table-header-text,var(--text-secondary,#57647a))}._sectionRow_1fwnj_37 td{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc))}._rowDivider_1fwnj_41{border-block-end:.5px solid var(--cm-table-row-divider,var(--stroke-tertiary,#e0e6f0))}tbody ._row_1fwnj_41:hover td{background:var(--cm-table-row-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._tableScrollFadeEnd_1fwnj_51{-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}[dir=rtl] ._tableScrollFadeEnd_1fwnj_51{-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableScrollFadeStart_1fwnj_59{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}[dir=rtl] ._tableScrollFadeStart_1fwnj_59{-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}._tableScrollFadeBoth_1fwnj_67{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableHeader_1qvg8_1{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._label_12p89_1{color:var(--pes-label-color,var(--text-primary,#161b2d))}._row_1csuq_1{border-color:var(--rs-border,var(--stroke-tertiary,#e0e6f0));background:var(--rs-bg,var(--bg-layer-sunken,#eef1f7))}._versionTag_1csuq_7{border-color:var(--rs-version-tag-border,var(--stroke-tertiary,#e0e6f0))!important;background:var(--rs-version-tag-bg,var(--bg-control-accent-alpha,#2764d90f))!important;color:var(--rs-version-tag-text,var(--text-accent,#1d4ed8))!important}
2
+ /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.end-0{inset-inline-end:0}.end-2{inset-inline-end:.5rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.z-10{z-index:10}.z-\[2\]{z-index:2}.z-\[52\]{z-index:52}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.me-1{margin-inline-end:.25rem}.me-1\.5{margin-inline-end:.375rem}.ms-auto{margin-inline-start:auto}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-full{height:100%;width:100%}.\!h-\[min\(800px\2c 100dvh\)\]{height:min(800px,100dvh)!important}.\!h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-0{height:0}.h-\[24px\]{height:24px}.h-full{height:100%}.\!max-h-full{max-height:100%!important}.max-h-\[344px\]{max-height:344px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.\!w-\[400px\]{width:400px!important}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:4px}.rounded-2xl{border-radius:1rem}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-s-2{border-inline-start-width:2px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.\!bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)!important}.bg-backdrop{background-color:var(--bg-backdrop,#161b2d4d)}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-\[7px\]{padding-bottom:7px;padding-top:7px}.ps-4{padding-inline-start:1rem}.ps-\[2em\]{padding-inline-start:2em}.pt-1{padding-top:.25rem}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.uppercase{text-transform:uppercase}.italic{font-style:italic}.text-secondary{color:var(--text-secondary,#57647a)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-chat-button{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--shadow-xs-1,#2764d933),0 2px 6px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 2px 12px 0 var(--tw-shadow-color),0 2px 6px 0 var(--tw-shadow-color)}.shadow-xs{--tw-shadow:0 1px 4px 0 var(--shadow-xs-1,#2764d933),0 1px 2px 0 var(--shadow-xs-2,#161b2d08);--tw-shadow-colored:0 1px 4px 0 var(--tw-shadow-color),0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid;outline-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\[overflow\:clip\]{overflow:clip}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}.hover\:decoration-current:hover{text-decoration-color:currentColor}.focus-visible\:outline:focus-visible{outline-style:solid;outline-width:1px}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.group\/table:hover .group-hover\/table\:opacity-100{opacity:1}@media (max-width:1279px){.mobile\:\!w-full{width:100%!important}}@media (min-width:1280px){.desktop\:\!max-h-\[693px\]{max-height:693px!important}.desktop\:p-4{padding:1rem}}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\2c 70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}.\[\&_\.wmde-markdown_ul\]\:list-disc .wmde-markdown ul{list-style-type:disc}.\[\&_\.wmde-markdown_ul_ul\]\:list-\[circle\] .wmde-markdown ul ul{list-style-type:circle}.\[\&_\.wmde-markdown_ul_ul_ul\]\:list-\[square\] .wmde-markdown ul ul ul{list-style-type:square}
package/index.d.ts CHANGED
@@ -70,6 +70,53 @@ export declare interface AnnotationTarget {
70
70
  selector?: AnnotationSelector;
71
71
  }
72
72
 
73
+ /**
74
+ * A single application → grouped visualizer mapping from the
75
+ * `APPLICATION_VISUALIZERS` registry. Field semantics are fixed by
76
+ * already-deployed visualizer applications and operator configurations
77
+ * carried over from legacy Chat 0.x, which is why `contentType` is optional
78
+ * here while `CustomVisualizer.contentType` is required.
79
+ */
80
+ export declare interface ApplicationVisualizer {
81
+ /**
82
+ * The postMessage protocol namespace, NOT a display label. Every message
83
+ * exchanged with the iframe is prefixed `${title}/…`, and the iframe-side
84
+ * visualizer application must be constructed with this identical string
85
+ * as its `appName`. A mismatch is a silent failure — the iframe loads but
86
+ * never receives data. Also used as the inline frame's header text.
87
+ */
88
+ title: string;
89
+ /** Human-readable description of the visualizer. Accepted for operator-configuration parity; not consumed by host logic. */
90
+ description?: string;
91
+ /** Icon URL or identifier for the visualizer. Accepted for operator-configuration parity; not consumed by host logic. */
92
+ icon?: string;
93
+ /**
94
+ * Comma-separated list of MIME types this entry claims (e.g.
95
+ * `'application/vnd.plotly.v1+json'` or
96
+ * `'application/vnd.plotly.v1+json, application/vnd.vega.v5+json'`).
97
+ * Stored verbatim; splitting happens at lookup time. When omitted, the
98
+ * entry claims every attachment that carries a URL.
99
+ */
100
+ contentType?: string;
101
+ /** Absolute HTTP(S) URL of the visualizer iframe. */
102
+ url: string;
103
+ /** Milliseconds to wait for a `send()` request's `/RESPONSE` before rejecting. Defaults to `10000`. Does NOT bound the initial handshake. */
104
+ requestTimeout?: number;
105
+ /** Suggested initial width of the visualizer surface in pixels. Forwarded as-is in `CustomVisualizerDataLayout`. */
106
+ width?: number;
107
+ /** Suggested initial height of the visualizer surface in pixels. Forwarded as-is in `CustomVisualizerDataLayout`, and used by the host to size the inline frame. */
108
+ height?: number;
109
+ /** Suggested height on mobile viewports in pixels. Forwarded as-is in `CustomVisualizerDataLayout`, and used by the host to size the inline frame on mobile. */
110
+ mobileHeight?: number;
111
+ /** Whether the host should pass auth info to the visualizer. Accepted for operator-configuration parity; inert, because 1.0 auth is server-side and the browser holds no access token. */
112
+ passAuthInfo?: boolean;
113
+ /** Whether the host should pass an explicit access token. Accepted for operator-configuration parity; inert, because 1.0 auth is server-side and the browser holds no access token. */
114
+ passExplicitToken?: boolean;
115
+ }
116
+
117
+ /** The `APPLICATION_VISUALIZERS` registry: application id → grouped visualizer entry. */
118
+ export declare type ApplicationVisualizerRegistry = Record<string, ApplicationVisualizer>;
119
+
73
120
  /** Attachment selected locally by the user before it is sent to the backend. */
74
121
  export declare interface Attachment extends DisplayAttachment {
75
122
  /** The underlying browser `File` object selected by the user. */
@@ -93,7 +140,9 @@ export declare enum AttachmentErrorReason {
93
140
  /** Upload failed because the device was offline. */
94
141
  Network = "network",
95
142
  /** File MIME type is not in the deployment's inputAttachmentTypes list. */
96
- UnsupportedType = "unsupported-type"
143
+ UnsupportedType = "unsupported-type",
144
+ /** File size exceeds the configured maximum attachment size. */
145
+ FileTooLarge = "file-too-large"
97
146
  }
98
147
 
99
148
  /** A file attachment referenced by a citation — same shape as `MessageAttachment` but scoped to annotations. */
@@ -174,6 +223,19 @@ export declare enum CatalogEntityType {
174
223
  Prompt = "PROMPT"
175
224
  }
176
225
 
226
+ export declare const CHAT_SHARED_CLASS: {
227
+ /** The bordered container of a fenced code block. */
228
+ readonly codeBlock: "dial-chat-shared-code-block";
229
+ /** The code block's sticky header, holding the language label and actions. */
230
+ readonly codeBlockHeader: "dial-chat-shared-code-block-header";
231
+ /** The bordered container of a Markdown table. */
232
+ readonly table: "dial-chat-shared-table";
233
+ /** The scrolling box around a Markdown table, which owns its overflow. */
234
+ readonly tableScroll: "dial-chat-shared-table-scroll";
235
+ /** The scrolling box around a display-math block. */
236
+ readonly mathBlock: "dial-chat-shared-math-block";
237
+ };
238
+
177
239
  /** Color theme for syntax highlighting. */
178
240
  export declare enum CodeBlockTheme {
179
241
  /** Dark syntax-highlighting theme. */
@@ -276,6 +338,8 @@ export declare interface ConversationTransferJob {
276
338
  * {@link ConversationTransferJobStatus.Warning}.
277
339
  */
278
340
  warningCode?: ConversationTransferWarningCode;
341
+ /** Untranslated names of skipped attachments, when available for this warning. */
342
+ warningNames?: string[];
279
343
  }
280
344
 
281
345
  /** Lifecycle status of a queued export/import job. */
@@ -1176,6 +1240,9 @@ export declare const generateUUID: () => string;
1176
1240
  /** Classifies a MIME type into an `AttachmentType` by prefix (`image/*` / `audio/*`), defaulting to `File`. */
1177
1241
  export declare const getAttachmentTypeFromMime: (mimeType: string | undefined) => AttachmentType;
1178
1242
 
1243
+ /** Lowercases a MIME type and strips its parameters, e.g. `'Application/JSON; charset=utf-8'` -> `'application/json'`. */
1244
+ export declare const getBaseMimeType: (mimeType: string) => string;
1245
+
1179
1246
  /** Returns the file extension (without a leading dot) for a fenced-code-block language identifier, defaulting to `txt`. */
1180
1247
  export declare const getFileExtensionForLanguage: (language: string) => string;
1181
1248
 
@@ -1192,6 +1259,24 @@ export declare const getParentFolderPath: (path: string) => string;
1192
1259
  /** Returns the UTF-8 byte length of `str`. */
1193
1260
  export declare const getUtf8ByteLength: (str: string) => number;
1194
1261
 
1262
+ /** A single attachment handed to a grouped visualizer inside `SEND_GROUPED_VISUALIZE_DATA`. */
1263
+ export declare interface GroupedAttachmentItem {
1264
+ /** Absolute URL of the attachment, resolved by the host before sending. */
1265
+ url: string;
1266
+ /** The attachment's own MIME type. */
1267
+ mimeType: string;
1268
+ /** Presentation layout plus the opaque per-attachment payload. */
1269
+ visualizerData: CustomVisualizerData;
1270
+ }
1271
+
1272
+ /** Payload of a `SEND_GROUPED_VISUALIZE_DATA` request: every claimed attachment plus the shared presentation layout. */
1273
+ export declare interface GroupedAttachmentsData {
1274
+ /** One item per claimed attachment, in the message's attachment order. */
1275
+ attachments: GroupedAttachmentItem[];
1276
+ /** Presentation layout hints shared by every item. */
1277
+ layout: CustomVisualizerDataLayout;
1278
+ }
1279
+
1195
1280
  /** Minimal hast shapes this plugin reads and writes. */
1196
1281
  declare interface HastNode {
1197
1282
  type: string;
@@ -1245,6 +1330,9 @@ export declare const isAudioTranscriptionSupported: (types?: string[]) => boolea
1245
1330
  /** Returns true when any path segment starts with a dot (hidden file or folder). */
1246
1331
  export declare const isHiddenPath: (path: string) => boolean;
1247
1332
 
1333
+ /** Whether a selected skill lacks explicitly confirmed support. */
1334
+ export declare const isSkillSelectionUnsupported: (skillUrl: string | null | undefined, isSkillsSupported: boolean | undefined) => boolean;
1335
+
1248
1336
  /** Returns `true` when `msg` is a `StatusMessage`. */
1249
1337
  export declare const isStatusMessage: (msg: Message | StatusMessage) => msg is StatusMessage;
1250
1338
 
@@ -1285,7 +1373,7 @@ export declare interface ItemHeaderProps {
1285
1373
  shouldTruncateTitle?: boolean;
1286
1374
  }
1287
1375
 
1288
- export declare const MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME = "[&_.w-md-editor]:max-h-[var(--resizable-field-max-height,70vh)]";
1376
+ export declare const MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME = "[&_.w-md-editor:not(.w-md-editor-fullscreen)]:max-h-[var(--resizable-field-max-height,70vh)]";
1289
1377
 
1290
1378
  export declare const MARKDOWN_EDITOR_PREVIEW_LIST_CLASS_NAME = "[&_.wmde-markdown>ol]:list-decimal [&_.wmde-markdown_ul]:list-disc [&_.wmde-markdown_ul_ul]:list-[circle] [&_.wmde-markdown_ul_ul_ul]:list-[square]";
1291
1379
 
@@ -1487,9 +1575,7 @@ export declare interface MarkdownRendererProps {
1487
1575
  export declare const MarkdownTable: FC<MarkdownTableProps>;
1488
1576
 
1489
1577
  export declare interface MarkdownTableActionLabels {
1490
- copyCsvLabel?: string;
1491
- copyTxtLabel?: string;
1492
- copyMarkdownLabel?: string;
1578
+ copyLabel?: string;
1493
1579
  copiedLabel?: string;
1494
1580
  downloadCsvLabel?: string;
1495
1581
  openInCanvasLabel?: string;
@@ -1515,19 +1601,16 @@ export declare interface MarkdownTableColors {
1515
1601
  fade?: string;
1516
1602
  /** Divider color between rows. Defaults to `--stroke-tertiary`. */
1517
1603
  rowDivider?: string;
1518
- /** Background of even-indexed body rows. Defaults to `--bg-layer-base`. */
1519
- rowZebraBackground?: string;
1520
1604
  /** Background of a body row on hover. Defaults to `--bg-control-accent-alpha-hover`. */
1521
1605
  rowHoverBackground?: string;
1522
1606
  }
1523
1607
 
1524
1608
  export declare enum MarkdownTableCopyFormat {
1525
1609
  Csv = "csv",
1526
- Txt = "txt",
1527
1610
  Markdown = "markdown"
1528
1611
  }
1529
1612
 
1530
- /** A table header action rendered as an icon button. */
1613
+ /** A table action rendered as an icon button. */
1531
1614
  export declare interface MarkdownTableHeaderAction {
1532
1615
  /** Stable accessible name and tooltip text. */
1533
1616
  label: string;
@@ -1578,13 +1661,20 @@ export declare interface MarkdownWithPlaceholdersProps {
1578
1661
  headingClassName?: string;
1579
1662
  }
1580
1663
 
1581
- /** Renders assistant message content as formatted markdown. */
1664
+ /** Renders assistant message content as formatted markdown, or as escaped plain text when `isPlainText` is set. */
1582
1665
  export declare const MDMessageViewer: FC<MDMessageViewerProps>;
1583
1666
 
1584
1667
  /** Props for the {@link MDMessageViewer} markdown renderer. */
1585
1668
  declare interface MDMessageViewerProps {
1586
1669
  /** Raw markdown string to render. */
1587
1670
  content: string;
1671
+ /**
1672
+ * Renders `content` verbatim as escaped plain text instead of running the
1673
+ * Markdown pipeline — the conversation's `plain_text` response format.
1674
+ * Markdown-only props (`components`, `urlTransform`, the code-block and
1675
+ * table labels) do not apply while it is set. Defaults to `false`.
1676
+ */
1677
+ isPlainText?: boolean;
1588
1678
  /** Enables gradual reveal for appended streaming content. */
1589
1679
  isStreaming?: boolean;
1590
1680
  /**
@@ -1753,6 +1843,21 @@ export declare interface MessageState {
1753
1843
  tool_execution_history?: ToolExecutionHistoryMessage[];
1754
1844
  }
1755
1845
 
1846
+ /**
1847
+ * Maps non-canonical MIME type spellings to the canonical type they denote.
1848
+ *
1849
+ * Deployments declare their `inputAttachmentTypes` by hand, while DIAL Core
1850
+ * stores the content type a browser or an upload client reported, so the two
1851
+ * sides routinely disagree on which of several equivalent spellings to use for
1852
+ * the same format (`text/json` vs `application/json`). Resolving both through
1853
+ * this map before comparing them keeps a declared type matching the files it
1854
+ * is meant to describe.
1855
+ *
1856
+ * Only aliases for one and the same format belong here — never a pair of
1857
+ * distinct formats that happen to share an extension.
1858
+ */
1859
+ export declare const MIME_TYPE_ALIASES: Record<string, string>;
1860
+
1756
1861
  /** MIME type prefix shared by all audio content types. */
1757
1862
  export declare const MIME_TYPE_AUDIO_PREFIX = "audio/";
1758
1863
 
@@ -1822,6 +1927,14 @@ export declare const MOBILE_MAX_WIDTH_PX: number;
1822
1927
  /** `matchMedia` query matching the mobile/tablet band (up to 1279px). */
1823
1928
  export declare const MOBILE_MEDIA_QUERY = "(max-width: 1279px)";
1824
1929
 
1930
+ /**
1931
+ * Returns the canonical spelling of a MIME type: parameters stripped, lowercased,
1932
+ * and known aliases resolved through `MIME_TYPE_ALIASES` (`'text/json'` ->
1933
+ * `'application/json'`). Wildcards and unrecognized types are returned unchanged
1934
+ * apart from that normalization.
1935
+ */
1936
+ export declare const normalizeMimeType: (mimeType: string) => string;
1937
+
1825
1938
  /**
1826
1939
  * Repairs persisted `html_tag` annotations created by older normalizers that
1827
1940
  * defaulted every non-HTML source to PDF. An explicit, recognized file
@@ -1917,6 +2030,44 @@ export declare interface PdfBBoxSelector {
1917
2030
  /** Returns a deterministic colour-pair for the given display name. */
1918
2031
  export declare const pickAvatarColor: (name: string) => AvatarColorEntry;
1919
2032
 
2033
+ /**
2034
+ * Renders message text as plain text: no Markdown pipeline, no raw HTML, no
2035
+ * syntax highlighting. The text is a React text child, so it is escaped by
2036
+ * construction — a table, a heading, or `**bold**` reaches the reader exactly
2037
+ * as the model emitted it, which is what a conversation's `plain_text`
2038
+ * response format promises.
2039
+ *
2040
+ * Lives beside {@link MarkdownRenderer} because it is the other half of the
2041
+ * same choice: both render an assistant message body, and both are selected
2042
+ * by `MDMessageViewer` from the conversation's response format.
2043
+ */
2044
+ export declare const PlainTextRenderer: FC<PlainTextRendererProps>;
2045
+
2046
+ /** Props for {@link PlainTextRenderer}. */
2047
+ export declare interface PlainTextRendererProps {
2048
+ /** Message text. Rendered verbatim — never parsed as Markdown or HTML. */
2049
+ content: string;
2050
+ /** Classes applied to the renderer root. */
2051
+ containerClassName?: string;
2052
+ /** When true, appended content is revealed gradually for smoother streaming updates. */
2053
+ isStreaming?: boolean;
2054
+ /** Reveal speed used while `isStreaming` is true. Defaults to 120 characters per second. */
2055
+ streamCharactersPerSecond?: number;
2056
+ /**
2057
+ * Typography classes. Only `p` is read — the single paragraph the renderer
2058
+ * emits — so the same object a Markdown message is styled with keeps both
2059
+ * formats on one type scale.
2060
+ */
2061
+ classNames?: Pick<MarkdownRendererClassNames, 'p'>;
2062
+ /**
2063
+ * Label shown with a shimmer animation while `isStreaming` is true and no
2064
+ * content has arrived yet. Defaults to `'Thinking'`.
2065
+ */
2066
+ thinkingLabel?: string;
2067
+ /** Color overrides applied as CSS custom properties. */
2068
+ colors?: Pick<MarkdownRendererColors, 'thinkingPrimary' | 'thinkingSecondary'>;
2069
+ }
2070
+
1920
2071
  /**
1921
2072
  * Selector that targets a character range inside a single shape on one PPTX
1922
2073
  * slide. Confirmed against captured DIAL Core responses: unlike
@@ -2265,6 +2416,37 @@ export declare interface TextCharacterRangeSelector {
2265
2416
  end: number;
2266
2417
  }
2267
2418
 
2419
+ /** Asynchronous rewriting callback supplied by the consuming host. */
2420
+ export declare type TextRefinementCallback = (value: string, signal: AbortSignal) => Promise<string>;
2421
+
2422
+ /** Controls and feedback for a single field. */
2423
+ export declare interface TextRefinementResult {
2424
+ /** Current field-local feedback state. */
2425
+ state: TextRefinementState;
2426
+ /** Whether this field has a request in progress. */
2427
+ isPending: boolean;
2428
+ /** Whether the current value can be refined. */
2429
+ canRefine: boolean;
2430
+ /** Whether an original baseline can be restored. */
2431
+ canUndo: boolean;
2432
+ /** Refines the latest committed value; duplicate activation is ignored. */
2433
+ refine: () => Promise<void>;
2434
+ /** Restores the baseline from before the first successful refinement. */
2435
+ undo: () => void;
2436
+ /** Cancels work and clears feedback and Undo without modifying the value. */
2437
+ reset: () => void;
2438
+ }
2439
+
2440
+ /** Field-local refinement feedback state. */
2441
+ export declare enum TextRefinementState {
2442
+ Idle = "idle",
2443
+ Pending = "pending",
2444
+ Success = "success",
2445
+ Error = "error",
2446
+ Restored = "restored",
2447
+ Unchanged = "unchanged"
2448
+ }
2449
+
2268
2450
  /** A single selectable UI theme. */
2269
2451
  export declare interface Theme {
2270
2452
  /** Unique theme identifier (e.g. `'dark'`, `'light'`). */
@@ -2502,4 +2684,21 @@ export declare interface UserProfile {
2502
2684
  isAdmin: boolean;
2503
2685
  }
2504
2686
 
2687
+ /** Preserves an author's draft and Undo baseline across asynchronous controlled updates. */
2688
+ export declare const useTextRefinement: (options: UseTextRefinementOptions) => TextRefinementResult;
2689
+
2690
+ /** Controlled value and lifecycle inputs for one refinable field. */
2691
+ export declare interface UseTextRefinementOptions {
2692
+ /** Current controlled field value. */
2693
+ value: string;
2694
+ /** Host rewriting callback. Omission disables refinement and clears its state. */
2695
+ onRefine?: TextRefinementCallback;
2696
+ /** Publishes a successful result or the original Undo baseline. */
2697
+ onChange: (value: string) => void;
2698
+ /** Disables refinement and cancels active work when true. Defaults to false. */
2699
+ disabled?: boolean;
2700
+ /** Draft identity; changing it resets state even when text is equal. */
2701
+ resetKey?: unknown;
2702
+ }
2703
+
2505
2704
  export { }