@epam/ai-dial-chat-shared 1.2.0-dev.14 → 1.2.0-dev.142

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 (32) 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/components/TextRefinementField/TextRefinementField.js +84 -0
  13. package/constants/mime-types.js +49 -2
  14. package/constants/public-class-names.js +10 -0
  15. package/constants/resizable-fields.js +1 -1
  16. package/file-manager/DialFileManagerShell/DialFileManagerShell.js +160 -159
  17. package/file-manager/FileManagerAttachModal/FileManagerAttachModal.js +23 -22
  18. package/file-manager/UploadProgressModal/UploadProgressModal.js +26 -32
  19. package/file-manager.d.ts +10 -6
  20. package/hooks/useTextRefinement.js +66 -0
  21. package/index.css +2 -2
  22. package/index.d.ts +258 -10
  23. package/index.js +60 -56
  24. package/markdown.d.ts +61 -8
  25. package/markdown.js +13 -11
  26. package/package.json +3 -3
  27. package/types/attachment.js +1 -1
  28. package/utils/file-download.js +6 -6
  29. package/utils/is-skill-selection-unsupported.js +4 -0
  30. package/utils/latex.js +5 -3
  31. package/utils/merge-class.js +5 -4
  32. 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}.flex-wrap{flex-wrap:wrap}.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}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.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. */
@@ -222,6 +284,8 @@ export declare interface Conversation {
222
284
  assistantModelId: string;
223
285
  /** Response format used when rendering messages. */
224
286
  responseFormat?: ResponseFormat;
287
+ /** Open, feature-keyed container for conversation-level view state. This change owns only the `annotations` key; any other key is opaque and preserved as-is. */
288
+ customViewState?: Record<string, unknown>;
225
289
  }
226
290
 
227
291
  /** Metadata returned by the DIAL file/conversation listing API for a single resource node. */
@@ -276,6 +340,8 @@ export declare interface ConversationTransferJob {
276
340
  * {@link ConversationTransferJobStatus.Warning}.
277
341
  */
278
342
  warningCode?: ConversationTransferWarningCode;
343
+ /** Untranslated names of skipped attachments, when available for this warning. */
344
+ warningNames?: string[];
279
345
  }
280
346
 
281
347
  /** Lifecycle status of a queued export/import job. */
@@ -1176,6 +1242,9 @@ export declare const generateUUID: () => string;
1176
1242
  /** Classifies a MIME type into an `AttachmentType` by prefix (`image/*` / `audio/*`), defaulting to `File`. */
1177
1243
  export declare const getAttachmentTypeFromMime: (mimeType: string | undefined) => AttachmentType;
1178
1244
 
1245
+ /** Lowercases a MIME type and strips its parameters, e.g. `'Application/JSON; charset=utf-8'` -> `'application/json'`. */
1246
+ export declare const getBaseMimeType: (mimeType: string) => string;
1247
+
1179
1248
  /** Returns the file extension (without a leading dot) for a fenced-code-block language identifier, defaulting to `txt`. */
1180
1249
  export declare const getFileExtensionForLanguage: (language: string) => string;
1181
1250
 
@@ -1192,6 +1261,24 @@ export declare const getParentFolderPath: (path: string) => string;
1192
1261
  /** Returns the UTF-8 byte length of `str`. */
1193
1262
  export declare const getUtf8ByteLength: (str: string) => number;
1194
1263
 
1264
+ /** A single attachment handed to a grouped visualizer inside `SEND_GROUPED_VISUALIZE_DATA`. */
1265
+ export declare interface GroupedAttachmentItem {
1266
+ /** Absolute URL of the attachment, resolved by the host before sending. */
1267
+ url: string;
1268
+ /** The attachment's own MIME type. */
1269
+ mimeType: string;
1270
+ /** Presentation layout plus the opaque per-attachment payload. */
1271
+ visualizerData: CustomVisualizerData;
1272
+ }
1273
+
1274
+ /** Payload of a `SEND_GROUPED_VISUALIZE_DATA` request: every claimed attachment plus the shared presentation layout. */
1275
+ export declare interface GroupedAttachmentsData {
1276
+ /** One item per claimed attachment, in the message's attachment order. */
1277
+ attachments: GroupedAttachmentItem[];
1278
+ /** Presentation layout hints shared by every item. */
1279
+ layout: CustomVisualizerDataLayout;
1280
+ }
1281
+
1195
1282
  /** Minimal hast shapes this plugin reads and writes. */
1196
1283
  declare interface HastNode {
1197
1284
  type: string;
@@ -1245,6 +1332,9 @@ export declare const isAudioTranscriptionSupported: (types?: string[]) => boolea
1245
1332
  /** Returns true when any path segment starts with a dot (hidden file or folder). */
1246
1333
  export declare const isHiddenPath: (path: string) => boolean;
1247
1334
 
1335
+ /** Whether a selected skill lacks explicitly confirmed support. */
1336
+ export declare const isSkillSelectionUnsupported: (skillUrl: string | null | undefined, isSkillsSupported: boolean | undefined) => boolean;
1337
+
1248
1338
  /** Returns `true` when `msg` is a `StatusMessage`. */
1249
1339
  export declare const isStatusMessage: (msg: Message | StatusMessage) => msg is StatusMessage;
1250
1340
 
@@ -1285,7 +1375,7 @@ export declare interface ItemHeaderProps {
1285
1375
  shouldTruncateTitle?: boolean;
1286
1376
  }
1287
1377
 
1288
- export declare const MARKDOWN_EDITOR_MAX_HEIGHT_CLASS_NAME = "[&_.w-md-editor]:max-h-[var(--resizable-field-max-height,70vh)]";
1378
+ 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
1379
 
1290
1380
  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
1381
 
@@ -1487,9 +1577,7 @@ export declare interface MarkdownRendererProps {
1487
1577
  export declare const MarkdownTable: FC<MarkdownTableProps>;
1488
1578
 
1489
1579
  export declare interface MarkdownTableActionLabels {
1490
- copyCsvLabel?: string;
1491
- copyTxtLabel?: string;
1492
- copyMarkdownLabel?: string;
1580
+ copyLabel?: string;
1493
1581
  copiedLabel?: string;
1494
1582
  downloadCsvLabel?: string;
1495
1583
  openInCanvasLabel?: string;
@@ -1515,19 +1603,16 @@ export declare interface MarkdownTableColors {
1515
1603
  fade?: string;
1516
1604
  /** Divider color between rows. Defaults to `--stroke-tertiary`. */
1517
1605
  rowDivider?: string;
1518
- /** Background of even-indexed body rows. Defaults to `--bg-layer-base`. */
1519
- rowZebraBackground?: string;
1520
1606
  /** Background of a body row on hover. Defaults to `--bg-control-accent-alpha-hover`. */
1521
1607
  rowHoverBackground?: string;
1522
1608
  }
1523
1609
 
1524
1610
  export declare enum MarkdownTableCopyFormat {
1525
1611
  Csv = "csv",
1526
- Txt = "txt",
1527
1612
  Markdown = "markdown"
1528
1613
  }
1529
1614
 
1530
- /** A table header action rendered as an icon button. */
1615
+ /** A table action rendered as an icon button. */
1531
1616
  export declare interface MarkdownTableHeaderAction {
1532
1617
  /** Stable accessible name and tooltip text. */
1533
1618
  label: string;
@@ -1578,13 +1663,20 @@ export declare interface MarkdownWithPlaceholdersProps {
1578
1663
  headingClassName?: string;
1579
1664
  }
1580
1665
 
1581
- /** Renders assistant message content as formatted markdown. */
1666
+ /** Renders assistant message content as formatted markdown, or as escaped plain text when `isPlainText` is set. */
1582
1667
  export declare const MDMessageViewer: FC<MDMessageViewerProps>;
1583
1668
 
1584
1669
  /** Props for the {@link MDMessageViewer} markdown renderer. */
1585
1670
  declare interface MDMessageViewerProps {
1586
1671
  /** Raw markdown string to render. */
1587
1672
  content: string;
1673
+ /**
1674
+ * Renders `content` verbatim as escaped plain text instead of running the
1675
+ * Markdown pipeline — the conversation's `plain_text` response format.
1676
+ * Markdown-only props (`components`, `urlTransform`, the code-block and
1677
+ * table labels) do not apply while it is set. Defaults to `false`.
1678
+ */
1679
+ isPlainText?: boolean;
1588
1680
  /** Enables gradual reveal for appended streaming content. */
1589
1681
  isStreaming?: boolean;
1590
1682
  /**
@@ -1753,6 +1845,21 @@ export declare interface MessageState {
1753
1845
  tool_execution_history?: ToolExecutionHistoryMessage[];
1754
1846
  }
1755
1847
 
1848
+ /**
1849
+ * Maps non-canonical MIME type spellings to the canonical type they denote.
1850
+ *
1851
+ * Deployments declare their `inputAttachmentTypes` by hand, while DIAL Core
1852
+ * stores the content type a browser or an upload client reported, so the two
1853
+ * sides routinely disagree on which of several equivalent spellings to use for
1854
+ * the same format (`text/json` vs `application/json`). Resolving both through
1855
+ * this map before comparing them keeps a declared type matching the files it
1856
+ * is meant to describe.
1857
+ *
1858
+ * Only aliases for one and the same format belong here — never a pair of
1859
+ * distinct formats that happen to share an extension.
1860
+ */
1861
+ export declare const MIME_TYPE_ALIASES: Record<string, string>;
1862
+
1756
1863
  /** MIME type prefix shared by all audio content types. */
1757
1864
  export declare const MIME_TYPE_AUDIO_PREFIX = "audio/";
1758
1865
 
@@ -1822,6 +1929,14 @@ export declare const MOBILE_MAX_WIDTH_PX: number;
1822
1929
  /** `matchMedia` query matching the mobile/tablet band (up to 1279px). */
1823
1930
  export declare const MOBILE_MEDIA_QUERY = "(max-width: 1279px)";
1824
1931
 
1932
+ /**
1933
+ * Returns the canonical spelling of a MIME type: parameters stripped, lowercased,
1934
+ * and known aliases resolved through `MIME_TYPE_ALIASES` (`'text/json'` ->
1935
+ * `'application/json'`). Wildcards and unrecognized types are returned unchanged
1936
+ * apart from that normalization.
1937
+ */
1938
+ export declare const normalizeMimeType: (mimeType: string) => string;
1939
+
1825
1940
  /**
1826
1941
  * Repairs persisted `html_tag` annotations created by older normalizers that
1827
1942
  * defaulted every non-HTML source to PDF. An explicit, recognized file
@@ -1917,6 +2032,44 @@ export declare interface PdfBBoxSelector {
1917
2032
  /** Returns a deterministic colour-pair for the given display name. */
1918
2033
  export declare const pickAvatarColor: (name: string) => AvatarColorEntry;
1919
2034
 
2035
+ /**
2036
+ * Renders message text as plain text: no Markdown pipeline, no raw HTML, no
2037
+ * syntax highlighting. The text is a React text child, so it is escaped by
2038
+ * construction — a table, a heading, or `**bold**` reaches the reader exactly
2039
+ * as the model emitted it, which is what a conversation's `plain_text`
2040
+ * response format promises.
2041
+ *
2042
+ * Lives beside {@link MarkdownRenderer} because it is the other half of the
2043
+ * same choice: both render an assistant message body, and both are selected
2044
+ * by `MDMessageViewer` from the conversation's response format.
2045
+ */
2046
+ export declare const PlainTextRenderer: FC<PlainTextRendererProps>;
2047
+
2048
+ /** Props for {@link PlainTextRenderer}. */
2049
+ export declare interface PlainTextRendererProps {
2050
+ /** Message text. Rendered verbatim — never parsed as Markdown or HTML. */
2051
+ content: string;
2052
+ /** Classes applied to the renderer root. */
2053
+ containerClassName?: string;
2054
+ /** When true, appended content is revealed gradually for smoother streaming updates. */
2055
+ isStreaming?: boolean;
2056
+ /** Reveal speed used while `isStreaming` is true. Defaults to 120 characters per second. */
2057
+ streamCharactersPerSecond?: number;
2058
+ /**
2059
+ * Typography classes. Only `p` is read — the single paragraph the renderer
2060
+ * emits — so the same object a Markdown message is styled with keeps both
2061
+ * formats on one type scale.
2062
+ */
2063
+ classNames?: Pick<MarkdownRendererClassNames, 'p'>;
2064
+ /**
2065
+ * Label shown with a shimmer animation while `isStreaming` is true and no
2066
+ * content has arrived yet. Defaults to `'Thinking'`.
2067
+ */
2068
+ thinkingLabel?: string;
2069
+ /** Color overrides applied as CSS custom properties. */
2070
+ colors?: Pick<MarkdownRendererColors, 'thinkingPrimary' | 'thinkingSecondary'>;
2071
+ }
2072
+
1920
2073
  /**
1921
2074
  * Selector that targets a character range inside a single shape on one PPTX
1922
2075
  * slide. Confirmed against captured DIAL Core responses: unlike
@@ -2265,6 +2418,84 @@ export declare interface TextCharacterRangeSelector {
2265
2418
  end: number;
2266
2419
  }
2267
2420
 
2421
+ /** Asynchronous rewriting callback supplied by the consuming host. */
2422
+ export declare type TextRefinementCallback = (value: string, signal: AbortSignal) => Promise<string>;
2423
+
2424
+ /** Label row with Refine/Undo actions and live feedback around one refinable field. */
2425
+ export declare const TextRefinementField: FC<TextRefinementFieldProps>;
2426
+
2427
+ /** Props for `TextRefinementField`. */
2428
+ export declare interface TextRefinementFieldProps {
2429
+ /** When false, renders `children` alone — no label row, actions, or feedback. */
2430
+ isEnabled: boolean;
2431
+ /** Id of the labelled control; also the prefix for the label and error ids. */
2432
+ fieldId: string;
2433
+ /** Visible field label; names the group. */
2434
+ label: string;
2435
+ /** Class applied to the `<label>`, after the kit `Label` defaults. */
2436
+ labelClassName?: string;
2437
+ /** Marks the label as required. */
2438
+ required?: boolean;
2439
+ /** Action, status, and error copy. */
2440
+ labels?: TextRefinementLabels;
2441
+ /** The field's `useTextRefinement` result. */
2442
+ refinement: TextRefinementResult;
2443
+ /** Disables both actions. */
2444
+ disabled: boolean;
2445
+ /** Class applied to the status message and the error message. */
2446
+ feedbackClassName?: string;
2447
+ /** Class applied to the error message, after `feedbackClassName`. */
2448
+ errorClassName?: string;
2449
+ /** The refinable control, whose id must equal `fieldId`. */
2450
+ children: ReactNode;
2451
+ }
2452
+
2453
+ /** Translatable copy for `TextRefinementField`; every key has an English default. */
2454
+ export declare interface TextRefinementLabels {
2455
+ /** Refinement copy. Defaults to 'Refine with AI'. */
2456
+ refineWithAiLabel?: string;
2457
+ /** Refinement copy. Defaults to 'Undo'. */
2458
+ refineUndoLabel?: string;
2459
+ /** Refinement copy. Defaults to 'Could not refine this text. Please try again.'. */
2460
+ refineErrorLabel?: string;
2461
+ /** Refinement copy. Defaults to 'Refining text'. */
2462
+ refinePendingAriaLabel?: string;
2463
+ /** Refinement copy. Defaults to 'Text refined. Undo is available.'. */
2464
+ refineSuccessAriaLabel?: string;
2465
+ /** Refinement copy. Defaults to 'Original text restored.'. */
2466
+ refineUndoAriaLabel?: string;
2467
+ /** Refinement copy. Defaults to 'No changes were needed.'. */
2468
+ refineUnchangedAriaLabel?: string;
2469
+ }
2470
+
2471
+ /** Controls and feedback for a single field. */
2472
+ export declare interface TextRefinementResult {
2473
+ /** Current field-local feedback state. */
2474
+ state: TextRefinementState;
2475
+ /** Whether this field has a request in progress. */
2476
+ isPending: boolean;
2477
+ /** Whether the current value can be refined. */
2478
+ canRefine: boolean;
2479
+ /** Whether an original baseline can be restored. */
2480
+ canUndo: boolean;
2481
+ /** Refines the latest committed value; duplicate activation is ignored. */
2482
+ refine: () => Promise<void>;
2483
+ /** Restores the baseline from before the first successful refinement. */
2484
+ undo: () => void;
2485
+ /** Cancels work and clears feedback and Undo without modifying the value. */
2486
+ reset: () => void;
2487
+ }
2488
+
2489
+ /** Field-local refinement feedback state. */
2490
+ export declare enum TextRefinementState {
2491
+ Idle = "idle",
2492
+ Pending = "pending",
2493
+ Success = "success",
2494
+ Error = "error",
2495
+ Restored = "restored",
2496
+ Unchanged = "unchanged"
2497
+ }
2498
+
2268
2499
  /** A single selectable UI theme. */
2269
2500
  export declare interface Theme {
2270
2501
  /** Unique theme identifier (e.g. `'dark'`, `'light'`). */
@@ -2502,4 +2733,21 @@ export declare interface UserProfile {
2502
2733
  isAdmin: boolean;
2503
2734
  }
2504
2735
 
2736
+ /** Preserves an author's draft and Undo baseline across asynchronous controlled updates. */
2737
+ export declare const useTextRefinement: (options: UseTextRefinementOptions) => TextRefinementResult;
2738
+
2739
+ /** Controlled value and lifecycle inputs for one refinable field. */
2740
+ export declare interface UseTextRefinementOptions {
2741
+ /** Current controlled field value. */
2742
+ value: string;
2743
+ /** Host rewriting callback. Omission disables refinement and clears its state. */
2744
+ onRefine?: TextRefinementCallback;
2745
+ /** Publishes a successful result or the original Undo baseline. */
2746
+ onChange: (value: string) => void;
2747
+ /** Disables refinement and cancels active work when true. Defaults to false. */
2748
+ disabled?: boolean;
2749
+ /** Draft identity; changing it resets state even when text is equal. */
2750
+ resetKey?: unknown;
2751
+ }
2752
+
2505
2753
  export { }